bc-stubs 113.0.0 → 114.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 (35) hide show
  1. package/bc/NativeDeclarations/Female3DCG_Types.d.ts +3 -2
  2. package/bc/NativeDeclarations/FriendList.d.ts +1 -1
  3. package/bc/NativeDeclarations/Messages.d.ts +8 -7
  4. package/bc/NativeDeclarations/Typedef.d.ts +220 -70
  5. package/bc/Screens/Character/Appearance/Appearance.d.ts +4 -5
  6. package/bc/Screens/Character/BackgroundSelection/BackgroundSelection.d.ts +2 -3
  7. package/bc/Screens/Character/FriendList/FriendList.d.ts +2 -2
  8. package/bc/Screens/Character/InformationSheet/InformationSheet.d.ts +2 -3
  9. package/bc/Screens/Character/Login/Login.d.ts +3 -2
  10. package/bc/Screens/Character/Preference/Difficulty.d.ts +2 -2
  11. package/bc/Screens/Character/Preference/Preference.d.ts +167 -0
  12. package/bc/Screens/Character/Relog/Relog.d.ts +2 -7
  13. package/bc/Screens/MiniGame/WheelFortune/WheelFortune.d.ts +2 -3
  14. package/bc/Screens/Online/ChatBlockItem/ChatBlockItem.d.ts +2 -4
  15. package/bc/Screens/Online/ChatRoom/ChatRoom.d.ts +4 -3
  16. package/bc/Screens/Online/ChatSearch/ChatSearch.d.ts +4 -5
  17. package/bc/Screens/Room/Crafting/Crafting.d.ts +2 -2
  18. package/bc/Screens/Room/MaidQuarters/MaidQuarters.d.ts +2 -2
  19. package/bc/Screens/Room/MainHall/MainHall.d.ts +34 -4
  20. package/bc/Screens/Room/Private/Private.d.ts +2 -2
  21. package/bc/Screens/Room/Shop2/Shop2.d.ts +4 -4
  22. package/bc/Scripts/Character.d.ts +9 -2
  23. package/bc/Scripts/Common.d.ts +16 -7
  24. package/bc/Scripts/Dialog.d.ts +29 -4
  25. package/bc/Scripts/Element.d.ts +19 -39
  26. package/bc/Scripts/Inventory.d.ts +13 -15
  27. package/bc/Scripts/MiniGame.d.ts +2 -2
  28. package/bc/Scripts/Preference.d.ts +5 -8
  29. package/bc/Scripts/Reputation.d.ts +2 -2
  30. package/bc/Scripts/Server.d.ts +10 -2
  31. package/bc/Scripts/Skill.d.ts +2 -2
  32. package/bc/Scripts/Text.d.ts +2 -1
  33. package/bc/Scripts/Translation.d.ts +10 -2
  34. package/bc/Scripts/Validation.d.ts +1 -1
  35. package/package.json +1 -1
@@ -694,8 +694,10 @@ interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetComm
694
694
  * When the asset is added to a character, the member number of the character using the
695
695
  * asset will be stored along in its properties, and all subsequent modifications will
696
696
  * only be possible for that character.
697
+ *
698
+ * @deprecated Discontinued in favor of the {@link FamilyOnly}/{@link LoverOnly}/{@link OwnerOnly} trio
697
699
  */
698
- CharacterRestricted?: boolean;
700
+ CharacterRestricted?: never;
699
701
  AllowRemoveExclusive?: boolean;
700
702
 
701
703
  DynamicBeforeDraw?: boolean;
