bc-stubs 131.0.0 → 132.0.0-Beta.2

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 (102) hide show
  1. package/bc/Assets/Female3DCG/Female3DCG.d.ts +4 -4
  2. package/bc/NativeDeclarations/Assets/Female3DCG/Female3DCG_Types.d.ts +37 -23
  3. package/bc/NativeDeclarations/Screens/Character/Preference/Preference.d.ts +1 -0
  4. package/bc/NativeDeclarations/Screens/Character/Wardrobe/Wardrobe.d.ts +12 -0
  5. package/bc/NativeDeclarations/Screens/MiniGame/ClubCard/ClubCard.d.ts +260 -0
  6. package/bc/NativeDeclarations/Scripts/DeclarationsStatic.d.ts +3 -0
  7. package/bc/NativeDeclarations/Scripts/Element.d.ts +1 -1
  8. package/bc/NativeDeclarations/Scripts/Messages.d.ts +23 -33
  9. package/bc/NativeDeclarations/Scripts/Typedef.d.ts +363 -339
  10. package/bc/NativeDeclarations/Scripts/lib/chessboard.d.ts +68 -0
  11. package/bc/Screens/Character/Appearance/Appearance.d.ts +43 -30
  12. package/bc/Screens/Character/FriendList/FriendList.d.ts +9 -4
  13. package/bc/Screens/Character/ItemColor/ItemColor.d.ts +4 -4
  14. package/bc/Screens/Character/Login/Login.d.ts +2 -2
  15. package/bc/Screens/Character/Preference/Graphics.d.ts +2 -0
  16. package/bc/Screens/Character/Preference/Scripts.d.ts +0 -5
  17. package/bc/Screens/Character/Preference/Visibility.d.ts +13 -13
  18. package/bc/Screens/Character/Wardrobe/Wardrobe.d.ts +394 -19
  19. package/bc/Screens/Cutscene/NPCWedding/NPCWedding.d.ts +2 -2
  20. package/bc/Screens/Cutscene/PlayerCollaring/PlayerCollaring.d.ts +4 -0
  21. package/bc/Screens/Inventory/ItemNeck/SlaveCollar/SlaveCollar.d.ts +2 -2
  22. package/bc/Screens/Inventory/ItemPelvis/ModularChastityBelt/ModularChastityBelt.d.ts +7 -7
  23. package/bc/Screens/Inventory/ItemVulva/TechnoChastityCage/TechnoChastityCage.d.ts +4 -4
  24. package/bc/Screens/MiniGame/Chess/BondageChess.d.ts +4 -4
  25. package/bc/Screens/MiniGame/Chess/chess.d.ts +10 -4
  26. package/bc/Screens/MiniGame/ClubCard/ClubCard.d.ts +115 -89
  27. package/bc/Screens/MiniGame/ClubCardBuilder/ClubCardBuilder.d.ts +2 -3
  28. package/bc/Screens/MiniGame/DojoStruggle/DojoStruggle.d.ts +1 -0
  29. package/bc/Screens/MiniGame/MagicBattle/MagicBattle.d.ts +2 -1
  30. package/bc/Screens/MiniGame/WheelFortune/WheelFortune.d.ts +4 -3
  31. package/bc/Screens/Online/ChatRoom/ChatRoom.d.ts +50 -26
  32. package/bc/Screens/Online/ChatRoom/ChatRoomMapView.d.ts +146 -27
  33. package/bc/Screens/Online/ChatRoom/Commands.d.ts +5 -1
  34. package/bc/Screens/Online/ChatSearch/ChatSearch.d.ts +4 -4
  35. package/bc/Screens/Online/ForbiddenWords/ForbiddenWords.d.ts +6 -1
  36. package/bc/Screens/Online/GameClubCard/GameClubCard.d.ts +14 -2
  37. package/bc/Screens/Online/GameLARP/GameLARP.d.ts +15 -8
  38. package/bc/Screens/Online/GameMagicBattle/GameMagicBattle.d.ts +3 -1
  39. package/bc/Screens/Room/Arcade/Arcade.d.ts +2 -1
  40. package/bc/Screens/Room/AsylumEntrance/AsylumEntrance.d.ts +12 -11
  41. package/bc/Screens/Room/AsylumGGTS/AsylumGGTS.d.ts +43 -27
  42. package/bc/Screens/Room/AsylumMeeting/AsylumMeeting.d.ts +2 -2
  43. package/bc/Screens/Room/AsylumTherapy/AsylumTherapy.d.ts +2 -1
  44. package/bc/Screens/Room/Cafe/Cafe.d.ts +4 -5
  45. package/bc/Screens/Room/Cell/Cell.d.ts +2 -2
  46. package/bc/Screens/Room/ClubCardLounge/ClubCardLounge.d.ts +4 -3
  47. package/bc/Screens/Room/CollegeCafeteria/CollegeCafeteria.d.ts +2 -2
  48. package/bc/Screens/Room/CollegeChess/CollegeChess.d.ts +6 -4
  49. package/bc/Screens/Room/CollegeDetention/CollegeDetention.d.ts +2 -2
  50. package/bc/Screens/Room/CollegeEntrance/CollegeEntrance.d.ts +2 -2
  51. package/bc/Screens/Room/CollegeTeacher/CollegeTeacher.d.ts +2 -2
  52. package/bc/Screens/Room/CollegeTennis/CollegeTennis.d.ts +4 -3
  53. package/bc/Screens/Room/CollegeTheater/CollegeTheater.d.ts +2 -2
  54. package/bc/Screens/Room/Crafting/Crafting.d.ts +21 -10
  55. package/bc/Screens/Room/DailyJob/DailyJob.d.ts +6 -4
  56. package/bc/Screens/Room/Empty/Empty.d.ts +4 -4
  57. package/bc/Screens/Room/Infiltration/Infiltration.d.ts +10 -9
  58. package/bc/Screens/Room/Introduction/Introduction.d.ts +38 -28
  59. package/bc/Screens/Room/KidnapLeague/KidnapLeague.d.ts +10 -10
  60. package/bc/Screens/Room/LARP/LARP.d.ts +2 -2
  61. package/bc/Screens/Room/MagicSchoolEscape/MagicSchoolEscape.d.ts +2 -2
  62. package/bc/Screens/Room/MagicSchoolFindsAround/MagicSchoolFindsAround.d.ts +2 -1
  63. package/bc/Screens/Room/MagicSchoolLaboratory/MagicSchoolLaboratory.d.ts +2 -2
  64. package/bc/Screens/Room/MaidQuarters/MaidQuarters.d.ts +6 -8
  65. package/bc/Screens/Room/MainHall/MainHall.d.ts +2 -40
  66. package/bc/Screens/Room/MovieStudio/MovieStudio.d.ts +2 -2
  67. package/bc/Screens/Room/Nursery/Nursery.d.ts +13 -13
  68. package/bc/Screens/Room/Pandora/Pandora.d.ts +8 -5
  69. package/bc/Screens/Room/Photographic/Photographic.d.ts +4 -4
  70. package/bc/Screens/Room/Poker/Poker.d.ts +5 -3
  71. package/bc/Screens/Room/Prison/Prison.d.ts +20 -16
  72. package/bc/Screens/Room/Private/Private.d.ts +7 -5
  73. package/bc/Screens/Room/PrivateRansom/PrivateRansom.d.ts +4 -0
  74. package/bc/Screens/Room/Shibari/Shibari.d.ts +8 -7
  75. package/bc/Screens/Room/Shop2/Shop2.d.ts +1 -1
  76. package/bc/Screens/Room/SlaveMarket/SlaveMarket.d.ts +6 -4
  77. package/bc/Screens/Room/Stable/Stable.d.ts +156 -102
  78. package/bc/Scripts/Asset.d.ts +33 -13
  79. package/bc/Scripts/Audio.d.ts +2 -2
  80. package/bc/Scripts/Character.d.ts +8 -8
  81. package/bc/Scripts/Common.d.ts +61 -17
  82. package/bc/Scripts/Dialog.d.ts +22 -16
  83. package/bc/Scripts/Drawing.d.ts +5 -4
  84. package/bc/Scripts/DynamicDraw.d.ts +4 -4
  85. package/bc/Scripts/Element.d.ts +44 -3
  86. package/bc/Scripts/Fullscreen.d.ts +22 -0
  87. package/bc/Scripts/GLDraw.d.ts +23 -21
  88. package/bc/Scripts/GameLog.d.ts +1 -1
  89. package/bc/Scripts/Inventory.d.ts +53 -34
  90. package/bc/Scripts/Item.d.ts +24 -2
  91. package/bc/Scripts/Layering.d.ts +28 -25
  92. package/bc/Scripts/Map.d.ts +78 -0
  93. package/bc/Scripts/MiniGame.d.ts +2 -2
  94. package/bc/Scripts/PortalLink.d.ts +8 -2
  95. package/bc/Scripts/Pose.d.ts +1 -1
  96. package/bc/Scripts/Server.d.ts +24 -10
  97. package/bc/Scripts/Struggle.d.ts +4 -4
  98. package/bc/Scripts/Text.d.ts +3 -3
  99. package/bc/Scripts/Toasts.d.ts +6 -0
  100. package/bc/Scripts/TypedItem.d.ts +6 -6
  101. package/bc/Scripts/Validation.d.ts +12 -12
  102. package/package.json +1 -1
