bc-stubs 96.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 (312) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -0
  3. package/bc/Assets/Female3DCG/Female3DCG.d.ts +41 -0
  4. package/bc/Assets/Female3DCG/Female3DCGExtended.d.ts +29 -0
  5. package/bc/Backgrounds/Backgrounds.d.ts +37 -0
  6. package/bc/Female3DCG_Types.d.ts +875 -0
  7. package/bc/Screens/Character/Appearance/Appearance.d.ts +392 -0
  8. package/bc/Screens/Character/BackgroundSelection/BackgroundSelection.d.ts +98 -0
  9. package/bc/Screens/Character/Cheat/Cheat.d.ts +54 -0
  10. package/bc/Screens/Character/Creation/Creation.d.ts +40 -0
  11. package/bc/Screens/Character/Disclaimer/Disclaimer.d.ts +21 -0
  12. package/bc/Screens/Character/FriendList/FriendList.d.ts +102 -0
  13. package/bc/Screens/Character/InformationSheet/InformationSheet.d.ts +46 -0
  14. package/bc/Screens/Character/ItemColor/ItemColor.d.ts +232 -0
  15. package/bc/Screens/Character/Login/Login.d.ts +194 -0
  16. package/bc/Screens/Character/OnlineProfile/OnlineProfile.d.ts +27 -0
  17. package/bc/Screens/Character/PasswordReset/PasswordReset.d.ts +28 -0
  18. package/bc/Screens/Character/Preference/Preference.d.ts +658 -0
  19. package/bc/Screens/Character/Relog/Relog.d.ts +36 -0
  20. package/bc/Screens/Character/Title/Title.d.ts +68 -0
  21. package/bc/Screens/Character/Wardrobe/Wardrobe.d.ts +93 -0
  22. package/bc/Screens/Cutscene/NPCCollaring/NPCCollaring.d.ts +26 -0
  23. package/bc/Screens/Cutscene/NPCSlaveAuction/NPCSlaveAuction.d.ts +27 -0
  24. package/bc/Screens/Cutscene/NPCWedding/NPCWedding.d.ts +35 -0
  25. package/bc/Screens/Cutscene/PlayerCollaring/PlayerCollaring.d.ts +26 -0
  26. package/bc/Screens/Cutscene/PlayerMistress/PlayerMistress.d.ts +24 -0
  27. package/bc/Screens/Cutscene/SarahIntro/SarahIntro.d.ts +22 -0
  28. package/bc/Screens/Inventory/Cloth/CheerleaderTop/CheerleaderTop.d.ts +33 -0
  29. package/bc/Screens/Inventory/Cloth/FrilledShirt/FrilledShirt.d.ts +10 -0
  30. package/bc/Screens/Inventory/ClothAccessory/Bib/Bib.d.ts +2 -0
  31. package/bc/Screens/Inventory/EyeShadow/EyeShadow.d.ts +60 -0
  32. package/bc/Screens/Inventory/Futuristic/Futuristic.d.ts +60 -0
  33. package/bc/Screens/Inventory/ItemArms/FullLatexSuit/FullLatexSuit.d.ts +6 -0
  34. package/bc/Screens/Inventory/ItemArms/HempRope/HempRope.d.ts +2 -0
  35. package/bc/Screens/Inventory/ItemArms/NylonRope/NylonRope.d.ts +2 -0
  36. package/bc/Screens/Inventory/ItemArms/PrisonLockdownSuit/PrisonLockdownSuit.d.ts +4 -0
  37. package/bc/Screens/Inventory/ItemArms/TransportJacket/TransportJacket.d.ts +10 -0
  38. package/bc/Screens/Inventory/ItemBreast/ForbiddenChastityBra/ForbiddenChastityBra.d.ts +32 -0
  39. package/bc/Screens/Inventory/ItemBreast/FuturisticBra/FuturisticBra.d.ts +24 -0
  40. package/bc/Screens/Inventory/ItemButt/AnalBeads2/AnalBeads2.d.ts +2 -0
  41. package/bc/Screens/Inventory/ItemButt/InflVibeButtPlug/InflVibeButtPlug.d.ts +2 -0
  42. package/bc/Screens/Inventory/ItemDevices/DollBox/DollBox.d.ts +2 -0
  43. package/bc/Screens/Inventory/ItemDevices/FuckMachine/FuckMachine.d.ts +16 -0
  44. package/bc/Screens/Inventory/ItemDevices/FuturisticCrate/FuturisticCrate.d.ts +8 -0
  45. package/bc/Screens/Inventory/ItemDevices/KabeshiriWall/KabeshiriWall.d.ts +13 -0
  46. package/bc/Screens/Inventory/ItemDevices/Kennel/Kennel.d.ts +18 -0
  47. package/bc/Screens/Inventory/ItemDevices/LuckyWheel/LuckyWheel.d.ts +48 -0
  48. package/bc/Screens/Inventory/ItemDevices/PetBowl/PetBowl.d.ts +6 -0
  49. package/bc/Screens/Inventory/ItemDevices/VacBedDeluxe/VacBedDeluxe.d.ts +2 -0
  50. package/bc/Screens/Inventory/ItemDevices/WheelFortune/WheelFortune.d.ts +10 -0
  51. package/bc/Screens/Inventory/ItemDevices/WoodenBox/WoodenBox.d.ts +13 -0
  52. package/bc/Screens/Inventory/ItemFeet/HempRope/HempRope.d.ts +2 -0
  53. package/bc/Screens/Inventory/ItemFeet/NylonRope/NylonRope.d.ts +2 -0
  54. package/bc/Screens/Inventory/ItemHandhelds/PortalTablet/PortalTablet.d.ts +10 -0
  55. package/bc/Screens/Inventory/ItemHead/DroneMask/DroneMask.d.ts +2 -0
  56. package/bc/Screens/Inventory/ItemHood/CanvasHood/CanvasHood.d.ts +6 -0
  57. package/bc/Screens/Inventory/ItemMisc/CombinationPadlock/CombinationPadlock.d.ts +16 -0
  58. package/bc/Screens/Inventory/ItemMisc/ExclusivePadlock/ExclusivePadlock.d.ts +6 -0
  59. package/bc/Screens/Inventory/ItemMisc/FamilyPadlock/FamilyPadlock.d.ts +6 -0
  60. package/bc/Screens/Inventory/ItemMisc/HighSecurityPadlock/HighSecurityPadlock.d.ts +15 -0
  61. package/bc/Screens/Inventory/ItemMisc/IntricatePadlock/IntricatePadlock.d.ts +6 -0
  62. package/bc/Screens/Inventory/ItemMisc/LoversPadlock/LoversPadlock.d.ts +6 -0
  63. package/bc/Screens/Inventory/ItemMisc/LoversTimerPadlock/LoversTimerPadlock.d.ts +17 -0
  64. package/bc/Screens/Inventory/ItemMisc/MetalPadlock/MetalPadlock.d.ts +6 -0
  65. package/bc/Screens/Inventory/ItemMisc/MistressPadlock/MistressPadlock.d.ts +6 -0
  66. package/bc/Screens/Inventory/ItemMisc/MistressTimerPadlock/MistressTimerPadlock.d.ts +13 -0
  67. package/bc/Screens/Inventory/ItemMisc/OwnerPadlock/OwnerPadlock.d.ts +6 -0
  68. package/bc/Screens/Inventory/ItemMisc/OwnerTimerPadlock/OwnerTimerPadlock.d.ts +22 -0
  69. package/bc/Screens/Inventory/ItemMisc/PandoraPadlock/PandoraPadlock.d.ts +6 -0
  70. package/bc/Screens/Inventory/ItemMisc/PasswordPadlock/PasswordPadlock.d.ts +17 -0
  71. package/bc/Screens/Inventory/ItemMisc/PortalLinkPadlock/PortalLinkPadlock.d.ts +6 -0
  72. package/bc/Screens/Inventory/ItemMisc/SafewordPadlock/SafewordPadlock.d.ts +12 -0
  73. package/bc/Screens/Inventory/ItemMisc/TimerPadlock/TimerPadlock.d.ts +13 -0
  74. package/bc/Screens/Inventory/ItemMisc/TimerPasswordPadlock/TimerPasswordPadlock.d.ts +13 -0
  75. package/bc/Screens/Inventory/ItemMisc/WoodenSign/WoodenSign.d.ts +2 -0
  76. package/bc/Screens/Inventory/ItemMouth/FuturisticPanelGag/FuturisticPanelGag.d.ts +49 -0
  77. package/bc/Screens/Inventory/ItemNeck/AutoShockCollar/AutoShockCollar.d.ts +4 -0
  78. package/bc/Screens/Inventory/ItemNeck/FuturisticCollar/FuturisticCollar.d.ts +59 -0
  79. package/bc/Screens/Inventory/ItemNeck/PetSuitShockCollar/PetSuitShockCollar.d.ts +4 -0
  80. package/bc/Screens/Inventory/ItemNeck/ShockCollar/ShockCollar.d.ts +4 -0
  81. package/bc/Screens/Inventory/ItemNeck/SlaveCollar/SlaveCollar.d.ts +25 -0
  82. package/bc/Screens/Inventory/ItemNeckAccessories/CollarAutoShockUnit/CollarAutoShockUnit.d.ts +15 -0
  83. package/bc/Screens/Inventory/ItemNeckAccessories/CollarNameTag/CollarNameTag.d.ts +8 -0
  84. package/bc/Screens/Inventory/ItemNeckAccessories/CollarShockUnit/CollarShockUnit.d.ts +17 -0
  85. package/bc/Screens/Inventory/ItemNeckAccessories/CustomCollarTag/CustomCollarTag.d.ts +2 -0
  86. package/bc/Screens/Inventory/ItemNeckAccessories/ElectronicTag/ElectronicTag.d.ts +2 -0
  87. package/bc/Screens/Inventory/ItemNeckRestraints/CollarLeash/CollarLeash.d.ts +4 -0
  88. package/bc/Screens/Inventory/ItemNeckRestraints/PetPost/PetPost.d.ts +2 -0
  89. package/bc/Screens/Inventory/ItemNipples/LactationPump/LactationPump.d.ts +2 -0
  90. package/bc/Screens/Inventory/ItemPelvis/ForbiddenChastityBelt/ForbiddenChastityBelt.d.ts +32 -0
  91. package/bc/Screens/Inventory/ItemPelvis/FuturisticChastityBelt/FuturisticChastityBelt.d.ts +28 -0
  92. package/bc/Screens/Inventory/ItemPelvis/FuturisticTrainingBelt/FuturisticTrainingBelt.d.ts +103 -0
  93. package/bc/Screens/Inventory/ItemPelvis/LoveChastityBelt/LoveChastityBelt.d.ts +8 -0
  94. package/bc/Screens/Inventory/ItemPelvis/ObedienceBelt/ObedienceBelt.d.ts +29 -0
  95. package/bc/Screens/Inventory/ItemPelvis/PortalPanties/PortalPanties.d.ts +10 -0
  96. package/bc/Screens/Inventory/ItemPelvis/SciFiPleasurePanties/SciFiPleasurePanties.d.ts +6 -0
  97. package/bc/Screens/Inventory/ItemTorso/FuturisticHarness/FuturisticHarness.d.ts +8 -0
  98. package/bc/Screens/Inventory/ItemVulva/ClitAndDildoVibratorbelt/ClitAndDildoVibratorbelt.d.ts +4 -0
  99. package/bc/Screens/Inventory/ItemVulva/FuturisticVibrator/FuturisticVibrator.d.ts +65 -0
  100. package/bc/Screens/Inventory/ItemVulva/LoversVibrator/LoversVibrator.d.ts +2 -0
  101. package/bc/Screens/Inventory/Wings/SteampunkWings/SteampunkWings.d.ts +16 -0
  102. package/bc/Screens/MiniGame/Chess/BondageChess.d.ts +30 -0
  103. package/bc/Screens/MiniGame/Chess/chess.d.ts +7 -0
  104. package/bc/Screens/MiniGame/ChestLockpick/ChestLockpick.d.ts +27 -0
  105. package/bc/Screens/MiniGame/ClubCard/ClubCard.d.ts +373 -0
  106. package/bc/Screens/MiniGame/ClubCardBuilder/ClubCardBuilder.d.ts +66 -0
  107. package/bc/Screens/MiniGame/DojoStruggle/DojoStruggle.d.ts +25 -0
  108. package/bc/Screens/MiniGame/GetUp/GetUp.d.ts +31 -0
  109. package/bc/Screens/MiniGame/HorseWalk/HorseWalk.d.ts +85 -0
  110. package/bc/Screens/MiniGame/Kidnap/Kidnap.d.ts +165 -0
  111. package/bc/Screens/MiniGame/KinkyDungeon/KDAutoStruggle.d.ts +99 -0
  112. package/bc/Screens/MiniGame/KinkyDungeon/KDClasses.d.ts +11 -0
  113. package/bc/Screens/MiniGame/KinkyDungeon/KDDelayedActions.d.ts +17 -0
  114. package/bc/Screens/MiniGame/KinkyDungeon/KDFixForBC.d.ts +11 -0
  115. package/bc/Screens/MiniGame/KinkyDungeon/KDModUtils.d.ts +93 -0
  116. package/bc/Screens/MiniGame/KinkyDungeon/KDParticles.d.ts +37 -0
  117. package/bc/Screens/MiniGame/KinkyDungeon/KDTypeDefs.d.ts +2161 -0
  118. package/bc/Screens/MiniGame/KinkyDungeon/KDWardrobe.d.ts +84 -0
  119. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeon.d.ts +653 -0
  120. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonAlt.d.ts +481 -0
  121. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonBones.d.ts +16 -0
  122. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonBoss.d.ts +119 -0
  123. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonBuffs.d.ts +33 -0
  124. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonBuffsList.d.ts +865 -0
  125. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonConsumables.d.ts +36 -0
  126. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonConsumablesList.d.ts +66 -0
  127. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonCurse.d.ts +44 -0
  128. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonDialogue.d.ts +171 -0
  129. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonDialogueList.d.ts +45 -0
  130. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonDialogueTriggers.d.ts +48 -0
  131. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonDraw.d.ts +738 -0
  132. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonDress.d.ts +62 -0
  133. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonDressList.d.ts +33 -0
  134. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonEditor.d.ts +1124 -0
  135. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonEditorGen.d.ts +113 -0
  136. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonEditorTiles.d.ts +4 -0
  137. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonEffectTiles.d.ts +6 -0
  138. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonEnemies.d.ts +544 -0
  139. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonEnemiesList.d.ts +22 -0
  140. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonEnemyEventList.d.ts +18 -0
  141. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonErrors.d.ts +59 -0
  142. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonEvents.d.ts +151 -0
  143. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonFactions.d.ts +53 -0
  144. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonFactionsList.d.ts +650 -0
  145. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonFight.d.ts +453 -0
  146. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonFurniture.d.ts +28 -0
  147. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonGame.d.ts +429 -0
  148. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonHUD.d.ts +134 -0
  149. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonInput.d.ts +23 -0
  150. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonInventory.d.ts +178 -0
  151. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonItem.d.ts +33 -0
  152. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonJail.d.ts +142 -0
  153. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonJailList.d.ts +105 -0
  154. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonLoot.d.ts +66 -0
  155. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonLootList.d.ts +866 -0
  156. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonLore.d.ts +37 -0
  157. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonMagic.d.ts +113 -0
  158. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonMagicCode.d.ts +23 -0
  159. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonMagicList.d.ts +62 -0
  160. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonMapMods.d.ts +5 -0
  161. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonMistress.d.ts +10 -0
  162. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonMultiplayer.d.ts +26 -0
  163. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonMusic.d.ts +28 -0
  164. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonObject.d.ts +42 -0
  165. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonParams.d.ts +4 -0
  166. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonPathfinding.d.ts +36 -0
  167. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonPerks.d.ts +147 -0
  168. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonPersonality.d.ts +83 -0
  169. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonPlayerEffects.d.ts +35 -0
  170. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonQuest.d.ts +10 -0
  171. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonReputation.d.ts +229 -0
  172. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonRestraints.d.ts +766 -0
  173. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonRestraintsList.d.ts +55 -0
  174. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonSetpiece.d.ts +91 -0
  175. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonShrine.d.ts +89 -0
  176. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonSpawns.d.ts +49 -0
  177. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonStats.d.ts +282 -0
  178. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonTests.d.ts +5 -0
  179. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonTiles.d.ts +160 -0
  180. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonTilesList.d.ts +72 -0
  181. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonTraps.d.ts +34 -0
  182. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonVibe.d.ts +98 -0
  183. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonVision.d.ts +24 -0
  184. package/bc/Screens/MiniGame/KinkyDungeon/KinkyDungeonWeaponList.d.ts +5 -0
  185. package/bc/Screens/MiniGame/MagicBattle/MagicBattle.d.ts +73 -0
  186. package/bc/Screens/MiniGame/MagicPuzzle/MagicPuzzle.d.ts +75 -0
  187. package/bc/Screens/MiniGame/MaidCleaning/MaidCleaning.d.ts +51 -0
  188. package/bc/Screens/MiniGame/MaidDrinks/MaidDrinks.d.ts +82 -0
  189. package/bc/Screens/MiniGame/PlayerAuction/PlayerAuction.d.ts +36 -0
  190. package/bc/Screens/MiniGame/PuppyWalker/PuppyWalker.d.ts +39 -0
  191. package/bc/Screens/MiniGame/RhythmGame/RhythmGame.d.ts +76 -0
  192. package/bc/Screens/MiniGame/SlaveAuction/SlaveAuction.d.ts +39 -0
  193. package/bc/Screens/MiniGame/Tennis/Tennis.d.ts +52 -0
  194. package/bc/Screens/MiniGame/Therapy/Therapy.d.ts +39 -0
  195. package/bc/Screens/MiniGame/WheelFortune/WheelFortune.d.ts +105 -0
  196. package/bc/Screens/Online/AdvancedRule/AdvancedRule.d.ts +32 -0
  197. package/bc/Screens/Online/ChatAdmin/ChatAdmin.d.ts +59 -0
  198. package/bc/Screens/Online/ChatBlockItem/ChatBlockItem.d.ts +30 -0
  199. package/bc/Screens/Online/ChatCreate/ChatCreate.d.ts +66 -0
  200. package/bc/Screens/Online/ChatRoom/ChatRoom.d.ts +1342 -0
  201. package/bc/Screens/Online/ChatRoom/Commands.d.ts +66 -0
  202. package/bc/Screens/Online/ChatSearch/ChatSearch.d.ts +241 -0
  203. package/bc/Screens/Online/ChatSelect/ChatSelect.d.ts +33 -0
  204. package/bc/Screens/Online/ForbiddenWords/ForbiddenWords.d.ts +33 -0
  205. package/bc/Screens/Online/Game/OnlineGame.d.ts +69 -0
  206. package/bc/Screens/Online/GameClubCard/GameClubCard.d.ts +131 -0
  207. package/bc/Screens/Online/GameLARP/GameLARP.d.ts +279 -0
  208. package/bc/Screens/Online/GameMagicBattle/GameMagicBattle.d.ts +159 -0
  209. package/bc/Screens/Online/WheelFortuneCustomize/WheelFortuneCustomize.d.ts +24 -0
  210. package/bc/Screens/Room/Arcade/Arcade.d.ts +94 -0
  211. package/bc/Screens/Room/AsylumBedroom/AsylumBedroom.d.ts +16 -0
  212. package/bc/Screens/Room/AsylumEntrance/AsylumEntrance.d.ts +265 -0
  213. package/bc/Screens/Room/AsylumGGTS/AsylumGGTS.d.ts +330 -0
  214. package/bc/Screens/Room/AsylumMeeting/AsylumMeeting.d.ts +110 -0
  215. package/bc/Screens/Room/AsylumTherapy/AsylumTherapy.d.ts +117 -0
  216. package/bc/Screens/Room/Cafe/Cafe.d.ts +144 -0
  217. package/bc/Screens/Room/Cell/Cell.d.ts +32 -0
  218. package/bc/Screens/Room/ClubCardLounge/ClubCardLounge.d.ts +28 -0
  219. package/bc/Screens/Room/CollegeCafeteria/CollegeCafeteria.d.ts +57 -0
  220. package/bc/Screens/Room/CollegeChess/CollegeChess.d.ts +75 -0
  221. package/bc/Screens/Room/CollegeDetention/CollegeDetention.d.ts +98 -0
  222. package/bc/Screens/Room/CollegeEntrance/CollegeEntrance.d.ts +54 -0
  223. package/bc/Screens/Room/CollegeTeacher/CollegeTeacher.d.ts +71 -0
  224. package/bc/Screens/Room/CollegeTennis/CollegeTennis.d.ts +47 -0
  225. package/bc/Screens/Room/CollegeTheater/CollegeTheater.d.ts +100 -0
  226. package/bc/Screens/Room/Crafting/Crafting.d.ts +213 -0
  227. package/bc/Screens/Room/DailyJob/DailyJob.d.ts +111 -0
  228. package/bc/Screens/Room/Empty/Empty.d.ts +84 -0
  229. package/bc/Screens/Room/Gambling/Gambling.d.ts +269 -0
  230. package/bc/Screens/Room/Infiltration/Infiltration.d.ts +223 -0
  231. package/bc/Screens/Room/InfiltrationPerks/InfiltrationPerks.d.ts +42 -0
  232. package/bc/Screens/Room/Introduction/Introduction.d.ts +195 -0
  233. package/bc/Screens/Room/KidnapLeague/KidnapLeague.d.ts +253 -0
  234. package/bc/Screens/Room/LARP/LARP.d.ts +39 -0
  235. package/bc/Screens/Room/Magic/Magic.d.ts +199 -0
  236. package/bc/Screens/Room/MagicSchoolEscape/MagicSchoolEscape.d.ts +36 -0
  237. package/bc/Screens/Room/MagicSchoolLaboratory/MagicSchoolLaboratory.d.ts +170 -0
  238. package/bc/Screens/Room/MaidQuarters/MaidQuarters.d.ts +305 -0
  239. package/bc/Screens/Room/MainHall/MainHall.d.ts +255 -0
  240. package/bc/Screens/Room/Management/Management.d.ts +544 -0
  241. package/bc/Screens/Room/MovieStudio/MovieStudio.d.ts +178 -0
  242. package/bc/Screens/Room/Nursery/Nursery.d.ts +85 -0
  243. package/bc/Screens/Room/Pandora/Pandora.d.ts +348 -0
  244. package/bc/Screens/Room/PandoraPrison/PandoraPrison.d.ts +180 -0
  245. package/bc/Screens/Room/Photographic/Photographic.d.ts +53 -0
  246. package/bc/Screens/Room/Platform/Platform.d.ts +1730 -0
  247. package/bc/Screens/Room/PlatformDialog/PlatformDialog.d.ts +3966 -0
  248. package/bc/Screens/Room/PlatformIntro/PlatformIntro.d.ts +21 -0
  249. package/bc/Screens/Room/PlatformProfile/PlatformProfile.d.ts +62 -0
  250. package/bc/Screens/Room/Poker/Poker.d.ts +141 -0
  251. package/bc/Screens/Room/Poker/PokerHandValue.d.ts +65 -0
  252. package/bc/Screens/Room/Prison/Prison.d.ts +118 -0
  253. package/bc/Screens/Room/Private/Private.d.ts +781 -0
  254. package/bc/Screens/Room/PrivateBed/PrivateBed.d.ts +78 -0
  255. package/bc/Screens/Room/PrivateRansom/PrivateRansom.d.ts +28 -0
  256. package/bc/Screens/Room/Sarah/Sarah.d.ts +162 -0
  257. package/bc/Screens/Room/Shibari/Shibari.d.ts +162 -0
  258. package/bc/Screens/Room/Shop/Shop.d.ts +162 -0
  259. package/bc/Screens/Room/SlaveMarket/SlaveMarket.d.ts +90 -0
  260. package/bc/Screens/Room/Stable/Stable.d.ts +236 -0
  261. package/bc/Scripts/Activity.d.ts +270 -0
  262. package/bc/Scripts/AfkTimer.d.ts +43 -0
  263. package/bc/Scripts/Animation.d.ts +81 -0
  264. package/bc/Scripts/Asset.d.ts +216 -0
  265. package/bc/Scripts/Audio.d.ts +105 -0
  266. package/bc/Scripts/Character.d.ts +495 -0
  267. package/bc/Scripts/CharacterName.d.ts +1 -0
  268. package/bc/Scripts/ColorPicker.d.ts +155 -0
  269. package/bc/Scripts/Common.d.ts +499 -0
  270. package/bc/Scripts/CommonDraw.d.ts +34 -0
  271. package/bc/Scripts/ControllerSupport.d.ts +107 -0
  272. package/bc/Scripts/Dialog.d.ts +970 -0
  273. package/bc/Scripts/DictionaryBuilder.d.ts +210 -0
  274. package/bc/Scripts/Drawing.d.ts +581 -0
  275. package/bc/Scripts/Drawing3D.d.ts +21 -0
  276. package/bc/Scripts/DynamicDraw.d.ts +310 -0
  277. package/bc/Scripts/Element.d.ts +154 -0
  278. package/bc/Scripts/ExtendedItem.d.ts +339 -0
  279. package/bc/Scripts/GLDraw.d.ts +223 -0
  280. package/bc/Scripts/Game.d.ts +61 -0
  281. package/bc/Scripts/GameLog.d.ts +87 -0
  282. package/bc/Scripts/Graph.d.ts +46 -0
  283. package/bc/Scripts/Import.d.ts +7 -0
  284. package/bc/Scripts/Inventory.d.ts +509 -0
  285. package/bc/Scripts/MiniGame.d.ts +30 -0
  286. package/bc/Scripts/ModularItem.d.ts +286 -0
  287. package/bc/Scripts/Mouse.d.ts +34 -0
  288. package/bc/Scripts/NPC.d.ts +105 -0
  289. package/bc/Scripts/Notification.d.ts +120 -0
  290. package/bc/Scripts/PortalLink.d.ts +159 -0
  291. package/bc/Scripts/Property.d.ts +98 -0
  292. package/bc/Scripts/Reputation.d.ts +36 -0
  293. package/bc/Scripts/Server.d.ts +239 -0
  294. package/bc/Scripts/Skill.d.ts +107 -0
  295. package/bc/Scripts/Speech.d.ts +145 -0
  296. package/bc/Scripts/Struggle.d.ts +357 -0
  297. package/bc/Scripts/Testing.d.ts +30 -0
  298. package/bc/Scripts/Text.d.ts +92 -0
  299. package/bc/Scripts/TextItem.d.ts +65 -0
  300. package/bc/Scripts/TightenLoosenItem.d.ts +31 -0
  301. package/bc/Scripts/Timer.d.ts +62 -0
  302. package/bc/Scripts/Translation.d.ts +101 -0
  303. package/bc/Scripts/TypedItem.d.ts +242 -0
  304. package/bc/Scripts/Validation.d.ts +324 -0
  305. package/bc/Scripts/VariableHeight.d.ts +108 -0
  306. package/bc/Scripts/VibratorMode.d.ts +209 -0
  307. package/bc/Scripts/lib/LZString.d.ts +12 -0
  308. package/bc/Scripts/lib/three/FBXLoader.d.ts +0 -0
  309. package/bc/Scripts/lib/three/GLTFLoader.d.ts +0 -0
  310. package/bc/Scripts/lib/webgl/resources/m4.d.ts +0 -0
  311. package/bc/Typedef.d.ts +3933 -0
  312. package/package.json +19 -0