@@ -774,7 +776,6 @@ declare namespace AssetDefinition {
774
776
  AlwaysExtend?: false;
775
777
  AlwaysInteract?: false;
776
778
  ArousalZone?: never;
777
- CharacterRestricted?: false;
778
779
  CraftGroup?: never;
779
780
  CustomBlindBackground?: never;
780
781
  Difficulty?: never;
@@ -3,7 +3,7 @@ type FriendListMode = "OnlineFriends" | "Beeps" | "AllFriends";
3
3
  type FriendListSortingMode = 'None' | 'MemberName' | 'MemberNickname' | 'MemberNumber' | 'ChatRoomName' | 'RelationType';
4
4
  type FriendListSortingDirection = 'Asc' | 'Desc';
5
5
 
6
- type FriendListReturn = { Screen: string, Module: ModuleType, IsInChatRoom?: boolean, hasScrolledChat?: boolean };
6
+ type FriendListReturn<T extends ModuleType> = { Screen: ModuleScreens[T], Module: T, IsInChatRoom?: boolean, hasScrolledChat?: boolean };
7
7
 
8
8
  type FriendRawData = {
9
9
  memberNumber?: number; /* undefined for NPCs */
@@ -52,11 +52,12 @@ interface ServerAccountData extends ServerAccountImmutableData {
52
52
  /** String-based values have been deprecated as of BondageProjects/Bondage-College#2138 */
53
53
  Inventory?: string | Partial<Record<AssetGroupName, string[]>>;
54
54
  InventoryData?: string;
55
- AssetFamily?: "Female3DCG";
55
+ /** Initialized by {@link CharacterCreate} */
56
+ AssetFamily: "Female3DCG";
56
57
  Infiltration?: InfiltrationType;
57
58
  SavedColors?: HSVColor[];
58
59
  ChatSearchFilterTerms?: string;
59
- Difficulty?: { Level: number; LastChange: number };
60
+ Difficulty?: { Level: DifficultyLevel; LastChange: number };
60
61
  MapData?: ChatRoomMapData;
61
62
  PrivateCharacter?: ServerPrivateCharacterData[];
62
63
  SavedExpressions?: ({ Group: ExpressionGroupName, CurrentExpression?: ExpressionName }[] | null)[];
@@ -276,7 +277,7 @@ type ServerChatRoomSettings = Partial<ServerChatRoomData> & {
276
277
 
277
278
  //#region Requests & Responses
278
279
 
279
- type ServerLoginResponse = "InvalidNamePassword" | Partial<ServerAccountData>;
280
+ type ServerLoginResponse = "InvalidNamePassword" | ServerAccountData;
280
281
 
281
282
  type ServerLoginQueueResponse = number;
282
283
 
@@ -958,17 +959,17 @@ interface ServerCharacterArousalResponse {
958
959
 
959
960
  interface ServerCharacterItemUpdate {
960
961
  Target: number;
961
- Group: string;
962
+ Group: AssetGroupName;
962
963
  Name?: string;
963
964
  Color: string | string[];
964
965
  Difficulty: number;
965
- Property: any;
966
- Craft: any;
966
+ Property?: ItemProperties;
967
+ Craft?: CraftingItem;
967
968
  }
968
969
 
969
970
  interface ServerChatRoomSyncItemResponse {
970
971
  Source: number;
971
- Item: any;
972
+ Item: ServerCharacterItemUpdate;
972
973
  }
973
974
 
974
975
  type ServerChatRoomUpdateResponse = "RoomAlreadyExist" | "Updated" | "InvalidRoomData";
@@ -98,10 +98,18 @@ type HTMLElementScalarTagNameMap = {
98
98
  type HTMLOptions<T extends keyof HTMLElementTagNameMap> = {
99
99
  /** The elements HTML tag */
100
100
  tag: T,
101
- /** Scalar-valued attributes that will be set on the HTML element. */
102
- attributes?: Partial<HTMLElementScalarTagNameMap[T]> & Partial<Record<string, number | boolean | string>>;
103
- /** Data attributes that will be set on the HTML element (see {@link HTMLElement.dataset}). */
104
- dataAttributes?: Partial<Record<string, number | boolean | string>>;
101
+ /**
102
+ * Scalar-valued attributes that will be set on the HTML element.
103
+ *
104
+ * Note that booleans are interpretted as [boolean attributes](https://developer.mozilla.org/en-US/docs/Glossary/Boolean/HTML).
105
+ */
106
+ attributes?: Partial<Record<string, number | boolean | string>>;
107
+ /**
108
+ * Data attributes that will be set on the HTML element (see {@link HTMLElement.dataset}).
109
+ *
110
+ * Note that booleans are interpretted as [boolean attributes](https://developer.mozilla.org/en-US/docs/Glossary/Boolean/HTML).
111
+ */
112
+ dataAttributes?: Partial<Record<string, number | string | boolean>>;
105
113
  /** CSS style declarations that will be set on the HTML element (see {@link HTMLElement.style}). */
106
114
  style?: Record<string, string>;
107
115
  /** Event listeners that will be attached to the HTML element (see {@link HTMLElement.addEventListener}). */
@@ -122,10 +130,23 @@ interface HTMLElementEventMap {
122
130
  }
123
131
 
124
132
  declare namespace ElementButton {
133
+ /** An input type for representing one or more text nodes and/or **non-interactive** DOM elements (_e.g._ `<i>` or `<code>`) */
134
+ type StaticNode = null | string | Node | HTMLOptions<any> | readonly (null | undefined | string | Node | HTMLOptions<any>)[];
135
+
136
+ /** Input options for creating custom button icons */
137
+ interface CustomIcon {
138
+ /** The {@link HTMLImageElement.src} of the icon */
139
+ iconSrc: string,
140
+ /** The internal ID of the icon */
141
+ name: string,
142
+ /** The tooltip component associated with the icon */
143
+ tooltipText?: StaticNode,
144
+ }
145
+
125
146
  /** Various options that can be passed along to {@link ElementButton.Create} */
126
147
  interface Options {
127
148
  /** Optional tooltip content. If not supplied then one should manually prepend it to the tooltip later */
128
- tooltip?: null | string | Node | HTMLOptions<any> | readonly (null | string | Node | HTMLOptions<any>)[]
149
+ tooltip?: StaticNode;
129
150
  /** The position of the tooltip w.r.t. the button */
130
151
  tooltipPosition?: "left" | "right" | "top" | "bottom";
131
152
  /**
@@ -136,7 +157,7 @@ declare namespace ElementButton {
136
157
  */
137
158
  tooltipRole?: "label" | "description" | "none";
138
159
  /** A button label */
139
- label?: string;
160
+ label?: StaticNode;
140
161
  /** The position of the button label */
141
162
  labelPosition?: "top" | "center" | "bottom";
142
163
  /** A background image for the button */
@@ -146,7 +167,7 @@ declare namespace ElementButton {
146
167
  *
147
168
  * Alternatively, one can directly pass the icon's {@link HTMLImageElement.src} and its tooltip component.
148
169
  */
149
- icons?: readonly (null | InventoryIcon | { iconSrc: string, tooltipText: string | Node, name: string })[];
170
+ icons?: readonly (null | undefined | InventoryIcon | CustomIcon)[];
150
171
  /** The role of the button. All accepted values are currently special-cased in order to set role-specific event listeners and/or attributes. */
151
172
  role?: "radio" | "checkbox" | "menuitemradio" | "menuitemcheckbox";
152
173
  /** Whether to limit the default styling of the button's border and background */
@@ -299,7 +320,7 @@ type DialogSortOrder = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
299
320
 
300
321
  type DialogStruggleActionType = "ActionUse" | "ActionSwap" | "ActionRemove" | "ActionUnlock" | "ActionUnlockAndRemove" | "ActionStruggle" | "ActionEscape" | "ActionDismount";
301
322
 
302
- type CharacterType = "online" | "npc" | "simple";
323
+ type CharacterType = "player" | "online" | "npc" | "simple";
303
324
 
304
325
  type CharacterPronouns = "SheHer" | "HeHim";
305
326
 
@@ -584,7 +605,101 @@ type TitleName =
584
605
 
585
606
  type MagicSchoolHouse = "Maiestas" | "Vincula" | "Amplector" | "Corporis";
586
607
 
587
- type ModuleType = "Character" | "Cutscene" | "MiniGame" | "Online" | "Room";
608
+ type ModuleType = keyof ModuleScreens;
609
+
610
+ interface ModuleScreens {
611
+ Character:
612
+ | "Appearance"
613
+ | "BackgroundSelection"
614
+ | "Cheat"
615
+ | "Creation"
616
+ | "Disclaimer"
617
+ | "FriendList"
618
+ | "InformationSheet"
619
+ | "ItemColor"
620
+ | "Login"
621
+ | "OnlineProfile"
622
+ | "PasswordReset"
623
+ | "Player"
624
+ | "Preference"
625
+ | "Relog"
626
+ | "Title"
627
+ | "Wardrobe"
628
+ ;
629
+ Cutscene:
630
+ | "NPCCollaring"
631
+ | "NPCSlaveAuction"
632
+ | "NPCWedding"
633
+ | "PlayerCollaring"
634
+ | "PlayerMistress"
635
+ | "SarahIntro"
636
+ ;
637
+ MiniGame:
638
+ | "Chess" | "ChestLockpick"
639
+ | "ClubCard" | "ClubCardBuilder"
640
+ | "DojoStruggle"
641
+ | "GetUp"
642
+ | "HorseWalk"
643
+ | "Kidnap"
644
+ | "KinkyDungeon"
645
+ | "Lockpick"
646
+ | "MagicBattle" | "MagicPuzzle"
647
+ | "MaidCleaning" | "MaidDrinks"
648
+ | "PlayerAuction"
649
+ | "PuppyWalker"
650
+ | "RhythmGame"
651
+ | "SlaveAuction"
652
+ | "Tennis"
653
+ | "Therapy"
654
+ | "WheelFortune"
655
+ ;
656
+ Online:
657
+ | "AdvancedRule"
658
+ | "ChatAdmin" | "ChatAdminRoomCustomization" | "ChatBlockItem"
659
+ | "ChatRoom" | "ChatSearch" | "ChatSelect"
660
+ | "ForbiddenWords"
661
+ | "Game" | "GameClubCard" | "GameLARP" | "GameMagicBattle"
662
+ | "NicknameManagement"
663
+ | "WheelFortuneCustomize"
664
+ ;
665
+ Room:
666
+ | "Arcade"
667
+ | "AsylumBedroom" | "AsylumEntrance" | "AsylumGGTS" | "AsylumMeeting" | "AsylumTherapy"
668
+ | "Cafe" | "Cell" | "ClubCardLounge"
669
+ | "CollegeCafeteria" | "CollegeChess" | "CollegeDetention" | "CollegeEntrance" | "CollegeTeacher" | "CollegeTennis" | "CollegeTheater"
670
+ | "Crafting" | "DailyJob" | "Empty" | "Gambling"
671
+ | "Infiltration" | "InfiltrationPerks"
672
+ | "Introduction"
673
+ | "KidnapLeague"
674
+ | "LARP"
675
+ | "Magic" | "MagicSchoolEscape" | "MagicSchoolLaboratory"
676
+ | "MaidQuarters" | "MainHall" | "Management" | "MovieStudio" | "Nursery"
677
+ | "Pandora" | "PandoraPrison"
678
+ | "Photographic"
679
+ | "Platform" | "PlatformIntro" | "PlatformDialog" | "PlatformProfile"
680
+ | "Poker" | "Prison"
681
+ | "Private" | "PrivateBed" | "PrivateRansom"
682
+ | "Sarah"
683
+ | "Shibari"
684
+ | "Shop" | "Shop2"
685
+ | "SlaveMarket" | "Stable"
686
+ ;
687
+ }
688
+
689
+ type RoomName = ModuleScreens[ModuleType];
690
+
691
+ interface RelogDataBase<T extends ModuleType> {
692
+ Screen: ModuleScreens[T],
693
+ Module: T,
694
+ Character: Character,
695
+ ChatRoomName: string | null,
696
+ }
697
+
698
+ type _RelogDataMap<T> = T extends ModuleType ? RelogDataBase<T> : never;
699
+ type RelogData = _RelogDataMap<ModuleType>;
700
+
701
+ type _ScreenSpecifier<T extends ModuleType> = [module: T, screen: ModuleScreens[T]];
702
+ type ScreenSpecifier = _ScreenSpecifier<"Character"> | _ScreenSpecifier<"Cutscene"> | _ScreenSpecifier<"MiniGame"> | _ScreenSpecifier<"Online"> | _ScreenSpecifier<"Room">;
588
703
 
589
704
  type AssetCategory = "Medical" | "Extreme" | "Pony" | "SciFi" | "ABDL" | "Fantasy";
590
705
 
@@ -1088,7 +1203,16 @@ interface Asset {
1088
1203
  readonly DynamicGroupName: AssetGroupName;
1089
1204
  readonly DynamicActivity: (C: Character) => ActivityName | null | undefined;
1090
1205
  readonly DynamicAudio: ((C: Character) => string) | null;
1091
- readonly CharacterRestricted: boolean;
1206
+ /**
1207
+ * Whether the asset is restricted to a given character.
1208
+ *
1209
+ * When the asset is added to a character, the member number of the character using the
1210
+ * asset will be stored along in its properties, and all subsequent modifications will
1211
+ * only be possible for that character.
1212
+ *
1213
+ * @deprecated Discontinued in favor of the {@link FamilyOnly}/{@link LoverOnly}/{@link OwnerOnly} trio
1214
+ */
1215
+ readonly CharacterRestricted?: never;
1092
1216
  readonly AllowRemoveExclusive: boolean;
1093
1217
  readonly InheritColor: null | AssetGroupName;
1094
1218
  readonly DynamicBeforeDraw: boolean;
@@ -1455,15 +1579,30 @@ interface Character {
1455
1579
  /** The asset family used by the character */
1456
1580
  AssetFamily: IAssetFamily;
1457
1581
  Name: string;
1458
- Nickname?: string;
1582
+ Nickname?: string; // technically never as it's Online-only
1459
1583
  Owner: string;
1460
1584
  Lover: string;
1461
1585
  Money: number;
1462
1586
  Inventory: InventoryItem[];
1463
1587
  InventoryData?: string;
1464
1588
  Appearance: Item[];
1465
- Stage: string;
1466
- CurrentDialog: string;
1589
+ /**
1590
+ * @private
1591
+ * @see {@link Character.Stage}
1592
+ */
1593
+ _Stage: string;
1594
+ /** Set or get the current stage, performing a dialog {@link DialogMenu.Reload} if required */
1595
+ get Stage(): string;
1596
+ set Stage(value: string);
1597
+ /**
1598
+ * @private
1599
+ * @see {@link Character.CurrentDialog}
1600
+ */
1601
+ _CurrentDialog: string;
1602
+ ClickedOption: null | string;
1603
+ /** Set or get the current dialog, performing a dialog status update if required (see {@link DialogSetStatus}) */
1604
+ get CurrentDialog(): string;
1605
+ set CurrentDialog(value: string);
1467
1606
  Dialog: DialogLine[];
1468
1607
  Reputation: Reputation[];
1469
1608
  Skill: Skill[];
@@ -1539,9 +1678,9 @@ interface Character {
1539
1678
  WhiteList: number[];
1540
1679
  HeightModifier: number;
1541
1680
  MemberNumber?: number;
1542
- ItemPermission?: 0 | 1 | 2 | 3 | 4 | 5;
1543
- Ownership?: Ownership;
1544
- Lovership?: Lovership[];
1681
+ ItemPermission: 0 | 1 | 2 | 3 | 4 | 5;
1682
+ Ownership: Ownership | null;
1683
+ Lovership: Lovership[];
1545
1684
  ExpressionQueue?: ExpressionQueueItem[];
1546
1685
  CanTalk: () => boolean;
1547
1686
  CanWalk: () => boolean;
@@ -1659,31 +1798,29 @@ interface Character {
1659
1798
  HasVagina: () => boolean;
1660
1799
  IsFlatChested: () => boolean;
1661
1800
  WearingCollar: () => boolean;
1801
+
1662
1802
  // Properties created in other places
1663
- ArousalSettings?: ArousalSettingsType;
1664
- AppearanceFull?: Item[];
1803
+ ArousalSettings: ArousalSettingsType;
1804
+ AppearanceFull?: Item[]; // Private NPCs only
1665
1805
  // Online character properties
1666
1806
  Title?: TitleName;
1667
1807
  LabelColor?: HexColor;
1668
- Creation?: number;
1669
- Description?: string;
1670
- OnlineSharedSettings?: CharacterOnlineSharedSettings;
1671
- Game?: CharacterGameParameters;
1808
+ Creation?: number; // technically never as it is Online-only
1809
+ Description?: string; // technically never as it is Online-only
1810
+ OnlineSharedSettings?: CharacterOnlineSharedSettings; // technically never as it is Online-only
1811
+ Game?: CharacterGameParameters; // technically never as it is Online-only
1672
1812
  MapData?: ChatRoomMapData;
1673
1813
  BlackList: number[];
1674
1814
  RunScripts?: boolean;
1675
1815
  HasScriptedAssets?: boolean;
1676
1816
  Cage?: boolean;
1677
- Difficulty?: {
1678
- Level: number;
1679
- LastChange?: number;
1680
- };
1817
+ Difficulty?: { Level: number }; // technically never as it is Online-only
1681
1818
  ArousalZoom?: boolean;
1682
1819
  FixedImage?: string;
1683
1820
  Rule?: LogRecord[];
1684
1821
  Status?: string | null;
1685
1822
  StatusTimer?: number;
1686
- Crafting?: (null | CraftingItem)[];
1823
+ Crafting: (CraftingItem | null)[]; // technically never as it is Online-only
1687
1824
  LastMapData?: ChatRoomMapData;
1688
1825
  /**
1689
1826
  * The custom background to use for the current room
@@ -1849,35 +1986,57 @@ interface ControllerSettingsOld {
1849
1986
  ControllerDPadRight: number;
1850
1987
  }
1851
1988
 
1989
+ type DifficultyLevel =
1990
+ | 0 // Roleplay
1991
+ | 1 // Regular
1992
+ | 2 // Hardcore
1993
+ | 3 // Extreme
1994
+ ;
1995
+
1852
1996
  interface PlayerCharacter extends Character {
1997
+ // All the following are guaranteed to be set on login
1998
+ MemberNumber: number;
1999
+ Nickname: string;
2000
+ LabelColor: HexColor;
2001
+ Game: CharacterGameParameters;
2002
+ Description: string;
2003
+ Creation: number;
2004
+ Difficulty: {
2005
+ Level: DifficultyLevel;
2006
+ LastChange?: number;
2007
+ };
2008
+ Crafting: (null | CraftingItem)[];
2009
+ ItemPermission: 0 | 1 | 2 | 3 | 4 | 5;
2010
+
1853
2011
  // PreferenceInitPlayer() must be updated with defaults, when adding a new setting
1854
- ChatSettings?: ChatSettingsType;
1855
- VisualSettings?: VisualSettingsType;
1856
- AudioSettings?: AudioSettingsType;
1857
- ControllerSettings?: ControllerSettingsType;
1858
- GameplaySettings?: GameplaySettingsType;
1859
- ImmersionSettings?: ImmersionSettingsType;
2012
+ ChatSettings: ChatSettingsType;
2013
+ VisualSettings: VisualSettingsType;
2014
+ AudioSettings: AudioSettingsType;
2015
+ ControllerSettings: ControllerSettingsType;
2016
+ GameplaySettings: GameplaySettingsType;
2017
+ ImmersionSettings: ImmersionSettingsType;
1860
2018
  /** The chat room we were previous in. Used for relog room re-creation */
1861
2019
  // TODO: the fact that this is set *might* be used to also fold the "relog" enabled checks
1862
2020
  // If we have a chatroom, then we relog to it. If we don't, then the player didn't have the
1863
2021
  // setting enabled in the first place
1864
2022
  LastChatRoom?: ChatRoomSettings;
1865
- RestrictionSettings?: RestrictionSettingsType;
1866
- OnlineSettings?: PlayerOnlineSettings;
1867
- GraphicsSettings?: GraphicsSettingsType;
1868
- NotificationSettings?: NotificationSettingsType;
2023
+ RestrictionSettings: RestrictionSettingsType;
2024
+ OnlineSettings: PlayerOnlineSettings;
2025
+ GraphicsSettings: GraphicsSettingsType;
2026
+ NotificationSettings: NotificationSettingsType;
2027
+ OnlineSharedSettings: CharacterOnlineSharedSettings; // technically never as it is Online-only
1869
2028
  GhostList?: number[];
1870
- Wardrobe?: ItemBundle[][];
1871
- WardrobeCharacterNames?: string[];
2029
+ Wardrobe: ItemBundle[][];
2030
+ WardrobeCharacterNames: string[];
1872
2031
  SavedExpressions?: ({ Group: ExpressionGroupName, CurrentExpression?: ExpressionName }[] | null)[];
1873
2032
  SavedColors: HSVColor[];
1874
- FriendList?: number[];
1875
- FriendNames?: Map<number, string>;
1876
- SubmissivesList?: Set<number>;
1877
- ChatSearchFilterTerms?: string;
2033
+ FriendList: number[];
2034
+ FriendNames: Map<number, string>;
2035
+ SubmissivesList: Set<number>;
2036
+ ChatSearchFilterTerms: string;
1878
2037
  GenderSettings: GenderSettingsType;
1879
2038
  /** The list of items we got confiscated in the Prison */
1880
- ConfiscatedItems?: { Group: AssetGroupName, Name: string }[];
2039
+ ConfiscatedItems: { Group: AssetGroupName, Name: string }[];
1881
2040
  ExtensionSettings: ExtensionSettings;
1882
2041
  }
1883
2042
 
@@ -1904,20 +2063,20 @@ interface NotificationSettingsType {
1904
2063
  ChatMessage: NotificationSetting & {
1905
2064
  /** @deprecated */
1906
2065
  IncludeActions?: any;
1907
- Mention?: boolean;
1908
- Normal?: boolean;
1909
- Whisper?: boolean;
1910
- Activity?: boolean;
2066
+ Mention: boolean;
2067
+ Normal: boolean;
2068
+ Whisper: boolean;
2069
+ Activity: boolean;
1911
2070
  };
1912
2071
  /** @deprecated */
1913
2072
  ChatActions?: any;
1914
2073
  ChatJoin: NotificationSetting & {
1915
2074
  /** @deprecated */
1916
2075
  Enabled?: any;
1917
- Owner?: boolean;
1918
- Lovers?: boolean;
1919
- Friendlist?: boolean;
1920
- Subs?: boolean;
2076
+ Owner: boolean;
2077
+ Lovers: boolean;
2078
+ Friendlist: boolean;
2079
+ Subs: boolean;
1921
2080
  };
1922
2081
  Disconnect: NotificationSetting;
1923
2082
  Larp: NotificationSetting;
@@ -1927,7 +2086,6 @@ interface NotificationSettingsType {
1927
2086
  interface GraphicsSettingsType {
1928
2087
  Font: GraphicsFontName;
1929
2088
  InvertRoom: boolean;
1930
- StimulationFlashes: boolean;
1931
2089
  DoBlindFlash: boolean;
1932
2090
  AnimationQuality: number;
1933
2091
  StimulationFlash: boolean;
@@ -1992,16 +2150,6 @@ interface ChatSettingsType {
1992
2150
  ShowChatHelp: boolean;
1993
2151
  ShrinkNonDialogue: boolean;
1994
2152
  WhiteSpace: "" | "Preserve";
1995
- /** @deprecated */
1996
- AutoBanBlackList?: any;
1997
- /** @deprecated */
1998
- AutoBanGhostList?: any;
1999
- /** @deprecated */
2000
- SearchFriendsFirst?: any;
2001
- /** @deprecated */
2002
- DisableAnimations?: any;
2003
- /** @deprecated */
2004
- SearchShowsFullRooms?: any;
2005
2153
  CensoredWordsList: string;
2006
2154
  CensoredWordsLevel: number;
2007
2155
  /** Whether to preserve the chat log when switching rooms */
@@ -2031,10 +2179,10 @@ interface AudioSettingsType {
2031
2179
  }
2032
2180
 
2033
2181
  interface VisualSettingsType {
2034
- ForceFullHeight?: boolean;
2035
- UseCharacterInPreviews?: boolean;
2036
- MainHallBackground?: string;
2037
- PrivateRoomBackground?: string;
2182
+ ForceFullHeight: boolean;
2183
+ UseCharacterInPreviews: boolean;
2184
+ MainHallBackground: string;
2185
+ PrivateRoomBackground: string;
2038
2186
  }
2039
2187
 
2040
2188
  /**
@@ -2047,8 +2195,8 @@ interface PlayerOnlineSettings {
2047
2195
  DisableAnimations: boolean;
2048
2196
  SearchShowsFullRooms: boolean;
2049
2197
  SearchFriendsFirst: boolean;
2050
- SendStatus?: boolean;
2051
- ShowStatus?: boolean;
2198
+ SendStatus: boolean;
2199
+ ShowStatus: boolean;
2052
2200
  EnableAfkTimer: boolean;
2053
2201
  ShowRoomCustomization: 0 | 1 | 2 | 3; // 0 - Never, 1 - No by default, 2 - Yes by default, 3 - Always
2054
2202
  FriendListAutoRefresh: boolean;
@@ -2832,8 +2980,10 @@ interface ItemPropertiesCustom {
2832
2980
  /**
2833
2981
  * The member number of the player adding the item.
2834
2982
  * Only set if the asset is marked as {@link AssetDefinition.CharacterRestricted}.
2983
+ *
2984
+ * @deprecated Discontinued in favor of the {@link Asset.FamilyOnly}/{@link Asset.LoverOnly}/{@link Asset.OwnerOnly} trio
2835
2985
  */
2836
- ItemMemberNumber?: number;
2986
+ ItemMemberNumber?: never;
2837
2987
 
2838
2988
  //#region Lock properties
2839
2989
 
@@ -6,10 +6,10 @@
6
6
  declare function CharacterAppearanceBuildAssets(C: Character): void;
7
7
  /**
8
8
  * Makes sure the character appearance is valid from inventory and asset requirement. This function is called during the login process.
9
- * @param {Character} C - The character whose appearance is checked
9
+ * @param {PlayerCharacter} C - The character whose appearance is checked
10
10
  * @returns {void} - Nothing
11
11
  */
12
- declare function CharacterAppearanceValidate(C: Character): void;
12
+ declare function CharacterAppearanceValidate(C: PlayerCharacter): void;
13
13
  /**
14
14
  * Resets the character to it's default appearance
15
15
  * @param {Character} C - The character to redress to its default appearance
@@ -395,9 +395,8 @@ declare var CharacterAppearanceColorPickerRefreshTimer: any;
395
395
  declare var CharacterAppearanceSelection: Character | null;
396
396
  /** @type {(accept: boolean) => void} */
397
397
  declare var CharacterAppearanceResultCallback: (accept: boolean) => void;
398
- declare var CharacterAppearanceReturnRoom: string;
399
- /** @type {ModuleType} */
400
- declare var CharacterAppearanceReturnModule: ModuleType;
398
+ /** @type {ScreenSpecifier} */
399
+ declare var CharacterAppearanceReturnScreen: ScreenSpecifier;
401
400
  declare var CharacterAppearanceWardrobeOffset: number;
402
401
  declare var CharacterAppearanceWardrobeText: string;
403
402
  declare var CharacterAppearanceWardrobeName: string;
@@ -76,9 +76,8 @@ declare var BackgroundSelectionSize: number;
76
76
  declare var BackgroundSelectionOffset: number;
77
77
  /** @type {null | ((selection: string) => void)} */
78
78
  declare var BackgroundSelectionCallback: null | ((selection: string) => void);
79
- /** @type {"" | ModuleType} */
80
- declare var BackgroundSelectionPreviousModule: "" | ModuleType;
81
- declare var BackgroundSelectionPreviousScreen: string;
79
+ /** @type {ScreenSpecifier | null} */
80
+ declare var BackgroundSelectionReturnScreen: ScreenSpecifier | null;
82
81
  /** @type {{ Name: string, Description: string, Low: string }[]} */
83
82
  declare var BackgroundSelectionAll: {
84
83
  Name: string;
@@ -90,8 +90,8 @@ declare function FriendListToggleAutoRefresh(this: HTMLButtonElement): void;
90
90
  declare var FriendListBackground: string;
91
91
  /** @type {number[]} */
92
92
  declare var FriendListConfirmDelete: number[];
93
- /** @type {FriendListReturn | null} */
94
- declare var FriendListReturn: FriendListReturn | null;
93
+ /** @type {FriendListReturn<any> | null} */
94
+ declare var FriendListReturn: FriendListReturn<any> | null;
95
95
  /** @type {FriendListModes} */
96
96
  declare var FriendListMode: FriendListModes;
97
97
  declare var FriendListModeIndex: number;
@@ -29,7 +29,6 @@ declare function InformationSheetLoadCharacter(C: Character): void;
29
29
  declare var InformationSheetBackground: string;
30
30
  /** @type {null | Character | NPCCharacter} */
31
31
  declare var InformationSheetSelection: null | Character | NPCCharacter;
32
- /** @type {"" | ModuleType} */
33
- declare var InformationSheetPreviousModule: "" | ModuleType;
34
- declare var InformationSheetPreviousScreen: string;
32
+ /** @type {ScreenSpecifier | null} */
33
+ declare var InformationSheetReturnScreen: ScreenSpecifier | null;
35
34
  declare var InformationSheetSecondScreen: boolean;
@@ -18,6 +18,7 @@ declare function LoginLoad(): void;
18
18
  * @returns {void} Nothing
19
19
  */
20
20
  declare function LoginRun(): void;
21
+ declare function LoginResize(load: boolean): void;
21
22
  /**
22
23
  * Perform the inventory fixups needed.
23
24
  * @param {InventoryBundle[]} Inventory - The server-provided inventory object
@@ -110,9 +111,9 @@ declare function LoginQueue(Pos: number): void;
110
111
  declare function LoginFixOwner(): void;
111
112
  /**
112
113
  * Sets the player character info from the server data
113
- * @param {Partial<ServerAccountData>} C
114
+ * @param {ServerAccountData} C
114
115
  */
115
- declare function LoginSetupPlayer(C: Partial<ServerAccountData>): void;
116
+ declare function LoginSetupPlayer(C: ServerAccountData): void;
116
117
  /**
117
118
  * Handles player login response data
118
119
  * @param {ServerLoginResponse} C - The Login response data - this will either be the player's character data if the
@@ -8,6 +8,6 @@ declare function PreferenceSubscreenDifficultyRun(): void;
8
8
  * @returns {void} - Nothing
9
9
  */
10
10
  declare function PreferenceSubscreenDifficultyClick(): void;
11
- /** @type {null | number} */
12
- declare var PreferenceDifficultyLevel: null | number;
11
+ /** @type {null | DifficultyLevel} */
12
+ declare var PreferenceDifficultyLevel: null | DifficultyLevel;
13
13
  declare var PreferenceDifficultyAccept: boolean;