@@ -541,10 +541,10 @@ declare namespace AssetPoseMapping {
541
541
  export { Hogtied_34 as Hogtied };
542
542
  }
543
543
  }
544
- /** @type {string[]} */
545
- declare const AssetMalePantiesList: string[];
546
- /** @type {string[]} */
547
- declare const AssetMaleChasityCagesList: string[];
544
+ /** @type {readonly AssetFullName[]} */
545
+ declare const AssetMalePantiesList: readonly AssetFullName[];
546
+ /** @type {readonly AssetFullName[]} */
547
+ declare const AssetMaleChasityCagesList: readonly AssetFullName[];
548
548
  /**
549
549
  * 3D Custom Girl based assets
550
550
  * @type {AssetGroupDefinition[]}
@@ -1,6 +1,17 @@
1
1
  /** A type representing layer names (yes this is just a `string` alias). */
2
2
  type LayerName = string;
3
3
 
4
+ // Do not remove, but do deprecate in order to discourage future usage
5
+ /**
6
+ * A group + asset name.
7
+ *
8
+ * @deprecated Usage of {@link AssetFullPath} instead is strongly recommended for any and all future work.
9
+ */
10
+ type AssetFullName = `${AssetGroupName}${AssetName}`;
11
+
12
+ /** A group + asset name separated by a dash */
13
+ type AssetFullPath = `${AssetGroupName}/${AssetName}`;
14
+
4
15
  /** A special key for {@link ItemProperties["DrawingTop"]}/{@link ItemProperties["DrawingLeft"]} that overrides the _relative_ position of each and every layer individually */