@@ -0,0 +1,875 @@
1
+ interface AssetGroupDefinition {
2
+ Asset: (AssetDefinition | string)[];
3
+ Group: AssetGroupName;
4
+ ParentGroup?: AssetGroupName;
5
+ Category?: 'Appearance' | 'Item' | 'Script';
6
+ /** Whether the group should have an asset selected at random at character creation. */
7
+ Default?: boolean;
8
+ IsRestraint?: boolean;
9
+ /** Whether the group is allowed to have no asset. Used for body-related characteristics. */
10
+ AllowNone?: boolean;
11
+ AllowColorize?: boolean;
12
+ AllowCustomize?: boolean;
13
+ /** @see {AssetDefinition.Random} */
14
+ Random?: boolean;
15
+ Color?: string[];
16
+ ParentSize?: AssetGroupName;
17
+ ParentColor?: AssetGroupName;
18
+ Clothing?: boolean;
19
+ Underwear?: boolean;
20
+ BodyCosplay?: boolean;
21
+ Hide?: AssetGroupName[];
22
+ Block?: AssetGroupItemName[];
23
+ Zone?: [number, number, number, number][];
24
+ SetPose?: AssetPoseName[];
25
+ AllowPose?: AssetPoseName[];
26
+ AllowExpression?: ExpressionName[];
27
+ Effect?: EffectName[];
28
+ MirrorGroup?: AssetGroupName;
29
+ RemoveItemOnRemove?: { Group: AssetGroupItemName, Name: string, Type?: string }[];
30
+ Priority?: number;
31
+ Left?: number;
32
+ Top?: number;
33
+ FullAlpha?: boolean;
34
+ Blink?: boolean;
35
+ InheritColor?: AssetGroupName;
36
+ FreezeActivePose?: AssetPoseCategory[];
37
+ PreviewZone?: [number, number, number, number];
38
+ DynamicGroupName?: AssetGroupName;
39
+ MirrorActivitiesFrom?: AssetGroupItemName;
40
+
41
+ /** The group actually recieving arousal events. Used to proxy around a group that does not have activities enabled (and thus arousal settings) */
42
+ ArousalZone?: AssetGroupItemName;
43
+ ColorSuffix?: Record<string, string>;
44
+ ExpressionPrerequisite?: AssetPrerequisite[];
45
+ HasPreviewImages?: boolean;
46
+ }
47
+
48
+ type AssetBonusName = "KidnapDomination" | "KidnapSneakiness" | "KidnapBruteForce";
49
+
50
+ interface AssetDefinition {
51
+ /** The asset's internal name. */
52
+ Name: string,
53
+
54
+ /**
55
+ * Link an asset to another.
56
+ *
57
+ * Used for the random appearance generator, to ensure combined assets match.
58
+ * Eyes, as well as the student tops and bottoms make use of it.
59
+ */
60
+ ParentItem?: string;
61
+
62
+ /** The group the asset belongs to. Mainly useful to inherit the body size. */
63
+ ParentGroup?: AssetGroupName | null;
64
+
65
+ /**
66
+ * Whether the asset is enabled or not. Defaults to true.
67
+ *
68
+ * A disabled asset cannot be used on a character.
69
+ * They will also never be used as part of a random appearance.
70
+ */
71
+ Enable?: boolean;
72
+
73
+ /** Whether the asset appears visually. Defaults to true. */
74
+ Visible?: boolean;
75
+
76
+ /** A list of screens where current asset won't be shown. */
77
+ NotVisibleOnScreen?: string[];
78
+
79
+ /** Whether the asset can be worn. Defaults to true. An unwearable asset will not actually end up in the group it's used on. */
80
+ Wear?: boolean;
81
+
82
+ /** Applying that asset triggers the following activity */
83
+ Activity?: ActivityName;
84
+
85
+ /** Activities that wearing this asset enables. */
86
+ AllowActivity?: ActivityName[];
87
+
88
+ /** Array of sound effects for each one of the item's allowed activities */
89
+ ActivityAudio?: string[];
90
+
91
+ /** The expression on the targeted character */
92
+ ActivityExpression?: Partial<Record<ActivityName, ExpressionTrigger[]>>;
93
+
94
+ /** A list of groups that should still be allowed to be acted on even though they should be blocked by the asset. */
95
+ AllowActivityOn?: AssetGroupItemName[];
96
+
97
+ /** Identifies a set of assets that's part of the same group for shopping purposes. Buying one will give access to all of them. */
98
+ BuyGroup?: string;
99
+
100
+ /** Identifies a BuyGroup that, we bought one item of, will cause that asset to also be owned, without showing it in the shopping list. Only used by the SpankingToys */
101
+ PrerequisiteBuyGroups?: string[];
102
+
103
+ /** The list of effects wearing the asset causes on the character */
104
+ Effect?: EffectName[];
105
+
106
+ /** Whether wearing the asset gives a bonus in the Kidnap minigame. */
107
+ Bonus?: AssetBonusName;
108
+
109
+ /** A list of group names the asset blocks access to. */
110
+ Block?: AssetGroupItemName[];
111
+
112
+ /**
113
+ * A list of group names the asset restores access to.
114
+ *
115
+ * Mostly used for clothes, and might be considered a duplicate of AllowActivityOn.
116
+ */
117
+ Expose?: AssetGroupItemName[];
118
+
119
+ /** A list of group names that get hidden when the asset is worn. */
120
+ Hide?: AssetGroupName[];
121
+
122
+ /** A list of asset names that get hidden when the asset is worn. */
123
+ HideItem?: string[];
124
+
125
+ /** A list of asset names that get shown when the asset is worn. Only useful when combined with Hide */
126
+ HideItemExclude?: string[];
127
+
128
+ /**
129
+ * A list of body group that becomes required when this asset is worn.
130
+ *
131
+ * Used by the random appearance generator to know that it should also pick a random asset
132
+ * from the required group when that asset is used.
133
+ */
134
+ Require?: AssetGroupBodyName[];
135
+
136
+ /** A pose that the character should change to when wearing the asset. */
137
+ SetPose?: AssetPoseName[];
138
+
139
+ /**
140
+ * The poses actually that the asset supports.
141
+ *
142
+ * Used when building the file paths for the asset's layers.
143
+ */
144
+ AllowPose?: AssetPoseName[];
145
+
146
+ /** A list of poses that hide the asset when they get set. */
147
+ HideForPose?: AssetPoseName[];
148
+
149
+ /**
150
+ * A mapping of poses for the purpose of fallbacks.
151
+ *
152
+ * If the current pose appears in the mapping, it will result in the mapped pose name
153
+ * being used when generating the file paths for the asset's layers.
154
+ *
155
+ * Works like DynamicGroupName, but for poses.
156
+ */
157
+ PoseMapping?: AssetPoseMapping;
158
+
159
+ /** A list of poses that wearing the asset also enables. */
160
+ AllowActivePose?: AssetPoseName[];
161
+
162
+ WhitelistActivePose?: AssetPoseName[];
163
+
164
+ /**
165
+ * The cost of the asset in the shop. Defaults to 0.
166
+ *
167
+ * A value of -1 makes the asset unavailable, a value of 0 makes it always available.
168
+ */
169
+ Value?: number;
170
+
171
+ /** A measure of how hard it is to remove the asset. Defaults to 0. */
172
+ Difficulty?: number;
173
+
174
+ SelfBondage?: number;
175
+ SelfUnlock?: boolean;
176
+ ExclusiveUnlock?: boolean;
177
+
178
+ /** Whether the asset can be selected for a random appearance. Defaults to true. */
179
+ Random?: boolean;
180
+
181
+ /** Whether the asset gets removed automatically when the character log in. Defaults to false. */
182
+ RemoveAtLogin?: boolean;
183
+
184
+ Time?: number;
185
+ /** Enables advanced layer visibility on the asset. See {@link AssetLayerDefinition.Visibility} for more information. */
186
+ LayerVisibility?: boolean;
187
+ RemoveTime?: number;
188
+ RemoveTimer?: number;
189
+ MaxTimer?: number;
190
+
191
+ /** The drawing priority of the asset. Defaults to the asset's group priority. */
192
+ Priority?: number;
193
+ Left?: number;
194
+ Top?: number;
195
+ Height?: number;
196
+ Zoom?: number;
197
+ Alpha?: AlphaDefinition[];
198
+ Prerequisite?: AssetPrerequisite | AssetPrerequisite[];
199
+ Extended?: boolean;
200
+ AlwaysExtend?: boolean;
201
+ AlwaysInteract?: boolean;
202
+ AllowLock?: boolean;
203
+ IsLock?: boolean;
204
+ PickDifficulty?: number | null;
205
+
206
+ /** Whether the asset is only available to owners. */
207
+ OwnerOnly?: boolean;
208
+
209
+ /** Whether the asset is only available to lovers. */
210
+ LoverOnly?: boolean;
211
+
212
+ /** Whether the asset is only available to the family. */
213
+ FamilyOnly?: boolean;
214
+
215
+ /** A list of facial expression using the asset causes to the character */
216
+ ExpressionTrigger?: ExpressionTrigger[];
217
+
218
+ /** A list of assets to also remove when the asset is taken off. */
219
+ RemoveItemOnRemove?: { Name: string, Group: AssetGroupItemName, Type?: string }[];
220
+
221
+ AllowEffect?: EffectName[];
222
+ AllowBlock?: AssetGroupItemName[];
223
+ AllowHide?: AssetGroupItemName[];
224
+ AllowHideItem?: string[];
225
+ AllowType?: string[];
226
+ AllowTighten?: boolean;
227
+ DefaultColor?: ItemColor;
228
+ Opacity?: number;
229
+ MinOpacity?: number;
230
+ MaxOpacity?: number;
231
+ Audio?: string;
232
+
233
+ /** A list of categories. Used to prevent the asset to be used, per chatroom settings */
234
+ Category?: AssetCategory[];
235
+
236
+ Fetish?: FetishName[];
237
+ ArousalZone?: AssetGroupItemName;
238
+ IsRestraint?: boolean;
239
+ BodyCosplay?: boolean;
240
+ OverrideBlinking?: boolean;
241
+ DialogSortOverride?: DialogSortOrder;
242
+ DynamicDescription?: (C: Character) => string;
243
+ DynamicPreviewImage?: (C: Character) => string;
244
+ DynamicAllowInventoryAdd?: (C: Character) => boolean;
245
+ DynamicName?: (C: Character) => string;
246
+
247
+ /** The real group name used when building the file paths for the asset's layers */
248
+ DynamicGroupName?: AssetGroupName;
249
+
250
+ DynamicActivity?: (C: Character) => ActivityName | null | undefined;
251
+ DynamicAudio?: (C: Character) => string;
252
+
253
+ /**
254
+ * Whether the asset is restricted to a given character.
255
+ *
256
+ * When the asset is added to a character, the member number of the character using the
257
+ * asset will be stored along in its properties, and all subsequent modifications will
258
+ * only be possible for that character.
259
+ */
260
+ CharacterRestricted?: boolean;
261
+ AllowRemoveExclusive?: boolean;
262
+
263
+ /** The group the asset should inherit its color from. */
264
+ InheritColor?: AssetGroupName;
265
+
266
+ DynamicBeforeDraw?: boolean;
267
+ DynamicAfterDraw?: boolean;
268
+ DynamicScriptDraw?: boolean;
269
+ HasType?: boolean;
270
+ AllowLockType?: AssetLockType[];
271
+
272
+ /** Whether that asset is drawn colorized, or uses the color name in its file asset */
273
+ AllowColorize?: boolean;
274
+
275
+ /** Whether the color picker shows a "Whole Item" layer. Defaults to true. */
276
+ AllowColorizeAll?: boolean;
277
+
278
+ /** A list of online spaces (eg. Asylum) where the asset is automatically available */
279
+ AvailableLocations?: string[];
280
+
281
+ OverrideHeight?: AssetOverrideHeight;
282
+ FreezeActivePose?: AssetPoseCategory[];
283
+
284
+ /** Whether the game should auto-add a Lock layer to the asset. */
285
+ DrawLocks?: boolean;
286
+
287
+ AllowExpression?: ExpressionName[];
288
+ MirrorExpression?: AssetGroupBodyName;
289
+
290
+ /** Whether the asset is drawn at an absolute position. */
291
+ FixedPosition?: boolean;
292
+
293
+ CustomBlindBackground?: string;
294
+
295
+ /** The list of layers for the asset. */
296
+ Layer?: AssetLayerDefinition[];
297
+
298
+ Archetype?: ExtendedArchetype;
299
+
300
+ /** A list of attributes the asset has */
301
+ Attribute?: AssetAttribute[];
302
+
303
+ /** A list of attributes that causes this one to become hidden. */
304
+ HideItemAttribute?: AssetAttribute[];
305
+
306
+ /**
307
+ * A list of icons the asset preview should show.
308
+ * Only used by the handheld items, as the game handles the other icons automatically.
309
+ */
310
+ PreviewIcons?: InventoryIcon[];
311
+
312
+ Tint?: TintDefinition[];
313
+ DefaultTint?: string;
314
+ Gender?: "F" | "M";
315
+
316
+ /**
317
+ * An identifier that marks the asset as being the same for the purpose of crafting.
318
+ *
319
+ * Do note that this expects all the assets in the craft group to have compatible layers, color-wise and type-wise.
320
+ */
321
+ CraftGroup?: string;
322
+
323
+ /** A list of prerequisite checks that must pass for the group's expressions to be selectable */
324
+ ExpressionPrerequisite?: AssetPrerequisite[];
325
+
326
+ ColorSuffix?: Record<string, string>;
327
+ }
328
+
329
+ interface AssetLayerDefinition {
330
+ /** The layer's name */
331
+ Name: string;
332
+
333
+ /** Whether that layer is drawn colorized, or uses the color as part of its image file name */
334
+ AllowColorize?: boolean;
335
+
336
+ /** Uses the color of the named layer. */
337
+ CopyLayerColor?: string;
338
+
339
+ /** The color group that layer is part of. Layers part of the same color group get a selector in the Color Picker UI */
340
+ ColorGroup?: string;
341
+
342
+ /** Whether the layer is hidden in the Color Picker UI. Defaults to false. */
343
+ HideColoring?: boolean;
344
+ AllowTypes?: string[];
345
+ HasType?: boolean;
346
+
347
+ /**
348
+ * This can be used to make a layer invisible depending on certain conditions, provided the {@link AssetDefinition.LayerVisibility} is set correctly.
349
+ *
350
+ * Here's what each option means:
351
+ * - Player: Invisible to the player.
352
+ * - AllExceptPlayerDialog: Invisible to the player when in a dialog.
353
+ * - Others: Invisible to others.
354
+ * - OthersExceptDialog: Invisible to others in a dialog.
355
+ * - Owner: Invisible to your owner.
356
+ * - Lovers: Invisible to your lovers.
357
+ * - Mistresses: Invisible to club mistresses.
358
+ */
359
+ Visibility?: "Player" | "AllExceptPlayerDialog" | "Others" | "OthersExceptDialog" | "Owner" | "Lovers" | "Mistresses";
360
+
361
+ /** The group the layer belongs to. Mainly useful to inherit the body's size. */
362
+ ParentGroup?: AssetGroupName | null,
363
+
364
+ /** A list of poses that layer supports. */
365
+ AllowPose?: AssetPoseName[];
366
+
367
+ /** The drawing priority for that layer. Defaults to the asset's priority. */
368
+ Priority?: number;
369
+
370
+ /** The name of the group to inherit the color from. */
371
+ InheritColor?: AssetGroupName;
372
+
373
+ Alpha?: AlphaDefinition[],
374
+ Left?: number;
375
+ Top?: number;
376
+ HideAs?: { Group: AssetGroupName, Asset?: string };
377
+
378
+ /** Whether the layer will be drawn at a fixed position. */
379
+ FixedPosition?: boolean;
380
+
381
+ /** Whether the layer uses an image. Defaults to true. */
382
+ HasImage?: boolean;
383
+
384
+ Opacity?: number;
385
+ MinOpacity?: number;
386
+ MaxOpacity?: number;
387
+
388
+ /** Set canvas globalCompositeOperation for current layer.
389
+ * Use "destination-in" if you want to use layer as an alpha mask.
390
+ * Note that game uses WebGL when available, so you might need to implement
391
+ * similar blending mode if it's not done already (currently in GLDrawImage() in GLDraw.js).
392
+ */
393
+ BlendingMode?: GlobalCompositeOperation;
394
+
395
+ /** Specify that this is (one of) the asset's lock layer. See DrawsLock at the asset level. */
396
+ LockLayer?: boolean;
397
+
398
+ MirrorExpression?: AssetGroupName;
399
+ HideForPose?: (AssetPoseName | "")[];
400
+ PoseMapping?: AssetPoseMapping;
401
+ AllowModuleTypes?: string[];
402
+ ModuleType?: string[];
403
+ /* Specifies that this layer should not be drawn if the character is wearing any item with the given attributes */
404
+ HideForAttribute?: AssetAttribute[];
405
+ /* Specifies that this layer should not be drawn unless the character is wearing an item with one of the given attributes */
406
+ ShowForAttribute?: AssetAttribute[];
407
+ ColorSuffix?: Record<string, string>;
408
+ }
409
+
410
+ type ExtendedArchetype = "modular" | "typed" | "vibrating" | "variableheight" | "text";
411
+
412
+ /**
413
+ * An object containing extended item configurations keyed by group name.
414
+ */
415
+ type ExtendedItemMainConfig = Partial<Record<AssetGroupName, ExtendedItemGroupConfig>>;
416
+
417
+ /**
418
+ * An object containing extended item definitions for a group.
419
+ * Maps asset names within the group to their extended item configuration
420
+ */
421
+ type ExtendedItemGroupConfig = Record<string, AssetArchetypeConfig>;
422
+
423
+ /** A union of all (non-abstract) extended item configs */
424
+ type AssetArchetypeConfig = TypedItemConfig | ModularItemConfig | VibratingItemConfig | VariableHeightConfig | TextItemConfig;
425
+
426
+ /** A union of all (non-abstract) extended item datas */
427
+ type AssetArchetypeData = TypedItemData | ModularItemData | VibratingItemData | VariableHeightData | TextItemData;
428
+
429
+ interface ExtendedItemConfig<OptionType extends ExtendedItemOption> {
430
+ /** The archetype of the extended item config */
431
+ Archetype: ExtendedArchetype;
432
+ /**
433
+ * The chat message setting for the item. This can be provided to allow
434
+ * finer-grained chatroom message keys for the item.
435
+ */
436
+ ChatSetting?: ExtendedItemChatSetting;
437
+ /** A record containing various dialog keys used by the extended item screen */
438
+ DialogPrefix?: ExtendedItemCapsDialog<OptionType>;
439
+ /**
440
+ * A recond containing functions that are run on load, click, draw, exit, and validate, with the original archetype function
441
+ * and parameters passed on to them. If undefined, these are ignored.
442
+ * Note that scripthook functions must be loaded before `Female3DCGExtended.js` in `index.html`.
443
+ */
444
+ ScriptHooks?: ExtendedItemCapsScriptHooksStruct<any, OptionType>;
445
+ /** An array of the chat message tags that should be included in the item's chatroom messages. */
446
+ ChatTags?: CommonChatTags[];
447
+ /** Contains custom dictionary entries in the event that the base ones do not suffice. */
448
+ Dictionary?: ExtendedItemDictionaryCallback<OptionType>[];
449
+ /**
450
+ * To-be initialized properties independent of the selected item module(s).
451
+ * Relevant if there are properties that are (near) exclusively managed by {@link ExtendedItemConfig.ScriptHooks} functions.
452
+ */
453
+ BaselineProperty?: ItemPropertiesNoArray;
454
+ /** A boolean indicating whether or not images should be drawn for the option and/or module selection screen. */
455
+ DrawImages?: boolean;
456
+ /** The group name and asset name of a configuration to copy - useful if multiple items share the same config */
457
+ CopyConfig?: { GroupName?: AssetGroupName, AssetName: string };
458
+ /** An interface with element-specific drawing data for a given screen. */
459
+ DrawData?: ExtendedItemConfigDrawData<{}>;
460
+ }
461
+
462
+ /** Defines a single (partially parsed) extended item option */
463
+ interface ExtendedItemOptionConfig {
464
+ /** The name of the type - used for the preview icon and the translation key in the CSV */
465
+ Name: string;
466
+ /** The required bondage skill level for this option */
467
+ BondageLevel?: number;
468
+ /** The required self-bondage skill level for this option when using it on oneself */
469
+ SelfBondageLevel?: number;
470
+ /** The required prerequisites that must be met before this option can be selected */
471
+ Prerequisite?: AssetPrerequisite | AssetPrerequisite[];
472
+ /** A custom background for this option that overrides the default */
473
+ CustomBlindBackground?: string;
474
+ /** Whether the option permits locking - if not set, defaults to the AllowLock property of the parent asset */
475
+ AllowLock?: boolean;
476
+ /**
477
+ * Whether or not it should be possible to change from this option to another
478
+ * option while the item is locked (if set to `false`, the player must be able to unlock the item to change its type) -
479
+ * defaults to `true`
480
+ */
481
+ ChangeWhenLocked?: boolean;
482
+ /** The Property object to be applied when this option is used */
483
+ Property?: ItemProperties;
484
+ /**
485
+ * Trigger this expression when changing to this option
486
+ *
487
+ * FIXME: **Currently broken!**
488
+ */
489
+ Expression?: ExpressionTrigger[];
490
+ /** Whether or not the option should open a subscreen in the extended item menu */
491
+ HasSubscreen?: boolean;
492
+ /** Whether or not this option can be selected by the wearer */
493
+ AllowSelfSelect?: boolean;
494
+ /** A buy group to check for that option to be available */
495
+ PrerequisiteBuyGroup?: string;
496
+ /** If the option has an archetype, sets the config to use */
497
+ ArchetypeConfig?: null | AssetArchetypeConfig;
498
+ }
499
+
500
+ /** Defines a single (fully parsed) extended item option */
501
+ interface ExtendedItemOption extends Omit<ExtendedItemOptionConfig, "ArchetypeConfig"> {
502
+ /**
503
+ * A unique identifier of the struct type.
504
+ * Its value must be automatically assigned if it's an archetypical extended item option.
505
+ * If it's not, *e.g.* for a custom script hook button that does not alter the item's state,
506
+ * then its value must be set `"ExtendedItemOption"`.
507
+ */
508
+ OptionType: "ExtendedItemOption" | "TypedItemOption" | "VariableHeightOption" | "ModularItemOption" | "VibratingItemOption" | "TextItemOption";
509
+ /** The extended item data associated with this option */
510
+ ParentData: ExtendedItemData<any>;
511
+ /** The extended item data of the subscreen associated with this option (if any) */
512
+ ArchetypeData?: null | AssetArchetypeData;
513
+ }
514
+
515
+ /**
516
+ * An object containing data about the type change that triggered the chat message
517
+ * @param {Character} C - A reference to the character wearing the item
518
+ * @param {OptionType} previousOption - The previously selected type option
519
+ * @param {OptionType} newOption - The newly selected type option
520
+ * @param {number} previousIndex - The index of the previously selected type option in the item's options
521
+ * config or, depending on the archetype, -1 no such item option config exists.
522
+ * @param {number} newIndex - The index of the newly selected type option in the item's options config or,
523
+ * depending on the archetype, -1 no such item option config exists.
524
+ * @template OptionType
525
+ */
526
+ interface ExtendedItemChatData<OptionType extends ExtendedItemOption> {
527
+ C: Character;
528
+ previousOption: OptionType;
529
+ newOption: OptionType;
530
+ previousIndex: number;
531
+ newIndex: number;
532
+ }
533
+
534
+ /**
535
+ * @param {OptionType} chatData - An object containing data about the type change that triggered the chat message
536
+ * @returns {string} - The chat prefix that should be used for this type change
537
+ * @template OptionType
538
+ */
539
+ type ExtendedItemChatCallback<OptionType extends ExtendedItemOption> = (
540
+ chatData: ExtendedItemChatData<OptionType>,
541
+ ) => string;
542
+
543
+ /**
544
+ * @param {Character} C - The selected NPC
545
+ * @param {OptionType} Option - The currently selected extended item option
546
+ * @param {OptionType} PreviousOption - The previously selected extended item option
547
+ * @returns {string} - The chat prefix that should be used for this type change
548
+ * @template OptionType
549
+ */
550
+ type ExtendedItemNPCCallback<OptionType extends ExtendedItemOption> = (
551
+ C: Character,
552
+ Option: OptionType,
553
+ PreviousOption: OptionType,
554
+ ) => string;
555
+
556
+ //#endregion
557
+
558
+ //#region Typed items
559
+
560
+
561
+ /** Partially parsed extended item option subtype for typed items */
562
+ interface TypedItemOptionConfig extends ExtendedItemOptionConfig {
563
+ Property?: Omit<ItemProperties, "Type">;
564
+ /** Whether or not this option can be selected randomly */
565
+ Random?: boolean;
566
+ /** Whether this option should be picked as default for NPC's (rather than just going for the first option) */
567
+ NPCDefault?: boolean;
568
+ }
569
+
570
+ /** Extended item option subtype for typed items */
571
+ interface TypedItemOption extends Omit<TypedItemOptionConfig, "ArchetypeConfig">, ExtendedItemOption {
572
+ OptionType: "TypedItemOption";
573
+ Property: ItemProperties & Pick<Required<ItemProperties>, "Type">;
574
+ ParentData: TypedItemData;
575
+ }
576
+
577
+ type TypedItemChatSetting = "default" | "fromTo" | "silent";
578
+
579
+ /** An object defining all of the required configuration for registering a typed item */
580
+ interface TypedItemConfig extends ExtendedItemConfig<TypedItemOption> {
581
+ Archetype: "typed";
582
+ /** The list of extended item options available for the item */
583
+ Options?: TypedItemOptionConfig[];
584
+ /** The optional text configuration for the item. Custom text keys can be configured within this object */
585
+ DialogPrefix?: {
586
+ /** The dialogue prefix for the player prompt that is displayed on each module's menu screen */
587
+ Header?: string;
588
+ /** The dialogue prefix for the name of each option */
589
+ Option?: string;
590
+ /** The dialogue prefix that will be used for each of the item's chatroom messages */
591
+ Chat?: string | ExtendedItemChatCallback<TypedItemOption>;
592
+ /** The prefix used for dialog keys representing an NPC's reactions to item type changes */
593
+ Npc?: string | ExtendedItemNPCCallback<TypedItemOption>;
594
+ };
595
+ /**
596
+ * The chat message setting for the item. This can be provided to allow
597
+ * finer-grained chatroom message keys for the item. Defaults to {@link TypedItemChatSetting.TO_ONLY}
598
+ */
599
+ ChatSetting?: TypedItemChatSetting;
600
+ /**
601
+ * A boolean indicating whether or not the item's type can be changed while the
602
+ * item is locked (if set to `false`, the player must be able to unlock the item to change its type). Defaults to `true`
603
+ */
604
+ ChangeWhenLocked?: boolean;
605
+ /**
606
+ * A recond containing functions that are run on load, click, draw, exit, validate and publishaction,
607
+ * with the original archetype function and parameters passed on to them. If undefined, these are ignored.
608
+ * Note that scripthook functions must be loaded before `Female3DCGExtended.js` in `index.html`.
609
+ */
610
+ ScriptHooks?: ExtendedItemCapsScriptHooksStruct<TypedItemData, TypedItemOption>;
611
+ DrawData?: ExtendedItemConfigDrawData<Partial<ElementMetaData.Typed>>;
612
+ }
613
+
614
+ /**
615
+ * @param {object} chatData - An object containing data about the type change that triggered the chat message
616
+ * @param {Character} chatData.C - A reference to the character wearing the item
617
+ * @param {ExtendedItemOption} chatData.previousOption - The previously selected type option
618
+ * @param {ExtendedItemOption} chatData.newOption - The newly selected type option
619
+ * @param {number} chatData.previousIndex - The index of the previously selected type option in the item's options
620
+ * config
621
+ * @param {number} chatData.newIndex - The index of the newly selected type option in the item's options config
622
+ * @returns {[{ Tag: string, Text: string }]} - The dictionary entry to append to the dictionary.
623
+ */
624
+ type ExtendedItemDictionaryCallback<OptionType extends ExtendedItemOption> = (
625
+ dictionary: DictionaryBuilder,
626
+ chatData: ExtendedItemChatData<OptionType>
627
+ ) => void;
628
+
629
+ //#endregion
630
+
631
+ //#region Modular items
632
+
633
+ /** An object defining all of the required configuration for registering a modular item */
634
+ interface ModularItemConfig extends ExtendedItemConfig<ModularItemOption> {
635
+ Archetype: "modular";
636
+ /** The module definitions for the item */
637
+ Modules?: ModularItemModuleConfig[];
638
+ /**
639
+ * The item's chatroom message setting. Determines the level of
640
+ * granularity for chatroom messages when the item's module values change.
641
+ */
642
+ ChatSetting?: ModularItemChatSetting;
643
+ /**
644
+ * A boolean indicating whether or not the item's type can be changed while the
645
+ * item is locked (if set to false, the player must be able to unlock the item to change its type). Defaults to `true`.
646
+ * Note that {@link ModularItemOption.ChangeWhenLocked} takes priority over this value if specified.
647
+ */
648
+ ChangeWhenLocked?: boolean;
649
+ /** The optional text configuration for the item. Custom text keys can be configured within this object */
650
+ DialogPrefix?: {
651
+ /** The dialogue prefix for the player prompt that is displayed on each module's menu screen */
652
+ Header?: string;
653
+ /** The dialogue prefix for the name of each module */
654
+ Module?: string;
655
+ /** The dialogue prefix for the name of each option */
656
+ Option?: string;
657
+ /** The dialogue prefix that will be used for each of the item's chatroom messages */
658
+ Chat?: string | ExtendedItemChatCallback<ModularItemOption>;
659
+ };
660
+ /**
661
+ * A recond containing functions that are run on load, click, draw, exit, and validate, with the original archetype function
662
+ * and parameters passed on to them. If undefined, these are ignored.
663
+ * Note that scripthook functions must be loaded before `Female3DCGExtended.js` in `index.html`.
664
+ */
665
+ ScriptHooks?: ExtendedItemCapsScriptHooksStruct<ModularItemData, ModularItemOption>;
666
+ DrawData?: ExtendedItemConfigDrawData<Partial<ElementMetaData.Modular>>;
667
+ }
668
+
669
+ type ModularItemChatSetting = "default" | "perModule";
670
+
671
+ /** A (partially parsed) object describing a single module for a modular item. */
672
+ interface ModularItemModuleConfig {
673
+ /** The name of this module - this is usually a human-readable string describing what the
674
+ * module represents (e.g. Straps). It is used for display text keys, and should be unique across all of the modules
675
+ * for the item.
676
+ */
677
+ Name: string;
678
+ /** The unique key for this module - this is used as a prefix to designate option names. Each
679
+ * options in the module will be named with the module's key, followed by the index of the option within the module's
680
+ * Options array. Keys should be alphabetical only (a-z, A-Z)
681
+ */
682
+ Key: string;
683
+ /** The list of option definitions that can be chosen within this module. */
684
+ Options: ModularItemOptionConfig[];
685
+ /** Whether or not this module can be selected by the wearer */
686
+ AllowSelfSelect?: boolean;
687
+ /** A unique (automatically assigned) identifier of the struct type */
688
+ OptionType?: "ModularItemModule";
689
+ /** A boolean indicating whether or not images should be drawn within this particular module. */
690
+ DrawImages?: boolean;
691
+ DrawData?: ExtendedItemConfigDrawData<Partial<ElementMetaData.Modular>>;
692
+ }
693
+
694
+ /** An object describing a single module for a modular item. */
695
+ interface ModularItemModule extends Omit<ModularItemModuleConfig, "DrawData"> {
696
+ /** A unique (automatically assigned) identifier of the struct type */
697
+ OptionType: "ModularItemModule";
698
+ /** The list of option definitions that can be chosen within this module. */
699
+ Options: ModularItemOption[];
700
+ /** A boolean indicating whether or not images should be drawn within this particular module. */
701
+ DrawImages: boolean;
702
+ drawData: ExtendedItemDrawData<ElementMetaData.Typed>;
703
+ }
704
+
705
+ /** Partially parsed extended item option subtype for modular items */
706
+ interface ModularItemOptionConfig extends Omit<ExtendedItemOptionConfig, "Name"> {
707
+ /** The additional difficulty associated with this option - defaults to 0 */
708
+ Difficulty?: number;
709
+ /** A list of groups that this option blocks - defaults to [] */
710
+ Block?: AssetGroupItemName[];
711
+ /** A list of groups that this option hides - defaults to [] */
712
+ Hide?: AssetGroupName[];
713
+ /** A list of items that this option hides */
714
+ HideItem?: string[];
715
+ /** Override height, uses the highest priority of all modules*/
716
+ OverrideHeight?: AssetOverrideHeight;
717
+ /** Whether that option moves the character up */
718
+ HeightModifier?: number;
719
+ /** Whether that option applies effects */
720
+ Effect?: EffectName[];
721
+ /** Whether the option forces a given pose */
722
+ SetPose?: AssetPoseName;
723
+ /** A list of activities enabled by that module */
724
+ AllowActivity?: ActivityName[];
725
+ Property?: Omit<ItemProperties, "Type">;
726
+ }
727
+
728
+ /** Extended item option subtype for modular items */
729
+ interface ModularItemOption extends Omit<ModularItemOptionConfig, "ArchetypeConfig">, Omit<ExtendedItemOption, "Property"> {
730
+ /** The name of the option; automatically set to {@link ModularItemModule.Key} + the option's index */
731
+ Name: string;
732
+ /** A unique (automatically assigned) identifier of the struct type */
733
+ OptionType: "ModularItemOption";
734
+ /** The option's (automatically assigned) parent module name */
735
+ ModuleName: string;
736
+ /** The option's (automatically assigned) index within the parent module */
737
+ Index: number;
738
+ ParentData: ModularItemData;
739
+ }
740
+
741
+ //#endregion
742
+
743
+ //#region Vibrating Items
744
+
745
+ /** Partially parsed extended item option subtype for vibrating items */
746
+ interface VibratingItemOptionConfig extends ExtendedItemOptionConfig {
747
+ Name: VibratorMode;
748
+ Property: ItemProperties & Pick<Required<ItemProperties>, "Mode" | "Intensity" | "Effect">;
749
+ ArchetypeConfig?: null;
750
+ }
751
+
752
+ /** Extended item option subtype for vibrating items */
753
+ interface VibratingItemOption extends Omit<VibratingItemOptionConfig, "ArchetypeConfig">, Omit<ExtendedItemOption, "Name" | "Property"> {
754
+ OptionType: "VibratingItemOption";
755
+ ParentData: VibratingItemData;
756
+ ArchetypeData?: null;
757
+ }
758
+
759
+ /** An object defining all of the required configuration for registering a vibrator item */
760
+ interface VibratingItemConfig extends ExtendedItemConfig<VibratingItemOption> {
761
+ Archetype: "vibrating";
762
+ /** The list of vibrator mode sets that are available on this item */
763
+ Options?: VibratorModeSet[];
764
+ /**
765
+ * A record containing functions that are run on load, click, draw, exit, and validate, with the original archetype function
766
+ * and parameters passed on to them. If undefined, these are ignored.
767
+ * Note that scripthook functions must be loaded before `Female3DCGExtended.js` in `index.html`.
768
+ */
769
+ ScriptHooks?: ExtendedItemCapsScriptHooksStruct<VibratingItemData, VibratingItemOption>;
770
+ /** The optional text configuration for the item. Custom text keys can be configured within this object */
771
+ DialogPrefix?: {
772
+ /** The dialogue prefix for the player prompt that is displayed on each module's menu screen */
773
+ Header?: string;
774
+ /** The dialogue prefix for the name of each option */
775
+ Option?: string;
776
+ /** The dialogue prefix that will be used for each of the item's chatroom messages */
777
+ Chat?: string | ExtendedItemChatCallback<VibratingItemOption>;
778
+ };
779
+ DrawImages?: false;
780
+ ChatSetting?: "default";
781
+ DrawData?: ExtendedItemConfigDrawData<Partial<ElementMetaData.Vibrating>>;
782
+ }
783
+
784
+ type VibratorModeSet = "Standard" | "Advanced";
785
+
786
+ //#endregion
787
+
788
+ //#region Variable Height items
789
+
790
+ /** Extended item option subtype for variable height items */
791
+ interface VariableHeightOption extends ExtendedItemOption {
792
+ OptionType: "VariableHeightOption";
793
+ Property: Pick<Required<ItemProperties>, "OverrideHeight">;
794
+ Name: "newOption" | "previousOption";
795
+ ParentData: VariableHeightData;
796
+ ArchetypeData?: null;
797
+ }
798
+
799
+ interface VariableHeightConfig extends ExtendedItemConfig<VariableHeightOption> {
800
+ Archetype: "variableheight";
801
+ /** The highest Y co-ordinate that can be set */
802
+ MaxHeight: number;
803
+ /** The lowest Y co-ordinate that can be set */
804
+ MinHeight: number;
805
+ /** A record containing various dialog keys used by the extended item screen */
806
+ DialogPrefix: {
807
+ /** The dialogue prefix for the player prompt that is displayed on each module's menu screen */
808
+ Header?: string;
809
+ /** The dialogue prefix that will be used for each of the item's chatroom messages */
810
+ Chat?: string | ExtendedItemChatCallback<VariableHeightOption>;
811
+ /** The dialogue prefix for the name of each option */
812
+ Option?: string;
813
+ };
814
+ /** The function that handles finding the current variable height setting */
815
+ GetHeightFunction?: (property: ItemProperties) => number | null;
816
+ /** The function that handles applying the height setting to the character */
817
+ SetHeightFunction?: (property: ItemProperties, height: number, maxHeight: number, minHeight: number) => void;
818
+ DrawImages?: false;
819
+ ChatSetting?: "default";
820
+ ScriptHooks?: ExtendedItemCapsScriptHooksStruct<VariableHeightData, VariableHeightOption>;
821
+ DrawData: VariableHeightConfigDrawData;
822
+ }
823
+
824
+ //#endregion
825
+
826
+ //#region text items
827
+
828
+ interface TextItemConfig extends ExtendedItemConfig<TextItemOption> {
829
+ Archetype: "text";
830
+ /** A record with the maximum length for each text-based properties with an input field. */
831
+ MaxLength: TextItemRecord<number>;
832
+ /** A record containing various dialog keys used by the extended item screen */
833
+ DialogPrefix?: {
834
+ /** The dialogue prefix for the player prompt that is displayed on each module's menu screen */
835
+ Header?: string;
836
+ /** The dialogue prefix that will be used for each of the item's chatroom messages */
837
+ Chat?: string | ExtendedItemChatCallback<TextItemOption>;
838
+ };
839
+ DrawImages?: false;
840
+ ChatSetting?: "default";
841
+ ScriptHooks?: ExtendedItemCapsScriptHooksStruct<TextItemData, TextItemOption>;
842
+ EventListeners?: TextItemRecord<TextItemEventListener>;
843
+ DrawData?: ExtendedItemConfigDrawData<Partial<ElementMetaData.Text>>;
844
+ PushOnPublish?: boolean;
845
+ /**
846
+ * The font used for dynamically drawing text.
847
+ * Requires {@link AssetDefinition.DynamicAfterDraw} to be set.
848
+ */
849
+ Font?: null | string;
850
+ }
851
+
852
+ /** Extended item option subtype for text-supporting items */
853
+ interface TextItemOption extends ExtendedItemOption {
854
+ OptionType: "TextItemOption";
855
+ Property: TextItemRecord<string>;
856
+ Name: "newOption" | "previousOption";
857
+ ParentData: TextItemData;
858
+ ArchetypeData?: null;
859
+ }
860
+
861
+ //#endregion
862
+
863
+ // #region Testing
864
+
865
+ /** An interface representing missing or invalid data for a given (simplified) asset */
866
+ interface TestingStruct<T> {
867
+ /** The asset's group */
868
+ readonly Group: AssetGroupName;
869
+ /** The asset's name */
870
+ readonly Name: string;
871
+ /** A representation of the asset's missing or invalid data */
872
+ readonly Invalid: T;
873
+ }
874
+
875
+ // #endregion