5
16
  type AssetOverride = "ASSET_OVERRIDE";
6
17
 
@@ -33,8 +44,10 @@ declare namespace TopLeft {
33
44
  */
34
45
  type Definition = number | Partial<Record<AssetPoseName | PoseTypeDefault, number>>;
35
46
  /** See {@link ItemProperties["DrawingTop"]} */
47
+ // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
36
48
  type ItemData = Partial<Record<AssetOverride | LayerName, TopLeft.DataMutable>>;
37
49
  /** See {@link ItemPropertiesConfig["DrawingTop"]} */
50
+ // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
38
51
  type ItemDefinition = Partial<Record<AssetOverride | LayerName, TopLeft.Definition>>;
39
52
  }
40
53
 
@@ -267,7 +280,7 @@ interface AssetGroupDefinitionBase extends AssetCommonPropertiesGroupAsset, Asse
267
280
  /** The internal identifier for the group */
268
281
  Group: AssetGroupName;
269
282
  /** The list of assets defined by the group */
270
- Asset: (AssetDefinition | string)[];
283
+ Asset: (AssetDefinition | AssetName)[];
271
284
 
272
285
  /** Inherited from {@link AssetCommonPropertiesGroupAssetLayer} but mandatory here */
273
286
  Priority: number;
@@ -381,7 +394,7 @@ interface AssetGroupDefinitionBase extends AssetCommonPropertiesGroupAsset, Asse
381
394
  *
382
395
  * Used for things like auto-removing collar accessories if the collar is removed.
383
396
  */
384
- RemoveItemOnRemove?: { Group: AssetGroupItemName, Name: string, TypeRecord?: TypeRecord }[];
397
+ RemoveItemOnRemove?: { Group: AssetGroupItemName, Name: AssetName, TypeRecord?: TypeRecord }[];
385
398
 
386
399
  /**
387
400
  * Whether the group has a blinking variant
@@ -427,7 +440,7 @@ declare namespace AssetGroupDefinition {
427
440
  /** An {@link AssetGroupDefinition} subtype for groups of the `Item` category. */
428
441
  interface Item extends AssetGroupDefinitionBase {
429
442
  Group: AssetGroupItemName;
430
- Asset: (AssetDefinition.Item | string)[];
443
+ Asset: (AssetDefinition.Item | AssetName)[];
431
444
  Category: "Item";
432
445
  Clothing?: false;
433
446
  Underwear?: false;
@@ -442,7 +455,7 @@ declare namespace AssetGroupDefinition {
442
455
  /** An {@link AssetGroupDefinition} subtype for groups of the `Appearance` category. */
443
456
  interface Appearance extends AssetGroupDefinitionBase {
444
457
  Group: AssetGroupBodyName;
445
- Asset: (AssetDefinition.Appearance | string)[];
458
+ Asset: (AssetDefinition.Appearance | AssetName)[];
446
459
  Category?: "Appearance";
447
460
  IsRestraint?: false;
448
461
  Zone?: never;
@@ -451,7 +464,7 @@ declare namespace AssetGroupDefinition {
451
464
  /** An {@link AssetGroupDefinition} subtype for groups of the `Script` category. */
452
465
  interface Script extends AssetGroupDefinitionBase {
453
466
  Group: AssetGroupScriptName;
454
- Asset: (AssetDefinition.Script | string)[];
467
+ Asset: (AssetDefinition.Script | AssetName)[];
455
468
  Category: "Script";
456
469
  }
457
470
  }
@@ -484,7 +497,7 @@ interface AssetCommonPropertiesAssetLayer {
484
497
  interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetCommonPropertiesAssetLayer, AssetCommonPropertiesGroupAssetLayer {
485
498
 
486
499
  /** The asset's internal name. */
487
- Name: string,
500
+ Name: AssetName,
488
501
 
489
502
  /** The asset's InventoryID to be synced with the server and other players */
490
503
  InventoryID?: number,
@@ -497,7 +510,7 @@ interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetComm
497
510
  /** The name of the group */
498
511
  GroupName: AssetGroupName,
499
512
  /** The name of the asset */
500
- AssetName: string,
513
+ AssetName: AssetName,
501
514
  /** Whether to automatically assign a {@link AssetDefinition.BuyGroup} to the config and, if required, to set it for all `CopyConfig`-referenced super configs */
502
515
  BuyGroup?: boolean,
503
516
  };
@@ -508,7 +521,7 @@ interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetComm
508
521
  * Used for the random appearance generator, to ensure combined assets match.
509
522
  * Eyes, as well as the student tops and bottoms make use of it.
510
523
  */
511
- ParentItem?: string;
524
+ ParentItem?: AssetName;
512
525
 
513
526
  /**
514
527
  * Whether the asset is enabled or not.
@@ -524,7 +537,7 @@ interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetComm
524
537
  Visible?: boolean;
525
538
 
526
539
  /** A list of screens where current asset won't be shown. */
527
- NotVisibleOnScreen?: string[];
540
+ NotVisibleOnScreen?: RoomName[];
528
541
 
529
542
  /** Specify body type overrides that live in the asset override folder */
530
543
  StyleOverride?: BodyStyle[];
@@ -533,8 +546,8 @@ interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetComm
533
546
  // Only on BodyStyles
534
547
  DrawOffset?: {
535
548
  Group?: AssetGroupName;
536
- Asset?: string;
537
- Layer?: string[]
549
+ Asset?: AssetName;
550
+ Layer?: LayerName[]
538
551
  X?: number;
539
552
  Y?: number;
540
553
  }[];
@@ -576,10 +589,10 @@ interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetComm
576
589
  Expose?: AssetGroupItemName[];
577
590
 
578
591
  /** A list of asset names that get hidden when the asset is worn. */
579
- HideItem?: string[];
592
+ HideItem?: AssetFullName[];
580
593
 
581
594
  /** A list of asset names that get shown when the asset is worn. Only useful when combined with Hide */
582
- HideItemExclude?: string[];
595
+ HideItemExclude?: AssetFullName[];
583
596
 
584
597
  /**
585
598
  * A list of body group that becomes required when this asset is worn.
@@ -670,12 +683,12 @@ interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetComm
670
683
  ExpressionTrigger?: ExpressionTrigger[];
671
684
 
672
685
  /** A list of assets to also remove when the asset is taken off. */
673
- RemoveItemOnRemove?: { Name: string, Group: AssetGroupItemName, TypeRecord?: TypeRecord }[];
686
+ RemoveItemOnRemove?: { Name: AssetName, Group: AssetGroupItemName, TypeRecord?: TypeRecord }[];
674
687
 
675
688
  AllowEffect?: EffectName[];
676
689
  AllowBlock?: AssetGroupItemName[];
677
690
  AllowHide?: AssetGroupItemName[];
678
- AllowHideItem?: string[];
691
+ AllowHideItem?: AssetFullName[];
679
692
  /** A list of {@link TypeRecord} keys for which a single layer expects multiple type-specific .png files. */
680
693
  CreateLayerTypes?: string[];
681
694
  /**
@@ -700,7 +713,7 @@ interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetComm
700
713
  DynamicDescription?: (C: Character) => string;
701
714
  DynamicPreviewImage?: (C: Character) => string;
702
715
  DynamicAllowInventoryAdd?: (C: Character) => boolean;
703
- DynamicName?: (C: Character) => string;
716
+ DynamicName?: (C: Character) => AssetName;
704
717
 
705
718
  /** The real group name used when building the file paths for the asset's layers */
706
719
  DynamicGroupName?: AssetGroupName;
@@ -719,7 +732,7 @@ interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetComm
719
732
  AllowColorizeAll?: never;
720
733
 
721
734
  /** A list of online spaces (eg. Asylum) where the asset is automatically available */
722
- AvailableLocations?: string[];
735
+ AvailableLocations?: (RoomName | ServerChatRoomSpace)[];
723
736
 
724
737
  OverrideHeight?: AssetOverrideHeight;
725
738
 
@@ -737,6 +750,7 @@ interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetComm
737
750
 
738
751
  MirrorExpression?: AssetGroupBodyName;
739
752
 
753
+ /** See {@link BackgroundsList} */
740
754
  CustomBlindBackground?: string;
741
755
 
742
756
  /** The list of layers for the asset. */
@@ -867,7 +881,7 @@ interface AssetLayerDefinition extends AssetCommonPropertiesGroupAssetLayer, Ass
867
881
  */
868
882
  Visibility?: "Player" | "AllExceptPlayerDialog" | "Others" | "OthersExceptDialog" | "Owner" | "Lovers" | "Mistresses";
869
883
 
870
- HideAs?: { Group: AssetGroupName, Asset?: string };
884
+ HideAs?: { Group: AssetGroupName, Asset?: AssetName };
871
885
 
872
886
  /** Whether the layer uses an image. Defaults to true. */
873
887
  HasImage?: boolean;
@@ -911,7 +925,7 @@ interface AssetLayerDefinition extends AssetCommonPropertiesGroupAssetLayer, Ass
911
925
  *
912
926
  * Serves as the pose mapping equivalent of {@link AssetLayerDefinition.CopyLayerColor}.
913
927
  */
914
- CopyLayerPoseMapping?: string;
928
+ CopyLayerPoseMapping?: LayerName;
915
929
 
916
930
  /**
917
931
  * A list of {@link TypeRecord} keys for which a single layer expects multiple type-specific .png files.
@@ -953,7 +967,7 @@ type ExtendedItemMainConfig = Partial<Record<AssetGroupName, ExtendedItemGroupCo
953
967
  * An object containing extended item definitions for a group.
954
968
  * Maps asset names within the group to their extended item configuration
955
969
  */
956
- type ExtendedItemGroupConfig = Record<string, AssetArchetypeConfig>;
970
+ type ExtendedItemGroupConfig = Partial<Record<AssetName, AssetArchetypeConfig>>;
957
971
 
958
972
  /** Get the archetype config type */
959
973
  type AssetArchetypeGetConfig<T extends keyof ExtendedArchetypes> = ExtendedArchetypes[T][0];
@@ -994,9 +1008,9 @@ interface ExtendedItemConfig<OptionType extends ExtendedItemOption> {
994
1008
  /** A boolean indicating whether or not images should be drawn for the option and/or module selection screen. */
995
1009
  DrawImages?: boolean;
996
1010
  /** The group name and asset name of a configuration to copy - useful if multiple items share the same config */
997
- CopyConfig?: { GroupName?: AssetGroupName, AssetName: string };
1011
+ CopyConfig?: { GroupName?: AssetGroupName, AssetName: AssetName };
998
1012
  /** An interface with element-specific drawing data for a given screen. */
999
- DrawData?: ExtendedItemConfigDrawData<{}>;
1013
+ DrawData?: ExtendedItemConfigDrawData<object>;
1000
1014
  /**
1001
1015
  * A list with extra to-be allowed effect names.
1002
1016
  * Should only defined when there are effects that are exclusively managed by script hooks and thus cannot be extracted from the normal extended item options.
@@ -1466,7 +1480,7 @@ interface TestingStruct<T> {
1466
1480
  /** The asset's group */
1467
1481
  readonly Group: AssetGroupName;
1468
1482
  /** The asset's name */
1469
- readonly Name: string;
1483
+ readonly Name: AssetName;
1470
1484
  /** A representation of the asset's missing or invalid data */
1471
1485
  readonly Invalid: T;
1472
1486
  }
@@ -52,6 +52,7 @@ type GraphicsFontName =
52
52
  "Arial" | "TimesNewRoman" | "Papyrus" | "ComicSans" | "Impact" | "HelveticaNeue" | "Verdana" |
53
53
  "CenturyGothic" | "Georgia" | "CourierNew" | "Copperplate"
54
54
  ;
55
+ type GraphicsShowFullscreenButton = "on" | "off" | "on_when_mobile";
55
56
 
56
57
  // #endregion
57
58
 
@@ -0,0 +1,12 @@
1
+ type WardrobeReorderType = "None" | "Select" | "Place";
2
+ type WardrobeActionPreview = "Load" | "Save";
3
+ type WardrobeFastLoadOptions = {
4
+ /** Keep body from {@link WardrobeFastLoadOptions.BodyCharacter} and apply only clothes from the slot. Honored only when {@link Wardrobe.excludeBodyparts} is set. */
5
+ ExcludeBodyparts?: boolean;
6
+ /** Body source when excluding body parts; defaults to {@link Wardrobe.selectedCharacter}. */
7
+ BodyCharacter?: Character;
8
+ /** Restore facial expressions from this character after loading. Defaults to the player when `C` is the player. */
9
+ ExpressionSource?: Character;
10
+ /** Load this bundle instead of `Player.Wardrobe[W]`. */
11
+ Appearance?: ItemBundle[];
12
+ };
@@ -0,0 +1,260 @@
1
+ type ClubCardTag =
2
+ | "All Cards"
3
+ | "Selected Cards"
4
+ | "Event Cards"
5
+ | "Ungrouped"
6
+ | "Liability"
7
+ | "Staff"
8
+ | "Police"
9
+ | "Criminal"
10
+ | "Fetishist"
11
+ | "Porn"
12
+ | "Maid"
13
+ | "Asylum"
14
+ | "Dominant / Mistress"
15
+ | "ABDL"
16
+ | "College"
17
+ | "Shibari"
18
+ | "Pet / Owner"
19
+ | "Kemonomimi"
20
+ | "Submissive / Slave"
21
+ | "Exhibitionist"
22
+ | "Latex"
23
+ | "Online Player"
24
+ | "Reward Cards"
25
+ ;
26
+
27
+ type ClubCardType = "Member" | "Event";
28
+
29
+ type ClubCardGroup =
30
+ | "Fetishist"
31
+ | "Exhibitionist"
32
+ | "Shibari"
33
+ | "Submissive"
34
+ | "Sensei"
35
+ | "Staff"
36
+ | "Police"
37
+ | "Criminal"
38
+ | "Liability"
39
+ | "ABDLBaby"
40
+ | "ABDLMommy"
41
+ | "Maid"
42
+ | "Slave"
43
+ | "PornActress"
44
+ | "Porn"
45
+ | "Kemonomimi"
46
+ | "AsylumPatient"
47
+ | "AsylumNurse"
48
+ | "Dominant"
49
+ | "Mistress"
50
+ | "CollegeStudent"
51
+ | "CollegeTeacher"
52
+ | "Player"
53
+ | "Pet"
54
+ | "Knot"
55
+ | "Owner"
56
+ | "Latex"
57
+ | "Auction"
58
+ | "TimedEvent"
59
+ | "Video"
60
+ | "ContinuousEvent"
61
+ ;
62
+
63
+ interface ClubCard {
64
+ ID: number;
65
+ UniqueID?: string;
66
+ Name: string;
67
+ ArrayIndex?: number;
68
+ Type?: ClubCardType;
69
+ Title?: string;
70
+ Text?: string;
71
+ Prerequisite?: string;
72
+ Reward?: string;
73
+ RewardMemberNumber?: number;
74
+ MoneyPerTurn?: number;
75
+ FamePerTurn?: number;
76
+ RequiredLevel?: 1 | 2 | 3 | 4 | 5;
77
+ Time?: number;
78
+ ExtraTime?: number;
79
+ ExtraPlay?: number;
80
+ Group?: ClubCardGroup[];
81
+ Location?: string;
82
+ Negated?: boolean; // if the card's effect should not work
83
+ Negating?: string; // the card that its effect is stopped by this card
84
+ GlowTimer?: number;
85
+ GlowColor?: string;
86
+ EffectKey?: number;
87
+ EffectType?: string;
88
+ Revealed?: boolean;
89
+ CanActive?: boolean;
90
+ //### Animations
91
+ AnimationState?: string;
92
+ DelayedAnimationState?: string;
93
+ CurrentX?: number;
94
+ CurrentY?: number;
95
+ CurrentW?: number;
96
+ IsVisible?: boolean;
97
+ //### ### ### ###
98
+ OnPlay?: (C: ClubCardPlayer) => void;
99
+ BeforeTurnEnd?: (C: ClubCardPlayer) => void;
100
+ AfterTurnEnd?: (C: ClubCardPlayer) => void;
101
+ BeforeOpponentTurnEnd?: (C: ClubCardPlayer) => void;
102
+ AfterOpponentTurnEnd?: (C: ClubCardPlayer) => void;
103
+ CanPlay?: (C: ClubCardPlayer) => boolean;
104
+ /**
105
+ * @param C Player that owns the card and played a card
106
+ * @param Card that was played
107
+ */
108
+ onPlayedCard?: (C: ClubCardPlayer, Card: ClubCard) => void;
109
+ /**
110
+ * @param C player that owns the card (not the one who played it in this case)
111
+ * @param Card the card that was played
112
+ */
113
+ onOpponentPlayedCard?: (C: ClubCardPlayer, Card: ClubCard) => void;
114
+ /**
115
+ * Hook to run when card is removed from the board.
116
+ * @param C Player that owns the card
117
+ */
118
+ onLeaveClub?: (C: ClubCardPlayer) => void;
119
+ onMemberLeaveClub?: (C: ClubCardPlayer, Card: ClubCard, DidntDiscard: boolean) => void;
120
+ onRender?: (C: ClubCardPlayer, X: number, Y: number, W: number) => void;
121
+ turnStart?: (C: ClubCardPlayer) => void;
122
+ onLevelUp?: (C: ClubCardPlayer) => void;
123
+ onOpponentLevelUp?: (C: ClubCardPlayer) => void;
124
+ onDrawCard?: (C: ClubCardPlayer) => void;
125
+ onOpponentDrawCard?: (C: ClubCardPlayer) => void;
126
+ onDrawAction?: (C: ClubCardPlayer) => void;
127
+ onOpponentDrawAction?: (C: ClubCardPlayer) => void;
128
+ onSteal?: (C: ClubCardPlayer) => void;
129
+ StreetsTurnEnd?: (C: ClubCardPlayer) => void;
130
+ onDiscardCard?: (C: ClubCardPlayer, Card: ClubCard) => void;
131
+ onCancelNegation?: (C: ClubCardPlayer) => void;
132
+ WhenDrawn?: (C: ClubCardPlayer) => void;
133
+ OnActive?: (C: ClubCardPlayer) => void;
134
+ OnGameStart?: (C: ClubCardPlayer) => void;
135
+ }
136
+
137
+ type ClubCardDefaultDecks =
138
+ | "Default"
139
+ | "Princess Treatment"
140
+ | "Permanent Stay"
141
+ | "Pound Town"
142
+ ;
143
+
144
+ interface ClubCardPlayer {
145
+ Character: Character;
146
+ Control: "AI" | "Player" | "Online";
147
+ Index: number;
148
+ Sleeve: number;
149
+ Deck: ClubCard[];
150
+ FullDeck: ClubCard[];
151
+ Hand: ClubCard[];
152
+ Board: ClubCard[];
153
+ Event: ClubCard[];
154
+ RenderFullBoard: ClubCard[];
155
+ DiscardPile: ClubCard[];
156
+ Level: number;
157
+ Money: number;
158
+ Fame: number;
159
+ LastFamePerTurn?: number;
160
+ LastMoneyPerTurn?: number;
161
+ ClubCardTurnCounter: number;
162
+ CardsPlayedThisTurn: Record<number, ClubCard[]>
163
+ }
164
+
165
+ interface ClubCardPopupType {
166
+ Mode:
167
+ | "DISCARDPILE"
168
+ | "YESNO"
169
+ | "TEXT"
170
+ | "SEARCH"
171
+ | "INFO"
172
+ | "TIERSELECTION"
173
+ | "DECK"
174
+ | "TifaActive";
175
+ Text?: string;
176
+ Button1?: string;
177
+ Button2?: string;
178
+ Function1?: string;
179
+ Function2?: string;
180
+ CardsPool?: ClubCard[];
181
+ }
182
+
183
+ type ClubCardMessageType =
184
+ | "Prerequisite"
185
+ | "StartTurnInfo"
186
+ | "SystemMessage"
187
+ | "PlayersMessage"
188
+ | "PlayersDisconnected"
189
+ | "CardsEffect"
190
+ | "TurnEndEffect"
191
+ | "KnotEvent"
192
+ | "Actions"
193
+ | "ActionSeparator"
194
+ | "FameMoneyInfo"
195
+ | "StartTurnEvent"
196
+ | "VictoryInfo"
197
+ ;
198
+
199
+ type ClubCardPlaceholderKeysType =
200
+ | "MONEYLABEL"
201
+ | "FAMELABEL"
202
+ | "AMOUNT"
203
+ | "CARDNAME"
204
+ | "MONEYAMOUNT"
205
+ | "FAMEAMOUNT"
206
+ | "TURNNUMBER"
207
+ | "PLAYERNAME"
208
+ ;
209
+
210
+ interface ClubCardMessage {
211
+ /** Localization key */
212
+ TextGetKey: string;
213
+ /** Type of message (e.g., ACTION, SYSTEM, IMMEDIATE) */
214
+ MessageType: ClubCardMessageType;
215
+ /** ID of the player who triggered the message */
216
+ PlayerId: string;
217
+ /** Turn number when the message was created */
218
+ TurnCounter: number;
219
+ /** Dynamic data for text replacement */
220
+ Placeholders: {
221
+ [key in ClubCardPlaceholderKeysType]?: string;
222
+ };
223
+ }
224
+
225
+ interface ClubCardPosition {
226
+ x: number;
227
+ y: number;
228
+ w: number;
229
+ }
230
+
231
+ /**
232
+ * Represents an active card animation in progress.
233
+ */
234
+ interface ClubCardActiveAnimation {
235
+ /** The card being animated. */
236
+ Card: ClubCard;
237
+ /** The original card (if a copy is animated). */
238
+ OriginalCard?: ClubCard | null;
239
+ /** Timestamp when the animation started (in milliseconds). */
240
+ StartTime: number;
241
+ /** Total animation duration in milliseconds. */
242
+ Duration: number;
243
+ /** Initial position of the card. */
244
+ StartPosition: { x: number, y: number, w: number };
245
+ /** Target position of the card. */
246
+ EndPosition: { x: number, y: number, w: number };
247
+ /** Whether to hide the original card during animation. */
248
+ HideOriginal: boolean;
249
+ /** Whether the original card should stay hidden after animation completes. */
250
+ KeepOriginalHidden: boolean;
251
+ /** Timeout ID for fallback handling (used to restore the card state in case of failure). */
252
+ SafetyTimeout: number;
253
+ /** Callback function called when the animation completes. */
254
+ OnComplete?: AnyFunction|null;
255
+ // Processed elsewhere
256
+ // /** Callback function called when the animation starts. */
257
+ // OnStart?: Function|null;
258
+ /** Animation rendering level priority*/
259
+ Priority: number;
260
+ }
@@ -1,3 +1,6 @@
1
1
  // Statically defined types that can be swapped out for more precise, dynamically computed alternatives during the `files:csvtypescript` CI
2
2
 
3
3
  type TextKeysInterface = string;
4
+
5
+ /** A type representing asset names (yes this is just a `string` alias). */
6
+ type AssetName = string;
@@ -62,7 +62,7 @@ declare namespace ElementSearchableDropdown {
62
62
  /** Imperative helpers attached to the root element returned from {@link ElementCreateSearchableDropdown}. */
63
63
  interface SearchableDropdownInstance {
64
64
  bcSetOptions(optionsList: readonly OptionItem[], newValue?: string): void;
65
- bcSetValue(newValue: string): void;
65
+ bcSetNewValue(newValue: string): void;
66
66
  bcSetDisabled(disabled: boolean): void;
67
67
  }
68
68