blacktrigram 0.7.43 → 0.7.45

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 (750) hide show
  1. package/lib/audio/AudioManager.d.ts +26 -0
  2. package/lib/audio/AudioManager.d.ts.map +1 -1
  3. package/lib/audio/AudioManager.js +26 -0
  4. package/lib/audio/AudioManager.js.map +1 -1
  5. package/lib/audio/AudioPool.js +3 -0
  6. package/lib/audio/AudioPool.js.map +1 -1
  7. package/lib/audio/index.d.ts.map +1 -1
  8. package/lib/audio/index.js.map +1 -1
  9. package/lib/audio/types.d.ts +18 -2
  10. package/lib/audio/types.d.ts.map +1 -1
  11. package/lib/audio/types.js +1 -0
  12. package/lib/audio/types.js.map +1 -1
  13. package/lib/components/effects/WindParticles3D.d.ts.map +1 -1
  14. package/lib/components/index.d.ts.map +1 -1
  15. package/lib/components/index.js.map +1 -1
  16. package/lib/components/screens/combat/CombatScreen3D.d.ts.map +1 -1
  17. package/lib/components/screens/combat/CombatScreen3D.js.map +1 -1
  18. package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts +0 -1
  19. package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts.map +1 -1
  20. package/lib/components/screens/combat/components/controls/KeyboardHints.js +0 -1
  21. package/lib/components/screens/combat/components/controls/KeyboardHints.js.map +1 -1
  22. package/lib/components/screens/combat/components/controls/PauseMenu.d.ts.map +1 -1
  23. package/lib/components/screens/combat/components/controls/PauseMenu.js.map +1 -1
  24. package/lib/components/screens/combat/components/effects/ArterialSpray3D.d.ts.map +1 -1
  25. package/lib/components/screens/combat/components/effects/BloodDecals3D.d.ts.map +1 -1
  26. package/lib/components/screens/combat/components/effects/BloodDecals3D.js.map +1 -1
  27. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.d.ts.map +1 -1
  28. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js.map +1 -1
  29. package/lib/components/screens/combat/components/effects/BloodParticles3D.d.ts.map +1 -1
  30. package/lib/components/screens/combat/components/effects/BloodParticles3D.js.map +1 -1
  31. package/lib/components/screens/combat/components/effects/BloodViscosity3D.d.ts.map +1 -1
  32. package/lib/components/screens/combat/components/effects/BloodViscosity3D.js.map +1 -1
  33. package/lib/components/screens/combat/components/effects/BoneCrackParticles3D.d.ts.map +1 -1
  34. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.d.ts.map +1 -1
  35. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js.map +1 -1
  36. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.d.ts.map +1 -1
  37. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js.map +1 -1
  38. package/lib/components/screens/combat/components/effects/DustClouds3D.d.ts.map +1 -1
  39. package/lib/components/screens/combat/components/effects/EarthCrackEffect3D.d.ts.map +1 -1
  40. package/lib/components/screens/combat/components/effects/EarthHealingEffect3D.d.ts.map +1 -1
  41. package/lib/components/screens/combat/components/effects/ImpactSparks3D.d.ts.map +1 -1
  42. package/lib/components/screens/combat/components/effects/InternalDamage3D.d.ts.map +1 -1
  43. package/lib/components/screens/combat/components/effects/InternalDamage3D.js.map +1 -1
  44. package/lib/components/screens/combat/components/effects/LiPrecisionTargetingOverlay.d.ts.map +1 -1
  45. package/lib/components/screens/combat/components/effects/NerveStrikeParticles3D.d.ts.map +1 -1
  46. package/lib/components/screens/combat/components/effects/PainVignette.d.ts.map +1 -1
  47. package/lib/components/screens/combat/components/effects/PainVignette.js.map +1 -1
  48. package/lib/components/screens/combat/components/effects/ParticleAudio3D.d.ts.map +1 -1
  49. package/lib/components/screens/combat/components/effects/ParticleAudio3D.js.map +1 -1
  50. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.d.ts.map +1 -1
  51. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js.map +1 -1
  52. package/lib/components/screens/combat/components/effects/WaterRipple3D.d.ts.map +1 -1
  53. package/lib/components/screens/combat/components/effects/WaterWave3D.d.ts.map +1 -1
  54. package/lib/components/screens/combat/components/effects/index.d.ts.map +1 -1
  55. package/lib/components/screens/combat/components/feedback/MatchCountdown.d.ts.map +1 -1
  56. package/lib/components/screens/combat/components/feedback/MatchCountdown.js.map +1 -1
  57. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.d.ts.map +1 -1
  58. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js.map +1 -1
  59. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.d.ts.map +1 -1
  60. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.js.map +1 -1
  61. package/lib/components/screens/combat/components/hud/CombatBottomHUD.d.ts.map +1 -1
  62. package/lib/components/screens/combat/components/hud/CombatBottomHUD.js.map +1 -1
  63. package/lib/components/screens/combat/components/hud/CombatLeftHUD.d.ts.map +1 -1
  64. package/lib/components/screens/combat/components/hud/CombatLeftHUD.js.map +1 -1
  65. package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.d.ts.map +1 -1
  66. package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.js.map +1 -1
  67. package/lib/components/screens/combat/components/hud/CombatRightHUD.d.ts.map +1 -1
  68. package/lib/components/screens/combat/components/hud/CombatRightHUD.js.map +1 -1
  69. package/lib/components/screens/combat/components/hud/CombatTopHUD.d.ts.map +1 -1
  70. package/lib/components/screens/combat/components/hud/CombatTopHUD.js.map +1 -1
  71. package/lib/components/screens/combat/components/hud/DifficultyIndicator.d.ts.map +1 -1
  72. package/lib/components/screens/combat/components/hud/DifficultyIndicator.js.map +1 -1
  73. package/lib/components/screens/combat/components/hud/FPSMonitor.d.ts.map +1 -1
  74. package/lib/components/screens/combat/components/hud/FPSMonitor.js.map +1 -1
  75. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.d.ts.map +1 -1
  76. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js.map +1 -1
  77. package/lib/components/screens/combat/components/indicators/BalanceIndicator.d.ts.map +1 -1
  78. package/lib/components/screens/combat/components/indicators/BalanceIndicator.js.map +1 -1
  79. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts +0 -1
  80. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts.map +1 -1
  81. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js +0 -1
  82. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js.map +1 -1
  83. package/lib/components/screens/combat/components/indicators/StaminaWarning.d.ts.map +1 -1
  84. package/lib/components/screens/combat/components/indicators/StaminaWarning.js.map +1 -1
  85. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts +0 -2
  86. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts.map +1 -1
  87. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js +0 -1
  88. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js.map +1 -1
  89. package/lib/components/screens/combat/helpers/AnimationUpdater.d.ts.map +1 -1
  90. package/lib/components/screens/combat/helpers/AnimationUpdater.js.map +1 -1
  91. package/lib/components/screens/combat/helpers/combatHelpers.d.ts.map +1 -1
  92. package/lib/components/screens/combat/helpers/combatHelpers.js.map +1 -1
  93. package/lib/components/screens/combat/hooks/useAICombat.d.ts.map +1 -1
  94. package/lib/components/screens/combat/hooks/useAICombat.js.map +1 -1
  95. package/lib/components/screens/combat/hooks/useCombatActions.d.ts.map +1 -1
  96. package/lib/components/screens/combat/hooks/useCombatActions.js.map +1 -1
  97. package/lib/components/screens/combat/hooks/useCombatAttackMovement.d.ts.map +1 -1
  98. package/lib/components/screens/combat/hooks/useCombatAttackMovement.js.map +1 -1
  99. package/lib/components/screens/combat/hooks/useCombatAudio.d.ts.map +1 -1
  100. package/lib/components/screens/combat/hooks/useCombatAudio.js.map +1 -1
  101. package/lib/components/screens/combat/hooks/useCombatLayout.d.ts.map +1 -1
  102. package/lib/components/screens/combat/hooks/useCombatLayout.js.map +1 -1
  103. package/lib/components/screens/combat/hooks/useCombatState.d.ts.map +1 -1
  104. package/lib/components/screens/combat/hooks/useCombatState.js.map +1 -1
  105. package/lib/components/screens/combat/hooks/useGrapplingAudio.d.ts.map +1 -1
  106. package/lib/components/screens/combat/hooks/usePreloadCombatAudio.d.ts.map +1 -1
  107. package/lib/components/screens/controls/ControlsScreen3D.d.ts.map +1 -1
  108. package/lib/components/screens/controls/ControlsScreen3D.js.map +1 -1
  109. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.d.ts.map +1 -1
  110. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js.map +1 -1
  111. package/lib/components/screens/controls/components/GamepadVisualization3D.d.ts.map +1 -1
  112. package/lib/components/screens/controls/components/GamepadVisualization3D.js.map +1 -1
  113. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.d.ts.map +1 -1
  114. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js.map +1 -1
  115. package/lib/components/screens/controls/components/Key3D.d.ts.map +1 -1
  116. package/lib/components/screens/controls/components/Key3D.js.map +1 -1
  117. package/lib/components/screens/controls/components/VisualKeyboard3D.d.ts.map +1 -1
  118. package/lib/components/screens/controls/components/VisualKeyboard3D.js.map +1 -1
  119. package/lib/components/screens/controls/constants/ControlsConstants.d.ts.map +1 -1
  120. package/lib/components/screens/controls/constants/ControlsConstants.js.map +1 -1
  121. package/lib/components/screens/controls/hooks/useControlsState.d.ts.map +1 -1
  122. package/lib/components/screens/controls/hooks/useControlsState.js.map +1 -1
  123. package/lib/components/screens/endscreen/EndScreen3D.d.ts.map +1 -1
  124. package/lib/components/screens/endscreen/EndScreen3D.js.map +1 -1
  125. package/lib/components/screens/endscreen/components/DefeatAnimation3D.d.ts.map +1 -1
  126. package/lib/components/screens/endscreen/components/DefeatAnimation3D.js.map +1 -1
  127. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.d.ts.map +1 -1
  128. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js.map +1 -1
  129. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.d.ts.map +1 -1
  130. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js.map +1 -1
  131. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.d.ts.map +1 -1
  132. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js.map +1 -1
  133. package/lib/components/screens/endscreen/components/VictoryAnimation3D.d.ts.map +1 -1
  134. package/lib/components/screens/endscreen/components/VictoryAnimation3D.js.map +1 -1
  135. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.d.ts.map +1 -1
  136. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js.map +1 -1
  137. package/lib/components/screens/endscreen/components/index.d.ts.map +1 -1
  138. package/lib/components/screens/endscreen/index.d.ts.map +1 -1
  139. package/lib/components/screens/intro/IntroScreen3D.d.ts.map +1 -1
  140. package/lib/components/screens/intro/IntroScreen3D.js +1 -1
  141. package/lib/components/screens/intro/IntroScreen3D.js.map +1 -1
  142. package/lib/components/screens/intro/components/AbilityListOverlayHtml.d.ts.map +1 -1
  143. package/lib/components/screens/intro/components/AbilityListOverlayHtml.js.map +1 -1
  144. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.d.ts.map +1 -1
  145. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js.map +1 -1
  146. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.d.ts.map +1 -1
  147. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js.map +1 -1
  148. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.d.ts.map +1 -1
  149. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js.map +1 -1
  150. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.d.ts.map +1 -1
  151. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js.map +1 -1
  152. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.d.ts.map +1 -1
  153. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js.map +1 -1
  154. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.d.ts.map +1 -1
  155. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js.map +1 -1
  156. package/lib/components/screens/intro/components/StatBarOverlayHtml.d.ts.map +1 -1
  157. package/lib/components/screens/intro/components/StatBarOverlayHtml.js.map +1 -1
  158. package/lib/components/screens/philosophy/PhilosophyScreen3D.d.ts.map +1 -1
  159. package/lib/components/screens/philosophy/PhilosophyScreen3D.js.map +1 -1
  160. package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts +0 -1
  161. package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts.map +1 -1
  162. package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts +0 -1
  163. package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts.map +1 -1
  164. package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts +0 -1
  165. package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts.map +1 -1
  166. package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts +0 -1
  167. package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts.map +1 -1
  168. package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts +0 -1
  169. package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts.map +1 -1
  170. package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts +0 -1
  171. package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts.map +1 -1
  172. package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts +0 -1
  173. package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts.map +1 -1
  174. package/lib/components/screens/training/TrainingScreen3D.d.ts.map +1 -1
  175. package/lib/components/screens/training/TrainingScreen3D.js.map +1 -1
  176. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.d.ts.map +1 -1
  177. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js.map +1 -1
  178. package/lib/components/screens/training/components/AnatomyOverlay3D.d.ts.map +1 -1
  179. package/lib/components/screens/training/components/AnatomyOverlay3D.js.map +1 -1
  180. package/lib/components/screens/training/components/DamageNumber3D.d.ts.map +1 -1
  181. package/lib/components/screens/training/components/FootPlacementMarkers3D.d.ts.map +1 -1
  182. package/lib/components/screens/training/components/FootPlacementMarkers3D.js.map +1 -1
  183. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.d.ts.map +1 -1
  184. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js.map +1 -1
  185. package/lib/components/screens/training/components/HitFeedbackEffect3D.d.ts.map +1 -1
  186. package/lib/components/screens/training/components/HitFeedbackEffect3D.js.map +1 -1
  187. package/lib/components/screens/training/components/TrainingAICharacter3D.d.ts.map +1 -1
  188. package/lib/components/screens/training/components/TrainingArena3D.d.ts.map +1 -1
  189. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.d.ts.map +1 -1
  190. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js.map +1 -1
  191. package/lib/components/screens/training/components/TrainingDummy3D.d.ts.map +1 -1
  192. package/lib/components/screens/training/components/TrainingDummy3D.js.map +1 -1
  193. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.d.ts.map +1 -1
  194. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js.map +1 -1
  195. package/lib/components/screens/training/components/TrainingHitEffects3D.d.ts.map +1 -1
  196. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.d.ts.map +1 -1
  197. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js.map +1 -1
  198. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.d.ts.map +1 -1
  199. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js.map +1 -1
  200. package/lib/components/screens/training/components/VitalPointMarker3D.d.ts.map +1 -1
  201. package/lib/components/screens/training/components/VitalPointMarker3D.js.map +1 -1
  202. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.d.ts.map +1 -1
  203. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.js.map +1 -1
  204. package/lib/components/screens/training/components/hud/TrainingBottomHUD.d.ts.map +1 -1
  205. package/lib/components/screens/training/components/hud/TrainingBottomHUD.js.map +1 -1
  206. package/lib/components/screens/training/components/hud/TrainingLeftHUD.d.ts.map +1 -1
  207. package/lib/components/screens/training/components/hud/TrainingLeftHUD.js.map +1 -1
  208. package/lib/components/screens/training/components/hud/TrainingRightHUD.d.ts.map +1 -1
  209. package/lib/components/screens/training/components/hud/TrainingRightHUD.js.map +1 -1
  210. package/lib/components/screens/training/components/hud/TrainingTopHUD.d.ts.map +1 -1
  211. package/lib/components/screens/training/components/hud/TrainingTopHUD.js.map +1 -1
  212. package/lib/components/screens/training/components/index.d.ts.map +1 -1
  213. package/lib/components/screens/training/hooks/useAttackMovement.d.ts.map +1 -1
  214. package/lib/components/screens/training/hooks/useAttackMovement.js.map +1 -1
  215. package/lib/components/screens/training/hooks/useTrainingActions.d.ts.map +1 -1
  216. package/lib/components/screens/training/hooks/useTrainingActions.js.map +1 -1
  217. package/lib/components/screens/training/hooks/useTrainingLayout.d.ts.map +1 -1
  218. package/lib/components/screens/training/hooks/useTrainingLayout.js.map +1 -1
  219. package/lib/components/screens/training/hooks/useTrainingState.d.ts.map +1 -1
  220. package/lib/components/screens/training/hooks/useTrainingState.js.map +1 -1
  221. package/lib/components/shared/base/AccessibilityProvider.d.ts.map +1 -1
  222. package/lib/components/shared/base/BaseButton.d.ts.map +1 -1
  223. package/lib/components/shared/base/BaseButton.js.map +1 -1
  224. package/lib/components/shared/base/BaseButtonOverlayHtml.d.ts.map +1 -1
  225. package/lib/components/shared/base/BaseButtonOverlayHtml.js.map +1 -1
  226. package/lib/components/shared/base/BasePanel.d.ts.map +1 -1
  227. package/lib/components/shared/base/BasePanel.js.map +1 -1
  228. package/lib/components/shared/base/BaseText.d.ts.map +1 -1
  229. package/lib/components/shared/base/BaseText.js.map +1 -1
  230. package/lib/components/shared/base/ResponsiveContainer.d.ts.map +1 -1
  231. package/lib/components/shared/base/index.d.ts.map +1 -1
  232. package/lib/components/shared/base/useKoreanTheme.d.ts.map +1 -1
  233. package/lib/components/shared/base/useKoreanTheme.js.map +1 -1
  234. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.d.ts.map +1 -1
  235. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js.map +1 -1
  236. package/lib/components/shared/effects/ScreenFlash.d.ts.map +1 -1
  237. package/lib/components/shared/mobile/ActionButtons.d.ts.map +1 -1
  238. package/lib/components/shared/mobile/ActionButtons.js +0 -1
  239. package/lib/components/shared/mobile/ActionButtons.js.map +1 -1
  240. package/lib/components/shared/mobile/GestureRecognizerPure.d.ts +0 -1
  241. package/lib/components/shared/mobile/GestureRecognizerPure.d.ts.map +1 -1
  242. package/lib/components/shared/mobile/GestureRecognizerPure.js +0 -1
  243. package/lib/components/shared/mobile/GestureRecognizerPure.js.map +1 -1
  244. package/lib/components/shared/mobile/HapticController.d.ts +0 -13
  245. package/lib/components/shared/mobile/HapticController.d.ts.map +1 -1
  246. package/lib/components/shared/mobile/HapticController.js +0 -10
  247. package/lib/components/shared/mobile/HapticController.js.map +1 -1
  248. package/lib/components/shared/mobile/MobileControlsPure.d.ts.map +1 -1
  249. package/lib/components/shared/mobile/MobileControlsPure.js.map +1 -1
  250. package/lib/components/shared/mobile/PerformanceMonitor.d.ts +0 -15
  251. package/lib/components/shared/mobile/PerformanceMonitor.d.ts.map +1 -1
  252. package/lib/components/shared/mobile/StanceWheelPure.d.ts +0 -1
  253. package/lib/components/shared/mobile/StanceWheelPure.d.ts.map +1 -1
  254. package/lib/components/shared/mobile/StanceWheelPure.js +0 -1
  255. package/lib/components/shared/mobile/StanceWheelPure.js.map +1 -1
  256. package/lib/components/shared/mobile/TouchOptimizer.d.ts +0 -4
  257. package/lib/components/shared/mobile/TouchOptimizer.d.ts.map +1 -1
  258. package/lib/components/shared/mobile/TouchOptimizer.js +0 -3
  259. package/lib/components/shared/mobile/TouchOptimizer.js.map +1 -1
  260. package/lib/components/shared/mobile/VirtualDPad.d.ts.map +1 -1
  261. package/lib/components/shared/mobile/VirtualDPad.js +0 -1
  262. package/lib/components/shared/mobile/VirtualDPad.js.map +1 -1
  263. package/lib/components/shared/mobile/index.d.ts.map +1 -1
  264. package/lib/components/shared/three/anatomy/BodySurface.d.ts.map +1 -1
  265. package/lib/components/shared/three/anatomy/BodySurface.js.map +1 -1
  266. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.d.ts.map +1 -1
  267. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js.map +1 -1
  268. package/lib/components/shared/three/anatomy/BoneClothing.d.ts.map +1 -1
  269. package/lib/components/shared/three/anatomy/BoneClothing.js.map +1 -1
  270. package/lib/components/shared/three/anatomy/BoneRenderer.d.ts +0 -1
  271. package/lib/components/shared/three/anatomy/BoneRenderer.d.ts.map +1 -1
  272. package/lib/components/shared/three/anatomy/BoneRenderer.js.map +1 -1
  273. package/lib/components/shared/three/anatomy/Face3D.d.ts.map +1 -1
  274. package/lib/components/shared/three/anatomy/Face3D.js.map +1 -1
  275. package/lib/components/shared/three/anatomy/Foot3D.d.ts +0 -1
  276. package/lib/components/shared/three/anatomy/Foot3D.d.ts.map +1 -1
  277. package/lib/components/shared/three/anatomy/Foot3D.js.map +1 -1
  278. package/lib/components/shared/three/anatomy/Hand3D.d.ts +0 -1
  279. package/lib/components/shared/three/anatomy/Hand3D.d.ts.map +1 -1
  280. package/lib/components/shared/three/anatomy/Hand3D.js.map +1 -1
  281. package/lib/components/shared/three/effects/ActionFeedback.d.ts.map +1 -1
  282. package/lib/components/shared/three/effects/ActionFeedback.js.map +1 -1
  283. package/lib/components/shared/three/effects/DamageNumbers.d.ts.map +1 -1
  284. package/lib/components/shared/three/effects/DamageNumbers.js.map +1 -1
  285. package/lib/components/shared/three/effects/ExplosiveBurstEffect3D.d.ts.map +1 -1
  286. package/lib/components/shared/three/effects/GrapplingIndicator3D.d.ts.map +1 -1
  287. package/lib/components/shared/three/effects/HitEffects3D.d.ts.map +1 -1
  288. package/lib/components/shared/three/effects/HitEffects3D.js.map +1 -1
  289. package/lib/components/shared/three/effects/LimbExposureIndicator3D.d.ts.map +1 -1
  290. package/lib/components/shared/three/effects/NerveDisruptionEffect3D.d.ts.map +1 -1
  291. package/lib/components/shared/three/effects/PlayerStateIndicators.d.ts.map +1 -1
  292. package/lib/components/shared/three/effects/PlayerStateIndicators.js.map +1 -1
  293. package/lib/components/shared/three/effects/StanceSymbol3D.d.ts.map +1 -1
  294. package/lib/components/shared/three/effects/StanceSymbol3D.js.map +1 -1
  295. package/lib/components/shared/three/effects/StanceTransitionEffect.d.ts.map +1 -1
  296. package/lib/components/shared/three/effects/StanceTransitionEffect.js.map +1 -1
  297. package/lib/components/shared/three/effects/ThunderEffect3D.d.ts.map +1 -1
  298. package/lib/components/shared/three/effects/VitalPointMarkers3D.d.ts.map +1 -1
  299. package/lib/components/shared/three/effects/VitalPointMarkers3D.js.map +1 -1
  300. package/lib/components/shared/three/index.d.ts.map +1 -1
  301. package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts +0 -6
  302. package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts.map +1 -1
  303. package/lib/components/shared/three/indicators/ElementalColorSystem.js +0 -4
  304. package/lib/components/shared/three/indicators/ElementalColorSystem.js.map +1 -1
  305. package/lib/components/shared/three/indicators/GuardIndicator.d.ts +0 -1
  306. package/lib/components/shared/three/indicators/GuardIndicator.d.ts.map +1 -1
  307. package/lib/components/shared/three/indicators/GuardIndicator.js +0 -1
  308. package/lib/components/shared/three/indicators/GuardIndicator.js.map +1 -1
  309. package/lib/components/shared/three/indicators/HapticFeedback.d.ts +0 -7
  310. package/lib/components/shared/three/indicators/HapticFeedback.d.ts.map +1 -1
  311. package/lib/components/shared/three/indicators/HapticFeedback.js +0 -2
  312. package/lib/components/shared/three/indicators/HapticFeedback.js.map +1 -1
  313. package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts +0 -1
  314. package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts.map +1 -1
  315. package/lib/components/shared/three/indicators/StanceChangeIndicator.js +0 -1
  316. package/lib/components/shared/three/indicators/StanceChangeIndicator.js.map +1 -1
  317. package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts +0 -1
  318. package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts.map +1 -1
  319. package/lib/components/shared/three/models/Player3DWithTransitions.d.ts.map +1 -1
  320. package/lib/components/shared/three/models/Player3DWithTransitions.js.map +1 -1
  321. package/lib/components/shared/three/models/SkeletalPlayer3D.d.ts.map +1 -1
  322. package/lib/components/shared/three/models/SkeletalPlayer3D.js.map +1 -1
  323. package/lib/components/shared/three/optimization/AdaptiveQuality.d.ts.map +1 -1
  324. package/lib/components/shared/three/optimization/AdaptiveQuality.js.map +1 -1
  325. package/lib/components/shared/three/optimization/InstancedGeometry.d.ts.map +1 -1
  326. package/lib/components/shared/three/optimization/LODSystem.d.ts.map +1 -1
  327. package/lib/components/shared/three/scene/AtmosphericParticles3D.d.ts.map +1 -1
  328. package/lib/components/shared/three/scene/AtmosphericParticles3D.js.map +1 -1
  329. package/lib/components/shared/three/scene/BackgroundScene3D.d.ts.map +1 -1
  330. package/lib/components/shared/three/scene/BackgroundScene3D.js.map +1 -1
  331. package/lib/components/shared/three/scene/CombatArena3D.d.ts.map +1 -1
  332. package/lib/components/shared/three/scene/CombatArena3D.js.map +1 -1
  333. package/lib/components/shared/three/scene/DebugCollision.d.ts +0 -2
  334. package/lib/components/shared/three/scene/DebugCollision.d.ts.map +1 -1
  335. package/lib/components/shared/three/scene/KoreanSignage3D.d.ts.map +1 -1
  336. package/lib/components/shared/three/scene/KoreanSignage3D.js.map +1 -1
  337. package/lib/components/shared/three/ui/ArchetypeCard.d.ts.map +1 -1
  338. package/lib/components/shared/three/ui/ArchetypeCard.js.map +1 -1
  339. package/lib/components/shared/three/ui/BodyPartHealthDisplay.d.ts.map +1 -1
  340. package/lib/components/shared/three/ui/BodyPartHealthDisplay.js.map +1 -1
  341. package/lib/components/shared/three/ui/BreathingIndicator.d.ts.map +1 -1
  342. package/lib/components/shared/three/ui/BreathingIndicator2.js.map +1 -1
  343. package/lib/components/shared/three/ui/CombatReadinessBar.d.ts.map +1 -1
  344. package/lib/components/shared/three/ui/CombatReadinessBar.js.map +1 -1
  345. package/lib/components/shared/three/ui/ComboCounter.d.ts.map +1 -1
  346. package/lib/components/shared/three/ui/ComboCounter.js.map +1 -1
  347. package/lib/components/shared/three/ui/HealthBar.d.ts.map +1 -1
  348. package/lib/components/shared/three/ui/HealthBar.js.map +1 -1
  349. package/lib/components/shared/three/ui/KoreanButton.d.ts.map +1 -1
  350. package/lib/components/shared/three/ui/KoreanButton.js.map +1 -1
  351. package/lib/components/shared/three/ui/KoreanPanel.d.ts.map +1 -1
  352. package/lib/components/shared/three/ui/KoreanPanel.js.map +1 -1
  353. package/lib/components/shared/three/ui/KoreanText.d.ts.map +1 -1
  354. package/lib/components/shared/three/ui/KoreanText.js.map +1 -1
  355. package/lib/components/shared/three/ui/MenuList.d.ts.map +1 -1
  356. package/lib/components/shared/three/ui/MenuList.js.map +1 -1
  357. package/lib/components/shared/three/ui/PlayerHUD.d.ts.map +1 -1
  358. package/lib/components/shared/three/ui/PlayerHUD.js.map +1 -1
  359. package/lib/components/shared/three/ui/ProgressBar.d.ts.map +1 -1
  360. package/lib/components/shared/three/ui/ProgressBar.js.map +1 -1
  361. package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts +0 -1
  362. package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts.map +1 -1
  363. package/lib/components/shared/three/ui/SpeedIndicatorHUD.js +0 -1
  364. package/lib/components/shared/three/ui/SpeedIndicatorHUD.js.map +1 -1
  365. package/lib/components/shared/three/ui/StaminaBar.d.ts.map +1 -1
  366. package/lib/components/shared/three/ui/StaminaBar.js.map +1 -1
  367. package/lib/components/shared/three/ui/TechniqueBar.d.ts.map +1 -1
  368. package/lib/components/shared/three/ui/TechniqueBar.js.map +1 -1
  369. package/lib/components/shared/three/ui/TechniqueBarContainer.d.ts.map +1 -1
  370. package/lib/components/shared/three/ui/TechniqueCard.d.ts.map +1 -1
  371. package/lib/components/shared/three/ui/TechniqueCard.js.map +1 -1
  372. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.d.ts.map +1 -1
  373. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js.map +1 -1
  374. package/lib/components/shared/three/ui/VulnerabilityWindowHUD.d.ts.map +1 -1
  375. package/lib/components/shared/ui/BaseHUDContainer.d.ts.map +1 -1
  376. package/lib/components/shared/ui/BaseHUDContainer.js.map +1 -1
  377. package/lib/components/shared/ui/CombatTimer.d.ts.map +1 -1
  378. package/lib/components/shared/ui/CombatTimer.js.map +1 -1
  379. package/lib/components/shared/ui/ErrorBoundary.d.ts.map +1 -1
  380. package/lib/components/shared/ui/ErrorModal.d.ts.map +1 -1
  381. package/lib/components/shared/ui/ErrorModal.js.map +1 -1
  382. package/lib/components/shared/ui/HUDSection.d.ts.map +1 -1
  383. package/lib/components/shared/ui/LoadingState.d.ts.map +1 -1
  384. package/lib/components/shared/ui/LoadingState.js.map +1 -1
  385. package/lib/components/shared/ui/MobileHUDLayout.d.ts +0 -1
  386. package/lib/components/shared/ui/MobileHUDLayout.d.ts.map +1 -1
  387. package/lib/components/shared/ui/ResponsiveContainer.d.ts +0 -1
  388. package/lib/components/shared/ui/ResponsiveContainer.d.ts.map +1 -1
  389. package/lib/components/shared/ui/SplashScreen.d.ts.map +1 -1
  390. package/lib/components/shared/ui/SplashScreen.js +2 -2
  391. package/lib/components/shared/ui/SplashScreen.js.map +1 -1
  392. package/lib/components/shared/ui/StyledHUDPanel.d.ts.map +1 -1
  393. package/lib/components/shared/ui/VitalPointOverlayControlsPure.d.ts.map +1 -1
  394. package/lib/components/shared/ui/VitalPointOverlayControlsPure.js.map +1 -1
  395. package/lib/components/shared/ui/VolumeControl.d.ts.map +1 -1
  396. package/lib/components/shared/ui/VolumeControl.js.map +1 -1
  397. package/lib/components/shared/ui/shared/ConfirmDialog.d.ts.map +1 -1
  398. package/lib/components/shared/ui/shared/ConfirmDialog.js.map +1 -1
  399. package/lib/components/test/Hello3D.d.ts.map +1 -1
  400. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.d.ts.map +1 -1
  401. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js.map +1 -1
  402. package/lib/components/ui/combat/ComboCounter.d.ts.map +1 -1
  403. package/lib/components/ui/combat/PressureMeter.d.ts.map +1 -1
  404. package/lib/systems/CombatSystem.d.ts +0 -6
  405. package/lib/systems/CombatSystem.d.ts.map +1 -1
  406. package/lib/systems/CombatSystem.js +0 -6
  407. package/lib/systems/CombatSystem.js.map +1 -1
  408. package/lib/systems/EffectCalculator.d.ts +0 -7
  409. package/lib/systems/EffectCalculator.d.ts.map +1 -1
  410. package/lib/systems/EffectCalculator.js +0 -4
  411. package/lib/systems/EffectCalculator.js.map +1 -1
  412. package/lib/systems/LayoutSystem.d.ts +0 -1
  413. package/lib/systems/LayoutSystem.d.ts.map +1 -1
  414. package/lib/systems/LayoutSystem.js +0 -1
  415. package/lib/systems/LayoutSystem.js.map +1 -1
  416. package/lib/systems/PlayerEffectManager.d.ts +0 -10
  417. package/lib/systems/PlayerEffectManager.d.ts.map +1 -1
  418. package/lib/systems/PlayerEffectManager.js +0 -3
  419. package/lib/systems/PlayerEffectManager.js.map +1 -1
  420. package/lib/systems/ResponsiveScaling.d.ts +0 -12
  421. package/lib/systems/ResponsiveScaling.d.ts.map +1 -1
  422. package/lib/systems/ResponsiveScaling.js +0 -12
  423. package/lib/systems/ResponsiveScaling.js.map +1 -1
  424. package/lib/systems/TrigramSystem.d.ts +0 -13
  425. package/lib/systems/TrigramSystem.d.ts.map +1 -1
  426. package/lib/systems/TrigramSystem.js +0 -13
  427. package/lib/systems/TrigramSystem.js.map +1 -1
  428. package/lib/systems/VitalPointSystem.d.ts +0 -10
  429. package/lib/systems/VitalPointSystem.d.ts.map +1 -1
  430. package/lib/systems/VitalPointSystem.js +0 -10
  431. package/lib/systems/VitalPointSystem.js.map +1 -1
  432. package/lib/systems/animation/builders/KeyframeInterpolation.d.ts +0 -4
  433. package/lib/systems/animation/builders/KeyframeInterpolation.d.ts.map +1 -1
  434. package/lib/systems/animation/builders/KeyframeInterpolation.js +0 -1
  435. package/lib/systems/animation/builders/KeyframeInterpolation.js.map +1 -1
  436. package/lib/systems/animation/builders/SkeletonRig.d.ts +0 -4
  437. package/lib/systems/animation/builders/SkeletonRig.d.ts.map +1 -1
  438. package/lib/systems/animation/builders/SkeletonRig.js +0 -3
  439. package/lib/systems/animation/builders/SkeletonRig.js.map +1 -1
  440. package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts +0 -5
  441. package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts.map +1 -1
  442. package/lib/systems/animation/catalogs/RecoveryAnimations.js +0 -5
  443. package/lib/systems/animation/catalogs/RecoveryAnimations.js.map +1 -1
  444. package/lib/systems/animation/core/AnimationHitTiming.d.ts +0 -6
  445. package/lib/systems/animation/core/AnimationHitTiming.d.ts.map +1 -1
  446. package/lib/systems/animation/core/AnimationHitTiming.js +0 -4
  447. package/lib/systems/animation/core/AnimationHitTiming.js.map +1 -1
  448. package/lib/systems/animation/core/AnimationStateMachine.js +1 -0
  449. package/lib/systems/animation/core/AnimationStateMachine.js.map +1 -1
  450. package/lib/systems/animation/core/AnimationTransitions.d.ts +0 -3
  451. package/lib/systems/animation/core/AnimationTransitions.d.ts.map +1 -1
  452. package/lib/systems/animation/core/AnimationTransitions.js.map +1 -1
  453. package/lib/systems/animation/core/LateralityTransform.d.ts +0 -3
  454. package/lib/systems/animation/core/LateralityTransform.d.ts.map +1 -1
  455. package/lib/systems/animation/core/LateralityTransform.js +0 -1
  456. package/lib/systems/animation/core/LateralityTransform.js.map +1 -1
  457. package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts +0 -1
  458. package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts.map +1 -1
  459. package/lib/systems/animation/core/RecoveryPhaseEnhancer.js.map +1 -1
  460. package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts +0 -10
  461. package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts.map +1 -1
  462. package/lib/systems/animation/core/TechniqueAnimationMapper.js +0 -8
  463. package/lib/systems/animation/core/TechniqueAnimationMapper.js.map +1 -1
  464. package/lib/systems/animation/core/TrigramAnimationMapping.d.ts +0 -10
  465. package/lib/systems/animation/core/TrigramAnimationMapping.d.ts.map +1 -1
  466. package/lib/systems/animation/core/TrigramStanceTransitions.d.ts +0 -2
  467. package/lib/systems/animation/core/TrigramStanceTransitions.d.ts.map +1 -1
  468. package/lib/systems/animation/core/types.d.ts +0 -39
  469. package/lib/systems/animation/core/types.d.ts.map +1 -1
  470. package/lib/systems/animation/core/types.js +0 -9
  471. package/lib/systems/animation/core/types.js.map +1 -1
  472. package/lib/systems/animation/systems/AdvancedJointMovements.d.ts +0 -27
  473. package/lib/systems/animation/systems/AdvancedJointMovements.d.ts.map +1 -1
  474. package/lib/systems/animation/systems/AdvancedJointMovements.js +0 -1
  475. package/lib/systems/animation/systems/AdvancedJointMovements.js.map +1 -1
  476. package/lib/systems/animation/systems/BodyFacingSystem.d.ts +0 -19
  477. package/lib/systems/animation/systems/BodyFacingSystem.d.ts.map +1 -1
  478. package/lib/systems/animation/systems/BodyFacingSystem.js +0 -14
  479. package/lib/systems/animation/systems/BodyFacingSystem.js.map +1 -1
  480. package/lib/systems/animation/systems/FacialExpressions.d.ts +0 -10
  481. package/lib/systems/animation/systems/FacialExpressions.d.ts.map +1 -1
  482. package/lib/systems/animation/systems/FacialExpressions.js +0 -2
  483. package/lib/systems/animation/systems/FacialExpressions.js.map +1 -1
  484. package/lib/systems/animation/systems/FallAnimations.d.ts +0 -4
  485. package/lib/systems/animation/systems/FallAnimations.d.ts.map +1 -1
  486. package/lib/systems/animation/systems/FallAnimations.js +0 -2
  487. package/lib/systems/animation/systems/FallAnimations.js.map +1 -1
  488. package/lib/systems/animation/systems/HeadMovements.d.ts +0 -10
  489. package/lib/systems/animation/systems/HeadMovements.d.ts.map +1 -1
  490. package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts +0 -7
  491. package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts.map +1 -1
  492. package/lib/systems/bodypart/BodyPartDamageIntegration.js +0 -7
  493. package/lib/systems/bodypart/BodyPartDamageIntegration.js.map +1 -1
  494. package/lib/systems/bodypart/BodyPartHealthSystem.d.ts +0 -13
  495. package/lib/systems/bodypart/BodyPartHealthSystem.d.ts.map +1 -1
  496. package/lib/systems/bodypart/BodyPartHealthSystem.js +0 -13
  497. package/lib/systems/bodypart/BodyPartHealthSystem.js.map +1 -1
  498. package/lib/systems/bodypart/BodyPartPositionMapping.d.ts +0 -6
  499. package/lib/systems/bodypart/BodyPartPositionMapping.d.ts.map +1 -1
  500. package/lib/systems/bodypart/BodyPartPositionMapping.js +0 -6
  501. package/lib/systems/bodypart/BodyPartPositionMapping.js.map +1 -1
  502. package/lib/systems/bodypart/CombatInjuryIntegration.d.ts +0 -10
  503. package/lib/systems/bodypart/CombatInjuryIntegration.d.ts.map +1 -1
  504. package/lib/systems/bodypart/CombatInjuryIntegration.js +0 -8
  505. package/lib/systems/bodypart/CombatInjuryIntegration.js.map +1 -1
  506. package/lib/systems/bodypart/InjuryIntegration.d.ts +0 -2
  507. package/lib/systems/bodypart/InjuryIntegration.d.ts.map +1 -1
  508. package/lib/systems/bodypart/InjuryIntegration.js +0 -2
  509. package/lib/systems/bodypart/InjuryIntegration.js.map +1 -1
  510. package/lib/systems/bodypart/InjuryTracker.d.ts +0 -14
  511. package/lib/systems/bodypart/InjuryTracker.d.ts.map +1 -1
  512. package/lib/systems/bodypart/InjuryTracker.js +0 -12
  513. package/lib/systems/bodypart/InjuryTracker.js.map +1 -1
  514. package/lib/systems/bodypart/MovementPenaltySystem.d.ts +0 -8
  515. package/lib/systems/bodypart/MovementPenaltySystem.d.ts.map +1 -1
  516. package/lib/systems/bodypart/MovementPenaltySystem.js +0 -8
  517. package/lib/systems/bodypart/MovementPenaltySystem.js.map +1 -1
  518. package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts +0 -8
  519. package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts.map +1 -1
  520. package/lib/systems/bodypart/PlayerInjuryTrackingManager.js +0 -8
  521. package/lib/systems/bodypart/PlayerInjuryTrackingManager.js.map +1 -1
  522. package/lib/systems/bodypart/types.d.ts +0 -13
  523. package/lib/systems/bodypart/types.d.ts.map +1 -1
  524. package/lib/systems/bodypart/types.js +0 -5
  525. package/lib/systems/bodypart/types.js.map +1 -1
  526. package/lib/systems/breathing/BreathingDisruptionSystem.d.ts +0 -3
  527. package/lib/systems/breathing/BreathingDisruptionSystem.d.ts.map +1 -1
  528. package/lib/systems/breathing/BreathingDisruptionSystem.js +0 -2
  529. package/lib/systems/breathing/BreathingDisruptionSystem.js.map +1 -1
  530. package/lib/systems/combat/BalanceSystem.d.ts +0 -25
  531. package/lib/systems/combat/BalanceSystem.d.ts.map +1 -1
  532. package/lib/systems/combat/BalanceSystem.js +0 -25
  533. package/lib/systems/combat/BalanceSystem.js.map +1 -1
  534. package/lib/systems/combat/BreakingStatusEffects.d.ts +0 -4
  535. package/lib/systems/combat/BreakingStatusEffects.d.ts.map +1 -1
  536. package/lib/systems/combat/BreakingStatusEffects.js +0 -3
  537. package/lib/systems/combat/BreakingStatusEffects.js.map +1 -1
  538. package/lib/systems/combat/CombatStateSystem.d.ts +0 -9
  539. package/lib/systems/combat/CombatStateSystem.d.ts.map +1 -1
  540. package/lib/systems/combat/CombatStateSystem.js +0 -9
  541. package/lib/systems/combat/CombatStateSystem.js.map +1 -1
  542. package/lib/systems/combat/ConsciousnessSystem.d.ts +0 -16
  543. package/lib/systems/combat/ConsciousnessSystem.d.ts.map +1 -1
  544. package/lib/systems/combat/ConsciousnessSystem.js +0 -16
  545. package/lib/systems/combat/ConsciousnessSystem.js.map +1 -1
  546. package/lib/systems/combat/FallIntegration.d.ts +0 -3
  547. package/lib/systems/combat/FallIntegration.d.ts.map +1 -1
  548. package/lib/systems/combat/FallIntegration.js +0 -3
  549. package/lib/systems/combat/FallIntegration.js.map +1 -1
  550. package/lib/systems/combat/GrappleSystem.d.ts +0 -2
  551. package/lib/systems/combat/GrappleSystem.d.ts.map +1 -1
  552. package/lib/systems/combat/GrappleSystem.js +0 -2
  553. package/lib/systems/combat/GrappleSystem.js.map +1 -1
  554. package/lib/systems/combat/LimbExposureSystem.d.ts +0 -7
  555. package/lib/systems/combat/LimbExposureSystem.d.ts.map +1 -1
  556. package/lib/systems/combat/LimbExposureSystem.js +0 -7
  557. package/lib/systems/combat/LimbExposureSystem.js.map +1 -1
  558. package/lib/systems/combat/PainResponseSystem.d.ts +0 -11
  559. package/lib/systems/combat/PainResponseSystem.d.ts.map +1 -1
  560. package/lib/systems/combat/PainResponseSystem.js +0 -11
  561. package/lib/systems/combat/PainResponseSystem.js.map +1 -1
  562. package/lib/systems/combat/painConsciousnessUtils.d.ts +0 -7
  563. package/lib/systems/combat/painConsciousnessUtils.d.ts.map +1 -1
  564. package/lib/systems/combat/painConsciousnessUtils.js +0 -7
  565. package/lib/systems/combat/painConsciousnessUtils.js.map +1 -1
  566. package/lib/systems/effects.d.ts +11 -0
  567. package/lib/systems/effects.d.ts.map +1 -1
  568. package/lib/systems/effects.js +10 -0
  569. package/lib/systems/effects.js.map +1 -1
  570. package/lib/systems/game.d.ts +16 -0
  571. package/lib/systems/game.d.ts.map +1 -1
  572. package/lib/systems/game.js +1 -0
  573. package/lib/systems/game.js.map +1 -1
  574. package/lib/systems/index.d.ts +5 -1
  575. package/lib/systems/index.d.ts.map +1 -1
  576. package/lib/systems/index.js.map +1 -1
  577. package/lib/systems/movement/InjuryMovementModifier.d.ts +0 -10
  578. package/lib/systems/movement/InjuryMovementModifier.d.ts.map +1 -1
  579. package/lib/systems/movement/InjuryMovementModifier.js +0 -7
  580. package/lib/systems/movement/InjuryMovementModifier.js.map +1 -1
  581. package/lib/systems/movement/integration.d.ts +0 -3
  582. package/lib/systems/movement/integration.d.ts.map +1 -1
  583. package/lib/systems/movement/integration.js +0 -3
  584. package/lib/systems/movement/integration.js.map +1 -1
  585. package/lib/systems/physics/AttackMovementPhysics.d.ts +0 -9
  586. package/lib/systems/physics/AttackMovementPhysics.d.ts.map +1 -1
  587. package/lib/systems/physics/AttackMovementPhysics.js +0 -7
  588. package/lib/systems/physics/AttackMovementPhysics.js.map +1 -1
  589. package/lib/systems/physics/CollisionDetection.d.ts +0 -6
  590. package/lib/systems/physics/CollisionDetection.d.ts.map +1 -1
  591. package/lib/systems/physics/CollisionDetection.js +0 -6
  592. package/lib/systems/physics/CollisionDetection.js.map +1 -1
  593. package/lib/systems/physics/CoordinateMapper.d.ts +0 -1
  594. package/lib/systems/physics/CoordinateMapper.d.ts.map +1 -1
  595. package/lib/systems/physics/CoordinateMapper.js +0 -1
  596. package/lib/systems/physics/CoordinateMapper.js.map +1 -1
  597. package/lib/systems/physics/KnockbackPhysics.d.ts +0 -11
  598. package/lib/systems/physics/KnockbackPhysics.d.ts.map +1 -1
  599. package/lib/systems/physics/KnockbackPhysics.js +0 -8
  600. package/lib/systems/physics/KnockbackPhysics.js.map +1 -1
  601. package/lib/systems/physics/MovementPhysics.d.ts +0 -10
  602. package/lib/systems/physics/MovementPhysics.d.ts.map +1 -1
  603. package/lib/systems/physics/MovementPhysics.js +0 -8
  604. package/lib/systems/physics/MovementPhysics.js.map +1 -1
  605. package/lib/systems/physics/PhysicalReachCalculator.d.ts +0 -6
  606. package/lib/systems/physics/PhysicalReachCalculator.d.ts.map +1 -1
  607. package/lib/systems/physics/PhysicalReachCalculator.js +0 -5
  608. package/lib/systems/physics/PhysicalReachCalculator.js.map +1 -1
  609. package/lib/systems/physics/SpeedModifierSystem.d.ts +0 -5
  610. package/lib/systems/physics/SpeedModifierSystem.d.ts.map +1 -1
  611. package/lib/systems/physics/SpeedModifierSystem.js +0 -4
  612. package/lib/systems/physics/SpeedModifierSystem.js.map +1 -1
  613. package/lib/systems/player.d.ts +0 -5
  614. package/lib/systems/player.d.ts.map +1 -1
  615. package/lib/systems/trigram/TrigramCalculator.d.ts +0 -1
  616. package/lib/systems/trigram/TrigramCalculator.d.ts.map +1 -1
  617. package/lib/systems/trigram/TrigramCalculator.js +0 -1
  618. package/lib/systems/trigram/TrigramCalculator.js.map +1 -1
  619. package/lib/systems/trigram/types.d.ts +0 -4
  620. package/lib/systems/trigram/types.d.ts.map +1 -1
  621. package/lib/systems/trigram/types.js +0 -2
  622. package/lib/systems/trigram/types.js.map +1 -1
  623. package/lib/systems/types.d.ts +7 -2
  624. package/lib/systems/types.d.ts.map +1 -1
  625. package/lib/systems/types.js.map +1 -1
  626. package/lib/systems/vitalpoint/DamageCalculator.d.ts +0 -3
  627. package/lib/systems/vitalpoint/DamageCalculator.d.ts.map +1 -1
  628. package/lib/systems/vitalpoint/DamageCalculator.js +0 -3
  629. package/lib/systems/vitalpoint/DamageCalculator.js.map +1 -1
  630. package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts +0 -8
  631. package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts.map +1 -1
  632. package/lib/systems/vitalpoint/KoreanVitalPoints.js +0 -8
  633. package/lib/systems/vitalpoint/KoreanVitalPoints.js.map +1 -1
  634. package/lib/systems/vitalpoint/VitalPointsData.d.ts +0 -3
  635. package/lib/systems/vitalpoint/VitalPointsData.d.ts.map +1 -1
  636. package/lib/systems/vitalpoint/VitalPointsData.js +0 -1
  637. package/lib/systems/vitalpoint/VitalPointsData.js.map +1 -1
  638. package/lib/types/PhysicsTypes.d.ts +21 -78
  639. package/lib/types/PhysicsTypes.d.ts.map +1 -1
  640. package/lib/types/PhysicsTypes.js +17 -63
  641. package/lib/types/PhysicsTypes.js.map +1 -1
  642. package/lib/types/clothing.d.ts +0 -9
  643. package/lib/types/clothing.d.ts.map +1 -1
  644. package/lib/types/constants/animations.d.ts +35 -1
  645. package/lib/types/constants/animations.d.ts.map +1 -1
  646. package/lib/types/constants/animations.js +12 -1
  647. package/lib/types/constants/animations.js.map +1 -1
  648. package/lib/types/constants/colors.d.ts +28 -2
  649. package/lib/types/constants/colors.d.ts.map +1 -1
  650. package/lib/types/constants/colors.js +30 -4
  651. package/lib/types/constants/colors.js.map +1 -1
  652. package/lib/types/constants/index.d.ts +5 -1
  653. package/lib/types/constants/index.d.ts.map +1 -1
  654. package/lib/types/constants/index.js.map +1 -1
  655. package/lib/types/constants/performance.d.ts +0 -2
  656. package/lib/types/constants/performance.d.ts.map +1 -1
  657. package/lib/types/constants/performance.js +0 -2
  658. package/lib/types/constants/performance.js.map +1 -1
  659. package/lib/types/constants/typography.d.ts +40 -2
  660. package/lib/types/constants/typography.d.ts.map +1 -1
  661. package/lib/types/constants/typography.js +40 -2
  662. package/lib/types/constants/typography.js.map +1 -1
  663. package/lib/types/constants/ui.d.ts +89 -1
  664. package/lib/types/constants/ui.d.ts.map +1 -1
  665. package/lib/types/constants/ui.js +33 -1
  666. package/lib/types/constants/ui.js.map +1 -1
  667. package/lib/types/facial.d.ts +0 -15
  668. package/lib/types/facial.d.ts.map +1 -1
  669. package/lib/types/facial.js +0 -8
  670. package/lib/types/facial.js.map +1 -1
  671. package/lib/types/hand-animation.d.ts +34 -147
  672. package/lib/types/hand-animation.d.ts.map +1 -1
  673. package/lib/types/hand-animation.js +0 -2
  674. package/lib/types/hand-animation.js.map +1 -1
  675. package/lib/types/injury.d.ts +0 -2
  676. package/lib/types/injury.d.ts.map +1 -1
  677. package/lib/types/injury.js +0 -1
  678. package/lib/types/injury.js.map +1 -1
  679. package/lib/types/physics.d.ts +0 -21
  680. package/lib/types/physics.d.ts.map +1 -1
  681. package/lib/types/physics.js +0 -6
  682. package/lib/types/physics.js.map +1 -1
  683. package/lib/types/physicsConstants.d.ts +0 -12
  684. package/lib/types/physicsConstants.d.ts.map +1 -1
  685. package/lib/types/physicsConstants.js +0 -12
  686. package/lib/types/physicsConstants.js.map +1 -1
  687. package/lib/types/player-visual.d.ts +45 -189
  688. package/lib/types/player-visual.d.ts.map +1 -1
  689. package/lib/types/technique.d.ts +1 -5
  690. package/lib/types/technique.d.ts.map +1 -1
  691. package/lib/types/techniqueId.d.ts +0 -1
  692. package/lib/types/techniqueId.d.ts.map +1 -1
  693. package/lib/types/techniqueId.js +0 -1
  694. package/lib/types/techniqueId.js.map +1 -1
  695. package/lib/utils/arenaWorldDimensions.d.ts +0 -11
  696. package/lib/utils/arenaWorldDimensions.d.ts.map +1 -1
  697. package/lib/utils/arenaWorldDimensions.js +0 -6
  698. package/lib/utils/arenaWorldDimensions.js.map +1 -1
  699. package/lib/utils/controlMapping.d.ts +3 -4
  700. package/lib/utils/controlMapping.d.ts.map +1 -1
  701. package/lib/utils/controlMapping.js +1 -2
  702. package/lib/utils/controlMapping.js.map +1 -1
  703. package/lib/utils/deviceDetection.d.ts +0 -5
  704. package/lib/utils/deviceDetection.d.ts.map +1 -1
  705. package/lib/utils/deviceDetection.js +0 -5
  706. package/lib/utils/deviceDetection.js.map +1 -1
  707. package/lib/utils/hapticFeedback.d.ts +23 -95
  708. package/lib/utils/hapticFeedback.d.ts.map +1 -1
  709. package/lib/utils/hapticFeedback.js +9 -39
  710. package/lib/utils/hapticFeedback.js.map +1 -1
  711. package/lib/utils/haptics.d.ts +0 -3
  712. package/lib/utils/haptics.d.ts.map +1 -1
  713. package/lib/utils/haptics.js +0 -1
  714. package/lib/utils/haptics.js.map +1 -1
  715. package/lib/utils/math.d.ts +0 -3
  716. package/lib/utils/math.d.ts.map +1 -1
  717. package/lib/utils/math.js +0 -2
  718. package/lib/utils/math.js.map +1 -1
  719. package/lib/utils/mobileLayoutHelpers.d.ts +0 -3
  720. package/lib/utils/mobileLayoutHelpers.d.ts.map +1 -1
  721. package/lib/utils/mobileLayoutHelpers.js +0 -1
  722. package/lib/utils/mobileLayoutHelpers.js.map +1 -1
  723. package/lib/utils/mobileUIUtils.d.ts +5 -100
  724. package/lib/utils/mobileUIUtils.d.ts.map +1 -1
  725. package/lib/utils/mobileUIUtils.js +0 -9
  726. package/lib/utils/mobileUIUtils.js.map +1 -1
  727. package/lib/utils/physicalAttributeValidation.d.ts.map +1 -1
  728. package/lib/utils/player3DHelpers.d.ts.map +1 -1
  729. package/lib/utils/player3DHelpers.js.map +1 -1
  730. package/lib/utils/responsiveLayoutHelpers.d.ts +0 -65
  731. package/lib/utils/responsiveLayoutHelpers.d.ts.map +1 -1
  732. package/lib/utils/responsiveLayoutHelpers.js +0 -65
  733. package/lib/utils/responsiveLayoutHelpers.js.map +1 -1
  734. package/lib/utils/responsiveOrientationConstants.d.ts +0 -7
  735. package/lib/utils/responsiveOrientationConstants.d.ts.map +1 -1
  736. package/lib/utils/responsiveOrientationConstants.js +0 -7
  737. package/lib/utils/responsiveOrientationConstants.js.map +1 -1
  738. package/lib/utils/safeAreaUtils.d.ts +0 -6
  739. package/lib/utils/safeAreaUtils.d.ts.map +1 -1
  740. package/lib/utils/safeAreaUtils.js +0 -2
  741. package/lib/utils/safeAreaUtils.js.map +1 -1
  742. package/lib/utils/sharedPhysicsConfig.d.ts +0 -4
  743. package/lib/utils/sharedPhysicsConfig.d.ts.map +1 -1
  744. package/lib/utils/sharedPhysicsConfig.js +0 -2
  745. package/lib/utils/sharedPhysicsConfig.js.map +1 -1
  746. package/lib/utils/skeletonScaling.d.ts +0 -9
  747. package/lib/utils/skeletonScaling.d.ts.map +1 -1
  748. package/lib/utils/skeletonScaling.js +0 -1
  749. package/lib/utils/skeletonScaling.js.map +1 -1
  750. package/package.json +11 -11
@@ -33,7 +33,6 @@ import { BodyRegion } from "../../types/common";
33
33
  * Records a single injury with its location, severity, and cumulative hit count.
34
34
  * Used for progressive bruising visualization.
35
35
  *
36
- * @public
37
36
  * @category Injury Tracking
38
37
  * @korean 부상위치
39
38
  */
@@ -58,7 +57,6 @@ export interface InjuryLocation {
58
57
  /**
59
58
  * Configuration for injury tracking behavior.
60
59
  *
61
- * @public
62
60
  * @category Injury Tracking
63
61
  */
64
62
  export interface InjuryTrackerConfig {
@@ -76,7 +74,6 @@ export interface InjuryTrackerConfig {
76
74
  /**
77
75
  * Default injury tracker configuration.
78
76
  *
79
- * @public
80
77
  */
81
78
  export declare const DEFAULT_INJURY_TRACKER_CONFIG: InjuryTrackerConfig;
82
79
  /**
@@ -104,7 +101,6 @@ export declare const DEFAULT_INJURY_TRACKER_CONFIG: InjuryTrackerConfig;
104
101
  * const injuries = tracker.getInjuries();
105
102
  * ```
106
103
  *
107
- * @public
108
104
  * @category Body Part System
109
105
  */
110
106
  export declare class InjuryTracker {
@@ -128,7 +124,6 @@ export declare class InjuryTracker {
128
124
  * @param type - Type of injury
129
125
  * @returns The created or updated injury, or null if damage is below threshold
130
126
  *
131
- * @public
132
127
  */
133
128
  recordInjury(bodyPart: BodyPart, bodyRegion: BodyRegion, position: THREE.Vector3, damage: number, type: InjuryType): InjuryLocation | null;
134
129
  /**
@@ -141,7 +136,6 @@ export declare class InjuryTracker {
141
136
  * @param threshold - Distance threshold
142
137
  * @returns Nearby injury or null
143
138
  *
144
- * @public
145
139
  */
146
140
  findNearbyInjury(bodyPart: BodyPart, position: THREE.Vector3, threshold: number): InjuryLocation | null;
147
141
  /**
@@ -151,7 +145,6 @@ export declare class InjuryTracker {
151
145
  *
152
146
  * @returns Array of all injuries
153
147
  *
154
- * @public
155
148
  */
156
149
  getInjuries(): InjuryLocation[];
157
150
  /**
@@ -162,7 +155,6 @@ export declare class InjuryTracker {
162
155
  * @param bodyPart - Body part to query
163
156
  * @returns Array of injuries on that body part
164
157
  *
165
- * @public
166
158
  */
167
159
  getInjuriesByBodyPart(bodyPart: BodyPart): InjuryLocation[];
168
160
  /**
@@ -182,7 +174,6 @@ export declare class InjuryTracker {
182
174
  * @param hitCount - Number of hits to same location
183
175
  * @returns Hex color string
184
176
  *
185
- * @public
186
177
  */
187
178
  getBruiseColor(severity: number, hitCount: number): string;
188
179
  /**
@@ -193,7 +184,6 @@ export declare class InjuryTracker {
193
184
  * @param damage - Damage amount
194
185
  * @returns Whether to show blood effects
195
186
  *
196
- * @public
197
187
  */
198
188
  shouldShowBloodEffect(damage: number): boolean;
199
189
  /**
@@ -207,7 +197,6 @@ export declare class InjuryTracker {
207
197
  *
208
198
  * **Korean**: 모든 부상 초기화
209
199
  *
210
- * @public
211
200
  */
212
201
  clearInjuries(): void;
213
202
  /**
@@ -215,7 +204,6 @@ export declare class InjuryTracker {
215
204
  *
216
205
  * **Korean**: 만료된 부상 제거
217
206
  *
218
- * @public
219
207
  */
220
208
  removeExpiredInjuries(): void;
221
209
  /**
@@ -223,7 +211,6 @@ export declare class InjuryTracker {
223
211
  *
224
212
  * @returns Current number of tracked injuries
225
213
  *
226
- * @public
227
214
  */
228
215
  getInjuryCount(): number;
229
216
  }
@@ -243,7 +230,6 @@ export declare class InjuryTracker {
243
230
  * const player2Tracker = new InjuryTracker();
244
231
  * ```
245
232
  *
246
- * @public
247
233
  * @deprecated Use an explicitly scoped {@link InjuryTracker} instance per
248
234
  * player/character instead of relying on this shared module singleton. This
249
235
  * export is retained temporarily for backward compatibility with existing
@@ -1 +1 @@
1
- {"version":3,"file":"InjuryTracker.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/InjuryTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,oCAAoC;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;IACjC,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,kDAAkD;IAClD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,yCAAyC;IACzC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,8DAA8D;IAC9D,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;CACzC;AAED;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,mBAMlC,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,mBAAmD;IAMvE;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CACV,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GACf,cAAc,GAAG,IAAI;IAuDxB;;;;;;;;;;;OAWG;IACH,gBAAgB,CACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,KAAK,CAAC,OAAO,EACvB,SAAS,EAAE,MAAM,GAChB,cAAc,GAAG,IAAI;IAiBxB;;;;;;;;OAQG;IACH,WAAW,IAAI,cAAc,EAAE;IAI/B;;;;;;;;;OASG;IACH,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,EAAE;IAI3D;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAa1D;;;;;;;;;OASG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI9C;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;;;;OAMG;IACH,aAAa,IAAI,IAAI;IAKrB;;;;;;OAMG;IACH,qBAAqB,IAAI,IAAI;IAe7B;;;;;;OAMG;IACH,cAAc,IAAI,MAAM;CAGzB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
1
+ {"version":3,"file":"InjuryTracker.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/InjuryTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,oCAAoC;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;IACjC,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,kDAAkD;IAClD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,yCAAyC;IACzC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,8DAA8D;IAC9D,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;CACzC;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,mBAMlC,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,mBAAmD;IAMvE;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CACV,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GACf,cAAc,GAAG,IAAI;IAuDxB;;;;;;;;;;OAUG;IACH,gBAAgB,CACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,KAAK,CAAC,OAAO,EACvB,SAAS,EAAE,MAAM,GAChB,cAAc,GAAG,IAAI;IAiBxB;;;;;;;OAOG;IACH,WAAW,IAAI,cAAc,EAAE;IAI/B;;;;;;;;OAQG;IACH,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,EAAE;IAI3D;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAa1D;;;;;;;;OAQG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI9C;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;;;OAKG;IACH,aAAa,IAAI,IAAI;IAKrB;;;;;OAKG;IACH,qBAAqB,IAAI,IAAI;IAe7B;;;;;OAKG;IACH,cAAc,IAAI,MAAM;CAGzB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -2,7 +2,6 @@
2
2
  /**
3
3
  * Default injury tracker configuration.
4
4
  *
5
- * @public
6
5
  */
7
6
  var DEFAULT_INJURY_TRACKER_CONFIG = {
8
7
  maxInjuries: 50,
@@ -36,7 +35,6 @@ var DEFAULT_INJURY_TRACKER_CONFIG = {
36
35
  * const injuries = tracker.getInjuries();
37
36
  * ```
38
37
  *
39
- * @public
40
38
  * @category Body Part System
41
39
  */
42
40
  var InjuryTracker = class {
@@ -64,7 +62,6 @@ var InjuryTracker = class {
64
62
  * @param type - Type of injury
65
63
  * @returns The created or updated injury, or null if damage is below threshold
66
64
  *
67
- * @public
68
65
  */
69
66
  recordInjury(bodyPart, bodyRegion, position, damage, type) {
70
67
  if (damage < this.config.minDamageForInjury) return null;
@@ -107,7 +104,6 @@ var InjuryTracker = class {
107
104
  * @param threshold - Distance threshold
108
105
  * @returns Nearby injury or null
109
106
  *
110
- * @public
111
107
  */
112
108
  findNearbyInjury(bodyPart, position, threshold) {
113
109
  let closestInjury = null;
@@ -128,7 +124,6 @@ var InjuryTracker = class {
128
124
  *
129
125
  * @returns Array of all injuries
130
126
  *
131
- * @public
132
127
  */
133
128
  getInjuries() {
134
129
  return Array.from(this.injuries.values());
@@ -141,7 +136,6 @@ var InjuryTracker = class {
141
136
  * @param bodyPart - Body part to query
142
137
  * @returns Array of injuries on that body part
143
138
  *
144
- * @public
145
139
  */
146
140
  getInjuriesByBodyPart(bodyPart) {
147
141
  return this.getInjuries().filter((injury) => injury.bodyPart === bodyPart);
@@ -163,7 +157,6 @@ var InjuryTracker = class {
163
157
  * @param hitCount - Number of hits to same location
164
158
  * @returns Hex color string
165
159
  *
166
- * @public
167
160
  */
168
161
  getBruiseColor(severity, hitCount) {
169
162
  const effectiveSeverity = severity + Math.max(0, hitCount - 1) * 10;
@@ -179,7 +172,6 @@ var InjuryTracker = class {
179
172
  * @param damage - Damage amount
180
173
  * @returns Whether to show blood effects
181
174
  *
182
- * @public
183
175
  */
184
176
  shouldShowBloodEffect(damage) {
185
177
  return damage > this.config.bloodEffectThreshold;
@@ -203,7 +195,6 @@ var InjuryTracker = class {
203
195
  *
204
196
  * **Korean**: 모든 부상 초기화
205
197
  *
206
- * @public
207
198
  */
208
199
  clearInjuries() {
209
200
  this.injuries.clear();
@@ -214,7 +205,6 @@ var InjuryTracker = class {
214
205
  *
215
206
  * **Korean**: 만료된 부상 제거
216
207
  *
217
- * @public
218
208
  */
219
209
  removeExpiredInjuries() {
220
210
  const now = Date.now();
@@ -227,7 +217,6 @@ var InjuryTracker = class {
227
217
  *
228
218
  * @returns Current number of tracked injuries
229
219
  *
230
- * @public
231
220
  */
232
221
  getInjuryCount() {
233
222
  return this.injuries.size;
@@ -249,7 +238,6 @@ var InjuryTracker = class {
249
238
  * const player2Tracker = new InjuryTracker();
250
239
  * ```
251
240
  *
252
- * @public
253
241
  * @deprecated Use an explicitly scoped {@link InjuryTracker} instance per
254
242
  * player/character instead of relying on this shared module singleton. This
255
243
  * export is retained temporarily for backward compatibility with existing
@@ -1 +1 @@
1
- {"version":3,"file":"InjuryTracker.js","names":[],"sources":["../../../src/systems/bodypart/InjuryTracker.ts"],"sourcesContent":["/**\n * Injury Tracking System\n * \n * **Korean**: 부상 추적 시스템\n * \n * Tracks individual injuries on character models for realistic trauma visualization.\n * Records injury location, type, severity, and timestamp for progressive bruising,\n * cuts, and bleeding effects during combat.\n * \n * ## Features\n * \n * - Track injuries by body part and 3D position\n * - Progressive bruising: Multiple hits to same location darken existing bruises\n * - Color-coded severity (getBruiseColor): Yellow (fresh), Purple (moderate), Dark red (severe)\n * - Note: TraumaOverlay3D uses different progression: Dark red → Indigo → Black\n * - Blood effects triggered when damage > 30 in single hit\n * - Injury persistence across combat rounds\n * - Nearby injury lookup using linear scan over tracked injuries (O(n))\n * \n * @module systems/bodypart/InjuryTracker\n * @category Body Part System\n * @korean 부상추적시스템\n */\n\nimport * as THREE from \"three\";\nimport { BodyPart } from \"./types\";\nimport { InjuryType } from \"../../types/injury\";\nimport { BodyRegion } from \"../../types/common\";\n\n/**\n * Individual injury location data.\n * \n * **Korean**: 부상 위치 데이터\n * \n * Records a single injury with its location, severity, and cumulative hit count.\n * Used for progressive bruising visualization.\n * \n * @public\n * @category Injury Tracking\n * @korean 부상위치\n */\nexport interface InjuryLocation {\n /** Unique identifier */\n readonly id: string;\n /** Body part affected */\n readonly bodyPart: BodyPart;\n /** Body region for hit detection */\n readonly bodyRegion: BodyRegion;\n /** 3D position relative to character center */\n readonly position: THREE.Vector3;\n /** Damage severity (0-100) */\n readonly severity: number;\n /** Number of hits to this location (for progressive bruising) */\n readonly hitCount: number;\n /** Timestamp when injury occurred */\n readonly timestamp: number;\n /** Injury type */\n readonly type: InjuryType;\n}\n\n/**\n * Configuration for injury tracking behavior.\n * \n * @public\n * @category Injury Tracking\n */\nexport interface InjuryTrackerConfig {\n /** Maximum number of injuries to track per character */\n readonly maxInjuries: number;\n /** Distance threshold for considering injuries at same location (in units) */\n readonly sameLocationThreshold: number;\n /** Minimum damage required to create an injury */\n readonly minDamageForInjury: number;\n /** Damage threshold for blood effects */\n readonly bloodEffectThreshold: number;\n /** Time before injuries are removed/expired (milliseconds) */\n readonly injuryExpirationTimeMs: number;\n}\n\n/**\n * Default injury tracker configuration.\n * \n * @public\n */\nexport const DEFAULT_INJURY_TRACKER_CONFIG: InjuryTrackerConfig = {\n maxInjuries: 50, // Reasonable limit for performance\n sameLocationThreshold: 0.6, // 0.6 units distance (accommodates ±0.15 randomization)\n minDamageForInjury: 5, // Minimum 5 damage to show injury\n bloodEffectThreshold: 30, // Blood effects when damage > 30\n injuryExpirationTimeMs: 30000, // Injuries are removed after 30 seconds\n} as const;\n\n/**\n * Injury Tracker System.\n * \n * **Korean**: 부상 추적 시스템\n * \n * Manages injury recording and retrieval for trauma visualization.\n * Implements progressive bruising by tracking hit counts at similar locations.\n * \n * @example\n * ```typescript\n * const tracker = new InjuryTracker();\n * \n * // Record injury from hit\n * const injury = tracker.recordInjury(\n * BodyPart.TORSO_UPPER,\n * BodyRegion.TORSO,\n * new THREE.Vector3(0, 1.5, 0),\n * 25,\n * InjuryType.BRUISE\n * );\n * \n * // Get all injuries for visualization\n * const injuries = tracker.getInjuries();\n * ```\n * \n * @public\n * @category Body Part System\n */\nexport class InjuryTracker {\n private injuries: Map<string, InjuryLocation>;\n private config: InjuryTrackerConfig;\n private nextId: number;\n\n constructor(config: InjuryTrackerConfig = DEFAULT_INJURY_TRACKER_CONFIG) {\n this.injuries = new Map();\n this.config = config;\n this.nextId = 0;\n }\n\n /**\n * Record a new injury or update existing one at similar location.\n * \n * **Korean**: 부상 기록\n * \n * If an injury exists near the hit position, it updates the existing injury\n * with increased severity and hit count (progressive bruising). Otherwise,\n * creates a new injury.\n * \n * @param bodyPart - Body part affected\n * @param bodyRegion - Body region for damage distribution\n * @param position - 3D position relative to character center\n * @param damage - Damage amount (0-100)\n * @param type - Type of injury\n * @returns The created or updated injury, or null if damage is below threshold\n * \n * @public\n */\n recordInjury(\n bodyPart: BodyPart,\n bodyRegion: BodyRegion,\n position: THREE.Vector3,\n damage: number,\n type: InjuryType\n ): InjuryLocation | null {\n // Check if damage is significant enough to track\n if (damage < this.config.minDamageForInjury) {\n return null;\n }\n\n // Find nearby injury at similar location (same body part)\n const existing = this.findNearbyInjury(bodyPart, position, this.config.sameLocationThreshold);\n\n // Only merge injuries that also match type and body region to avoid\n // incorrectly combining different injury types at the same spot\n const shouldMerge =\n !!existing &&\n existing.type === type &&\n existing.bodyRegion === bodyRegion;\n\n if (shouldMerge && existing) {\n // Progressive bruising - update existing injury\n const newSeverity = Math.min(100, existing.severity + damage / 2);\n const newHitCount = existing.hitCount + 1;\n\n const updated: InjuryLocation = {\n ...existing,\n severity: newSeverity,\n hitCount: newHitCount,\n timestamp: Date.now(),\n };\n\n this.injuries.set(existing.id, updated);\n return updated;\n } else {\n // Create new injury\n const id = `injury-${this.nextId++}`;\n const injury: InjuryLocation = {\n id,\n bodyPart,\n bodyRegion,\n position: position.clone(),\n severity: damage,\n hitCount: 1,\n timestamp: Date.now(),\n type,\n };\n\n this.injuries.set(id, injury);\n\n // Enforce max injuries limit\n if (this.injuries.size > this.config.maxInjuries) {\n this.removeOldestInjury();\n }\n\n return injury;\n }\n }\n\n /**\n * Find injury near a given position on the same body part.\n * \n * **Korean**: 인근 부상 찾기\n * \n * @param bodyPart - Body part to search\n * @param position - Position to search near\n * @param threshold - Distance threshold\n * @returns Nearby injury or null\n * \n * @public\n */\n findNearbyInjury(\n bodyPart: BodyPart,\n position: THREE.Vector3,\n threshold: number\n ): InjuryLocation | null {\n let closestInjury: InjuryLocation | null = null;\n let closestDistance = threshold;\n\n for (const injury of this.injuries.values()) {\n if (injury.bodyPart === bodyPart) {\n const distance = injury.position.distanceTo(position);\n if (distance < closestDistance) {\n closestDistance = distance;\n closestInjury = injury;\n }\n }\n }\n\n return closestInjury;\n }\n\n /**\n * Get all tracked injuries.\n * \n * **Korean**: 모든 부상 조회\n * \n * @returns Array of all injuries\n * \n * @public\n */\n getInjuries(): InjuryLocation[] {\n return Array.from(this.injuries.values());\n }\n\n /**\n * Get injuries for a specific body part.\n * \n * **Korean**: 신체 부위 부상 조회\n * \n * @param bodyPart - Body part to query\n * @returns Array of injuries on that body part\n * \n * @public\n */\n getInjuriesByBodyPart(bodyPart: BodyPart): InjuryLocation[] {\n return this.getInjuries().filter((injury) => injury.bodyPart === bodyPart);\n }\n\n /**\n * Get bruise color based on severity and hit count.\n * \n * **Korean**: 타박상 색상 가져오기\n * \n * Progressive color scheme (for reference - TraumaOverlay3D uses its own colors):\n * - Light bruising (severity < 20): Yellow (#ffeb3b)\n * - Moderate bruising (severity < 50): Purple (#9c27b0)\n * - Severe bruising (severity >= 50): Dark red (#b71c1c)\n * \n * Note: TraumaOverlay3D uses Dark red → Indigo → Black progression.\n * Consider using TraumaOverlay3D's getBruiseColor for consistent visualization.\n * \n * @param severity - Injury severity (0-100)\n * @param hitCount - Number of hits to same location\n * @returns Hex color string\n * \n * @public\n */\n getBruiseColor(severity: number, hitCount: number): string {\n // Progressive darkening with hit count (subtract 1 since first hit shouldn't darken)\n const effectiveSeverity = severity + Math.max(0, hitCount - 1) * 10;\n\n if (effectiveSeverity < 20) {\n return \"#ffeb3b\"; // Yellow - light bruising\n } else if (effectiveSeverity < 50) {\n return \"#9c27b0\"; // Purple - moderate bruising\n } else {\n return \"#b71c1c\"; // Dark red - severe bruising\n }\n }\n\n /**\n * Check if damage should trigger blood effects.\n * \n * **Korean**: 출혈 효과 필요 여부 확인\n * \n * @param damage - Damage amount\n * @returns Whether to show blood effects\n * \n * @public\n */\n shouldShowBloodEffect(damage: number): boolean {\n return damage > this.config.bloodEffectThreshold;\n }\n\n /**\n * Remove oldest injury to maintain performance.\n * \n * @private\n */\n private removeOldestInjury(): void {\n let oldestId: string | null = null;\n let oldestTimestamp = Infinity;\n\n for (const [id, injury] of this.injuries.entries()) {\n if (injury.timestamp < oldestTimestamp) {\n oldestTimestamp = injury.timestamp;\n oldestId = id;\n }\n }\n\n if (oldestId) {\n this.injuries.delete(oldestId);\n }\n }\n\n /**\n * Clear all injuries (for new match/round).\n * \n * **Korean**: 모든 부상 초기화\n * \n * @public\n */\n clearInjuries(): void {\n this.injuries.clear();\n this.nextId = 0;\n }\n\n /**\n * Remove injuries older than expiration time.\n * \n * **Korean**: 만료된 부상 제거\n * \n * @public\n */\n removeExpiredInjuries(): void {\n const now = Date.now();\n const expiredIds: string[] = [];\n\n for (const [id, injury] of this.injuries.entries()) {\n if (now - injury.timestamp > this.config.injuryExpirationTimeMs) {\n expiredIds.push(id);\n }\n }\n\n for (const id of expiredIds) {\n this.injuries.delete(id);\n }\n }\n\n /**\n * Get injury count for performance monitoring.\n * \n * @returns Current number of tracked injuries\n * \n * @public\n */\n getInjuryCount(): number {\n return this.injuries.size;\n }\n}\n\n/**\n * Legacy module-level injury tracker singleton.\n *\n * **Korean**: 레거시 모듈 전역 부상 추적기\n *\n * **Warning**: This singleton does **not** track any playerId/character identifier\n * on injuries. All recorded injuries are stored together in a single collection.\n * For any scenario with more than one character (including 1v1 combat), you\n * **must** create a separate {@link InjuryTracker} instance per character to\n * avoid mixing injuries between characters:\n *\n * ```typescript\n * const player1Tracker = new InjuryTracker();\n * const player2Tracker = new InjuryTracker();\n * ```\n *\n * @public\n * @deprecated Use an explicitly scoped {@link InjuryTracker} instance per\n * player/character instead of relying on this shared module singleton. This\n * export is retained temporarily for backward compatibility with existing\n * consumers importing `injuryTracker` from `systems/bodypart` and will be\n * removed in a future major release.\n */\nexport const injuryTracker = new InjuryTracker();\n"],"mappings":"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"}
1
+ {"version":3,"file":"InjuryTracker.js","names":[],"sources":["../../../src/systems/bodypart/InjuryTracker.ts"],"sourcesContent":["/**\n * Injury Tracking System\n * \n * **Korean**: 부상 추적 시스템\n * \n * Tracks individual injuries on character models for realistic trauma visualization.\n * Records injury location, type, severity, and timestamp for progressive bruising,\n * cuts, and bleeding effects during combat.\n * \n * ## Features\n * \n * - Track injuries by body part and 3D position\n * - Progressive bruising: Multiple hits to same location darken existing bruises\n * - Color-coded severity (getBruiseColor): Yellow (fresh), Purple (moderate), Dark red (severe)\n * - Note: TraumaOverlay3D uses different progression: Dark red → Indigo → Black\n * - Blood effects triggered when damage > 30 in single hit\n * - Injury persistence across combat rounds\n * - Nearby injury lookup using linear scan over tracked injuries (O(n))\n * \n * @module systems/bodypart/InjuryTracker\n * @category Body Part System\n * @korean 부상추적시스템\n */\n\nimport * as THREE from \"three\";\nimport { BodyPart } from \"./types\";\nimport { InjuryType } from \"../../types/injury\";\nimport { BodyRegion } from \"../../types/common\";\n\n/**\n * Individual injury location data.\n * \n * **Korean**: 부상 위치 데이터\n * \n * Records a single injury with its location, severity, and cumulative hit count.\n * Used for progressive bruising visualization.\n * \n * @category Injury Tracking\n * @korean 부상위치\n */\nexport interface InjuryLocation {\n /** Unique identifier */\n readonly id: string;\n /** Body part affected */\n readonly bodyPart: BodyPart;\n /** Body region for hit detection */\n readonly bodyRegion: BodyRegion;\n /** 3D position relative to character center */\n readonly position: THREE.Vector3;\n /** Damage severity (0-100) */\n readonly severity: number;\n /** Number of hits to this location (for progressive bruising) */\n readonly hitCount: number;\n /** Timestamp when injury occurred */\n readonly timestamp: number;\n /** Injury type */\n readonly type: InjuryType;\n}\n\n/**\n * Configuration for injury tracking behavior.\n * \n * @category Injury Tracking\n */\nexport interface InjuryTrackerConfig {\n /** Maximum number of injuries to track per character */\n readonly maxInjuries: number;\n /** Distance threshold for considering injuries at same location (in units) */\n readonly sameLocationThreshold: number;\n /** Minimum damage required to create an injury */\n readonly minDamageForInjury: number;\n /** Damage threshold for blood effects */\n readonly bloodEffectThreshold: number;\n /** Time before injuries are removed/expired (milliseconds) */\n readonly injuryExpirationTimeMs: number;\n}\n\n/**\n * Default injury tracker configuration.\n * \n */\nexport const DEFAULT_INJURY_TRACKER_CONFIG: InjuryTrackerConfig = {\n maxInjuries: 50, // Reasonable limit for performance\n sameLocationThreshold: 0.6, // 0.6 units distance (accommodates ±0.15 randomization)\n minDamageForInjury: 5, // Minimum 5 damage to show injury\n bloodEffectThreshold: 30, // Blood effects when damage > 30\n injuryExpirationTimeMs: 30000, // Injuries are removed after 30 seconds\n} as const;\n\n/**\n * Injury Tracker System.\n * \n * **Korean**: 부상 추적 시스템\n * \n * Manages injury recording and retrieval for trauma visualization.\n * Implements progressive bruising by tracking hit counts at similar locations.\n * \n * @example\n * ```typescript\n * const tracker = new InjuryTracker();\n * \n * // Record injury from hit\n * const injury = tracker.recordInjury(\n * BodyPart.TORSO_UPPER,\n * BodyRegion.TORSO,\n * new THREE.Vector3(0, 1.5, 0),\n * 25,\n * InjuryType.BRUISE\n * );\n * \n * // Get all injuries for visualization\n * const injuries = tracker.getInjuries();\n * ```\n * \n * @category Body Part System\n */\nexport class InjuryTracker {\n private injuries: Map<string, InjuryLocation>;\n private config: InjuryTrackerConfig;\n private nextId: number;\n\n constructor(config: InjuryTrackerConfig = DEFAULT_INJURY_TRACKER_CONFIG) {\n this.injuries = new Map();\n this.config = config;\n this.nextId = 0;\n }\n\n /**\n * Record a new injury or update existing one at similar location.\n * \n * **Korean**: 부상 기록\n * \n * If an injury exists near the hit position, it updates the existing injury\n * with increased severity and hit count (progressive bruising). Otherwise,\n * creates a new injury.\n * \n * @param bodyPart - Body part affected\n * @param bodyRegion - Body region for damage distribution\n * @param position - 3D position relative to character center\n * @param damage - Damage amount (0-100)\n * @param type - Type of injury\n * @returns The created or updated injury, or null if damage is below threshold\n * \n */\n recordInjury(\n bodyPart: BodyPart,\n bodyRegion: BodyRegion,\n position: THREE.Vector3,\n damage: number,\n type: InjuryType\n ): InjuryLocation | null {\n // Check if damage is significant enough to track\n if (damage < this.config.minDamageForInjury) {\n return null;\n }\n\n // Find nearby injury at similar location (same body part)\n const existing = this.findNearbyInjury(bodyPart, position, this.config.sameLocationThreshold);\n\n // Only merge injuries that also match type and body region to avoid\n // incorrectly combining different injury types at the same spot\n const shouldMerge =\n !!existing &&\n existing.type === type &&\n existing.bodyRegion === bodyRegion;\n\n if (shouldMerge && existing) {\n // Progressive bruising - update existing injury\n const newSeverity = Math.min(100, existing.severity + damage / 2);\n const newHitCount = existing.hitCount + 1;\n\n const updated: InjuryLocation = {\n ...existing,\n severity: newSeverity,\n hitCount: newHitCount,\n timestamp: Date.now(),\n };\n\n this.injuries.set(existing.id, updated);\n return updated;\n } else {\n // Create new injury\n const id = `injury-${this.nextId++}`;\n const injury: InjuryLocation = {\n id,\n bodyPart,\n bodyRegion,\n position: position.clone(),\n severity: damage,\n hitCount: 1,\n timestamp: Date.now(),\n type,\n };\n\n this.injuries.set(id, injury);\n\n // Enforce max injuries limit\n if (this.injuries.size > this.config.maxInjuries) {\n this.removeOldestInjury();\n }\n\n return injury;\n }\n }\n\n /**\n * Find injury near a given position on the same body part.\n * \n * **Korean**: 인근 부상 찾기\n * \n * @param bodyPart - Body part to search\n * @param position - Position to search near\n * @param threshold - Distance threshold\n * @returns Nearby injury or null\n * \n */\n findNearbyInjury(\n bodyPart: BodyPart,\n position: THREE.Vector3,\n threshold: number\n ): InjuryLocation | null {\n let closestInjury: InjuryLocation | null = null;\n let closestDistance = threshold;\n\n for (const injury of this.injuries.values()) {\n if (injury.bodyPart === bodyPart) {\n const distance = injury.position.distanceTo(position);\n if (distance < closestDistance) {\n closestDistance = distance;\n closestInjury = injury;\n }\n }\n }\n\n return closestInjury;\n }\n\n /**\n * Get all tracked injuries.\n * \n * **Korean**: 모든 부상 조회\n * \n * @returns Array of all injuries\n * \n */\n getInjuries(): InjuryLocation[] {\n return Array.from(this.injuries.values());\n }\n\n /**\n * Get injuries for a specific body part.\n * \n * **Korean**: 신체 부위 부상 조회\n * \n * @param bodyPart - Body part to query\n * @returns Array of injuries on that body part\n * \n */\n getInjuriesByBodyPart(bodyPart: BodyPart): InjuryLocation[] {\n return this.getInjuries().filter((injury) => injury.bodyPart === bodyPart);\n }\n\n /**\n * Get bruise color based on severity and hit count.\n * \n * **Korean**: 타박상 색상 가져오기\n * \n * Progressive color scheme (for reference - TraumaOverlay3D uses its own colors):\n * - Light bruising (severity < 20): Yellow (#ffeb3b)\n * - Moderate bruising (severity < 50): Purple (#9c27b0)\n * - Severe bruising (severity >= 50): Dark red (#b71c1c)\n * \n * Note: TraumaOverlay3D uses Dark red → Indigo → Black progression.\n * Consider using TraumaOverlay3D's getBruiseColor for consistent visualization.\n * \n * @param severity - Injury severity (0-100)\n * @param hitCount - Number of hits to same location\n * @returns Hex color string\n * \n */\n getBruiseColor(severity: number, hitCount: number): string {\n // Progressive darkening with hit count (subtract 1 since first hit shouldn't darken)\n const effectiveSeverity = severity + Math.max(0, hitCount - 1) * 10;\n\n if (effectiveSeverity < 20) {\n return \"#ffeb3b\"; // Yellow - light bruising\n } else if (effectiveSeverity < 50) {\n return \"#9c27b0\"; // Purple - moderate bruising\n } else {\n return \"#b71c1c\"; // Dark red - severe bruising\n }\n }\n\n /**\n * Check if damage should trigger blood effects.\n * \n * **Korean**: 출혈 효과 필요 여부 확인\n * \n * @param damage - Damage amount\n * @returns Whether to show blood effects\n * \n */\n shouldShowBloodEffect(damage: number): boolean {\n return damage > this.config.bloodEffectThreshold;\n }\n\n /**\n * Remove oldest injury to maintain performance.\n * \n * @private\n */\n private removeOldestInjury(): void {\n let oldestId: string | null = null;\n let oldestTimestamp = Infinity;\n\n for (const [id, injury] of this.injuries.entries()) {\n if (injury.timestamp < oldestTimestamp) {\n oldestTimestamp = injury.timestamp;\n oldestId = id;\n }\n }\n\n if (oldestId) {\n this.injuries.delete(oldestId);\n }\n }\n\n /**\n * Clear all injuries (for new match/round).\n * \n * **Korean**: 모든 부상 초기화\n * \n */\n clearInjuries(): void {\n this.injuries.clear();\n this.nextId = 0;\n }\n\n /**\n * Remove injuries older than expiration time.\n * \n * **Korean**: 만료된 부상 제거\n * \n */\n removeExpiredInjuries(): void {\n const now = Date.now();\n const expiredIds: string[] = [];\n\n for (const [id, injury] of this.injuries.entries()) {\n if (now - injury.timestamp > this.config.injuryExpirationTimeMs) {\n expiredIds.push(id);\n }\n }\n\n for (const id of expiredIds) {\n this.injuries.delete(id);\n }\n }\n\n /**\n * Get injury count for performance monitoring.\n * \n * @returns Current number of tracked injuries\n * \n */\n getInjuryCount(): number {\n return this.injuries.size;\n }\n}\n\n/**\n * Legacy module-level injury tracker singleton.\n *\n * **Korean**: 레거시 모듈 전역 부상 추적기\n *\n * **Warning**: This singleton does **not** track any playerId/character identifier\n * on injuries. All recorded injuries are stored together in a single collection.\n * For any scenario with more than one character (including 1v1 combat), you\n * **must** create a separate {@link InjuryTracker} instance per character to\n * avoid mixing injuries between characters:\n *\n * ```typescript\n * const player1Tracker = new InjuryTracker();\n * const player2Tracker = new InjuryTracker();\n * ```\n *\n * @deprecated Use an explicitly scoped {@link InjuryTracker} instance per\n * player/character instead of relying on this shared module singleton. This\n * export is retained temporarily for backward compatibility with existing\n * consumers importing `injuryTracker` from `systems/bodypart` and will be\n * removed in a future major release.\n */\nexport const injuryTracker = new InjuryTracker();\n"],"mappings":";;;;;AAiFA,IAAa,gCAAqD;CAChE,aAAa;CACb,uBAAuB;CACvB,oBAAoB;CACpB,sBAAsB;CACtB,wBAAwB;CACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BD,IAAa,gBAAb,MAA2B;CACzB;CACA;CACA;CAEA,YAAY,SAA8B,+BAA+B;EACvE,KAAK,2BAAW,IAAI,KAAK;EACzB,KAAK,SAAS;EACd,KAAK,SAAS;;;;;;;;;;;;;;;;;;;CAoBhB,aACE,UACA,YACA,UACA,QACA,MACuB;EAEvB,IAAI,SAAS,KAAK,OAAO,oBACvB,OAAO;EAIT,MAAM,WAAW,KAAK,iBAAiB,UAAU,UAAU,KAAK,OAAO,sBAAsB;EAS7F,IAJE,CAAC,CAAC,YACF,SAAS,SAAS,QAClB,SAAS,eAAe,cAEP,UAAU;GAE3B,MAAM,cAAc,KAAK,IAAI,KAAK,SAAS,WAAW,SAAS,EAAE;GACjE,MAAM,cAAc,SAAS,WAAW;GAExC,MAAM,UAA0B;IAC9B,GAAG;IACH,UAAU;IACV,UAAU;IACV,WAAW,KAAK,KAAK;IACtB;GAED,KAAK,SAAS,IAAI,SAAS,IAAI,QAAQ;GACvC,OAAO;SACF;GAEL,MAAM,KAAK,UAAU,KAAK;GAC1B,MAAM,SAAyB;IAC7B;IACA;IACA;IACA,UAAU,SAAS,OAAO;IAC1B,UAAU;IACV,UAAU;IACV,WAAW,KAAK,KAAK;IACrB;IACD;GAED,KAAK,SAAS,IAAI,IAAI,OAAO;GAG7B,IAAI,KAAK,SAAS,OAAO,KAAK,OAAO,aACnC,KAAK,oBAAoB;GAG3B,OAAO;;;;;;;;;;;;;;CAeX,iBACE,UACA,UACA,WACuB;EACvB,IAAI,gBAAuC;EAC3C,IAAI,kBAAkB;EAEtB,KAAK,MAAM,UAAU,KAAK,SAAS,QAAQ,EACzC,IAAI,OAAO,aAAa,UAAU;GAChC,MAAM,WAAW,OAAO,SAAS,WAAW,SAAS;GACrD,IAAI,WAAW,iBAAiB;IAC9B,kBAAkB;IAClB,gBAAgB;;;EAKtB,OAAO;;;;;;;;;;CAWT,cAAgC;EAC9B,OAAO,MAAM,KAAK,KAAK,SAAS,QAAQ,CAAC;;;;;;;;;;;CAY3C,sBAAsB,UAAsC;EAC1D,OAAO,KAAK,aAAa,CAAC,QAAQ,WAAW,OAAO,aAAa,SAAS;;;;;;;;;;;;;;;;;;;;CAqB5E,eAAe,UAAkB,UAA0B;EAEzD,MAAM,oBAAoB,WAAW,KAAK,IAAI,GAAG,WAAW,EAAE,GAAG;EAEjE,IAAI,oBAAoB,IACtB,OAAO;OACF,IAAI,oBAAoB,IAC7B,OAAO;OAEP,OAAO;;;;;;;;;;;CAaX,sBAAsB,QAAyB;EAC7C,OAAO,SAAS,KAAK,OAAO;;;;;;;CAQ9B,qBAAmC;EACjC,IAAI,WAA0B;EAC9B,IAAI,kBAAkB;EAEtB,KAAK,MAAM,CAAC,IAAI,WAAW,KAAK,SAAS,SAAS,EAChD,IAAI,OAAO,YAAY,iBAAiB;GACtC,kBAAkB,OAAO;GACzB,WAAW;;EAIf,IAAI,UACF,KAAK,SAAS,OAAO,SAAS;;;;;;;;CAUlC,gBAAsB;EACpB,KAAK,SAAS,OAAO;EACrB,KAAK,SAAS;;;;;;;;CAShB,wBAA8B;EAC5B,MAAM,MAAM,KAAK,KAAK;EACtB,MAAM,aAAuB,EAAE;EAE/B,KAAK,MAAM,CAAC,IAAI,WAAW,KAAK,SAAS,SAAS,EAChD,IAAI,MAAM,OAAO,YAAY,KAAK,OAAO,wBACvC,WAAW,KAAK,GAAG;EAIvB,KAAK,MAAM,MAAM,YACf,KAAK,SAAS,OAAO,GAAG;;;;;;;;CAU5B,iBAAyB;EACvB,OAAO,KAAK,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;AA0BzB,IAAa,gBAAgB,IAAI,eAAe"}
@@ -58,7 +58,6 @@ import { BodyPart, BodyPartHealth, BodyPartMaxHealth, MovementPenalty, InstantMo
58
58
  * const actualSpeed = baseSpeed * penalty.speedMultiplier;
59
59
  * ```
60
60
  *
61
- * @public
62
61
  * @category Body Part System
63
62
  */
64
63
  export declare class MovementPenaltySystem {
@@ -76,7 +75,6 @@ export declare class MovementPenaltySystem {
76
75
  * @param currentTime - Current timestamp for instant penalty expiry check
77
76
  * @returns Movement penalty with all modifiers
78
77
  *
79
- * @public
80
78
  */
81
79
  calculateMovementPenalty(health: BodyPartHealth, maxHealth: BodyPartMaxHealth, instantPenalty?: InstantMovementPenalty, currentTime?: number): MovementPenalty;
82
80
  /**
@@ -104,7 +102,6 @@ export declare class MovementPenaltySystem {
104
102
  * @param movementDirection - Direction of movement (positive = right, negative = left)
105
103
  * @returns Additional speed multiplier for asymmetric penalty
106
104
  *
107
- * @public
108
105
  */
109
106
  calculateAsymmetricPenalty(health: BodyPartHealth, maxHealth: BodyPartMaxHealth, movementDirection: {
110
107
  x: number;
@@ -122,7 +119,6 @@ export declare class MovementPenaltySystem {
122
119
  * @param currentTime - Timestamp when strike occurred
123
120
  * @returns Instant movement penalty configuration
124
121
  *
125
- * @public
126
122
  */
127
123
  createInstantPenalty(affectedPart: BodyPart.LEG_LEFT | BodyPart.LEG_RIGHT, currentTime?: number): InstantMovementPenalty;
128
124
  /**
@@ -137,7 +133,6 @@ export declare class MovementPenaltySystem {
137
133
  * @param maxHealth - Maximum health values
138
134
  * @returns True if player should enter vulnerable state
139
135
  *
140
- * @public
141
136
  */
142
137
  shouldEnterVulnerableState(health: BodyPartHealth, maxHealth: BodyPartMaxHealth): boolean;
143
138
  /**
@@ -152,7 +147,6 @@ export declare class MovementPenaltySystem {
152
147
  * @param maxHealth - Maximum health values
153
148
  * @returns True if player should enter helpless state
154
149
  *
155
- * @public
156
150
  */
157
151
  shouldEnterHelplessState(health: BodyPartHealth, maxHealth: BodyPartMaxHealth): boolean;
158
152
  /**
@@ -171,7 +165,6 @@ export declare class MovementPenaltySystem {
171
165
  * @param currentTime - Current timestamp
172
166
  * @returns Final movement speed with all penalties applied
173
167
  *
174
- * @public
175
168
  */
176
169
  calculateModifiedSpeed(baseSpeed: number, health: BodyPartHealth, maxHealth: BodyPartMaxHealth, movementDirection: {
177
170
  x: number;
@@ -185,7 +178,6 @@ export declare class MovementPenaltySystem {
185
178
  *
186
179
  * Provides global access to the movement penalty system throughout the game.
187
180
  *
188
- * @public
189
181
  */
190
182
  export declare const movementPenaltySystem: MovementPenaltySystem;
191
183
  //# sourceMappingURL=MovementPenaltySystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MovementPenaltySystem.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/MovementPenaltySystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,iBAAiB,EAEjB,eAAe,EACf,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,qBAAqB;IAChC;;;;;;;;;;;;;;;OAeG;IACH,wBAAwB,CACtB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,EAC5B,cAAc,CAAC,EAAE,sBAAsB,EACvC,WAAW,GAAE,MAAmB,GAC/B,eAAe;IAiDlB;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IA6BhC;;;;;;;;;;;;;;;OAeG;IACH,0BAA0B,CACxB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,EAC5B,iBAAiB,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,MAAM;IAqCT;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAClB,YAAY,EAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,EACpD,WAAW,GAAE,MAAmB,GAC/B,sBAAsB;IASzB;;;;;;;;;;;;;OAaG;IACH,0BAA0B,CACxB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,GAC3B,OAAO;IASV;;;;;;;;;;;;;OAaG;IACH,wBAAwB,CACtB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,GAC3B,OAAO;IAWV;;;;;;;;;;;;;;;;;OAiBG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,EAC5B,iBAAiB,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAC3C,cAAc,CAAC,EAAE,sBAAsB,EACvC,WAAW,GAAE,MAAmB,GAC/B,MAAM;CAmBV;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,uBAA8B,CAAC"}
1
+ {"version":3,"file":"MovementPenaltySystem.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/MovementPenaltySystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,iBAAiB,EAEjB,eAAe,EACf,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,qBAAqB;IAChC;;;;;;;;;;;;;;OAcG;IACH,wBAAwB,CACtB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,EAC5B,cAAc,CAAC,EAAE,sBAAsB,EACvC,WAAW,GAAE,MAAmB,GAC/B,eAAe;IAiDlB;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IA6BhC;;;;;;;;;;;;;;OAcG;IACH,0BAA0B,CACxB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,EAC5B,iBAAiB,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,MAAM;IAqCT;;;;;;;;;;;;OAYG;IACH,oBAAoB,CAClB,YAAY,EAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,EACpD,WAAW,GAAE,MAAmB,GAC/B,sBAAsB;IASzB;;;;;;;;;;;;OAYG;IACH,0BAA0B,CACxB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,GAC3B,OAAO;IASV;;;;;;;;;;;;OAYG;IACH,wBAAwB,CACtB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,GAC3B,OAAO;IAWV;;;;;;;;;;;;;;;;OAgBG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,EAC5B,iBAAiB,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAC3C,cAAc,CAAC,EAAE,sBAAsB,EACvC,WAAW,GAAE,MAAmB,GAC/B,MAAM;CAmBV;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,uBAA8B,CAAC"}
@@ -59,7 +59,6 @@ import { LegInjuryState, MOVEMENT_PENALTY_CONSTANTS } from "./types.js";
59
59
  * const actualSpeed = baseSpeed * penalty.speedMultiplier;
60
60
  * ```
61
61
  *
62
- * @public
63
62
  * @category Body Part System
64
63
  */
65
64
  var MovementPenaltySystem = class {
@@ -77,7 +76,6 @@ var MovementPenaltySystem = class {
77
76
  * @param currentTime - Current timestamp for instant penalty expiry check
78
77
  * @returns Movement penalty with all modifiers
79
78
  *
80
- * @public
81
79
  */
82
80
  calculateMovementPenalty(health, maxHealth, instantPenalty, currentTime = Date.now()) {
83
81
  const avgLegHealth = (health.legLeft / maxHealth.legLeft + health.legRight / maxHealth.legRight) / 2;
@@ -141,7 +139,6 @@ var MovementPenaltySystem = class {
141
139
  * @param movementDirection - Direction of movement (positive = right, negative = left)
142
140
  * @returns Additional speed multiplier for asymmetric penalty
143
141
  *
144
- * @public
145
142
  */
146
143
  calculateAsymmetricPenalty(health, maxHealth, movementDirection) {
147
144
  const leftLegPercent = health.legLeft / maxHealth.legLeft;
@@ -169,7 +166,6 @@ var MovementPenaltySystem = class {
169
166
  * @param currentTime - Timestamp when strike occurred
170
167
  * @returns Instant movement penalty configuration
171
168
  *
172
- * @public
173
169
  */
174
170
  createInstantPenalty(affectedPart, currentTime = Date.now()) {
175
171
  return {
@@ -191,7 +187,6 @@ var MovementPenaltySystem = class {
191
187
  * @param maxHealth - Maximum health values
192
188
  * @returns True if player should enter vulnerable state
193
189
  *
194
- * @public
195
190
  */
196
191
  shouldEnterVulnerableState(health, maxHealth) {
197
192
  return (health.legLeft / maxHealth.legLeft + health.legRight / maxHealth.legRight) / 2 < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP;
@@ -208,7 +203,6 @@ var MovementPenaltySystem = class {
208
203
  * @param maxHealth - Maximum health values
209
204
  * @returns True if player should enter helpless state
210
205
  *
211
- * @public
212
206
  */
213
207
  shouldEnterHelplessState(health, maxHealth) {
214
208
  const leftLegPercent = health.legLeft / maxHealth.legLeft;
@@ -231,7 +225,6 @@ var MovementPenaltySystem = class {
231
225
  * @param currentTime - Current timestamp
232
226
  * @returns Final movement speed with all penalties applied
233
227
  *
234
- * @public
235
228
  */
236
229
  calculateModifiedSpeed(baseSpeed, health, maxHealth, movementDirection, instantPenalty, currentTime = Date.now()) {
237
230
  const penalty = this.calculateMovementPenalty(health, maxHealth, instantPenalty, currentTime);
@@ -246,7 +239,6 @@ var MovementPenaltySystem = class {
246
239
  *
247
240
  * Provides global access to the movement penalty system throughout the game.
248
241
  *
249
- * @public
250
242
  */
251
243
  var movementPenaltySystem = new MovementPenaltySystem();
252
244
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"MovementPenaltySystem.js","names":[],"sources":["../../../src/systems/bodypart/MovementPenaltySystem.ts"],"sourcesContent":["/**\n * Movement Penalty System\n * \n * **Korean**: 이동 패널티 시스템\n * \n * Implements injury-based movement penalties where leg and body damage reduces\n * movement speed, stance changes, and mobility capabilities. This system applies\n * realistic combat trauma effects based on Korean martial arts principles.\n * \n * ## System Features\n * \n * - Progressive speed reduction based on leg health\n * - Asymmetric damage (left/right leg affects directional movement)\n * - Instant penalties from knee/ankle strikes (5 seconds)\n * - Stance change duration penalties\n * - Advanced stance restrictions when critically injured\n * - Balance integration for VULNERABLE/HELPLESS states\n * \n * ## Movement Speed Penalties\n * \n * | Leg Health | State | Speed | Can Run |\n * |------------|-------|-------|---------|\n * | 100-70% | Normal | 100% | Yes |\n * | 69-50% | Limping | 80% | Yes |\n * | 49-30% | Severe Limp | 60% | Yes |\n * | <30% | Hobbled | 40% | No |\n * \n * ## Stance Change Penalties\n * \n * - Legs <50% health: Stance change takes 2x longer\n * - Legs <30% health: Cannot change to advanced stances (only basic)\n * \n * @module systems/bodypart/MovementPenaltySystem\n * @category Body Part System\n * @korean 이동패널티시스템\n */\n\nimport {\n BodyPart,\n BodyPartHealth,\n BodyPartMaxHealth,\n LegInjuryState,\n MovementPenalty,\n InstantMovementPenalty,\n MOVEMENT_PENALTY_CONSTANTS,\n} from \"./types\";\n\n/**\n * Movement Penalty System class.\n * \n * **Korean**: 이동 패널티 시스템 클래스\n * \n * Calculates movement penalties from leg injuries, manages instant penalties\n * from knee/ankle strikes, and integrates with balance system.\n * \n * @example\n * ```typescript\n * const system = new MovementPenaltySystem();\n * \n * // Calculate current movement penalty\n * const penalty = system.calculateMovementPenalty(\n * bodyPartHealth,\n * maxHealth,\n * activeInstantPenalty\n * );\n * \n * // Apply to movement speed\n * const actualSpeed = baseSpeed * penalty.speedMultiplier;\n * ```\n * \n * @public\n * @category Body Part System\n */\nexport class MovementPenaltySystem {\n /**\n * Calculate movement penalty from body part health.\n * \n * **Korean**: 이동 패널티 계산\n * \n * Analyzes leg health and returns comprehensive movement penalty including\n * speed multiplier, stance change penalties, and balance effects.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param instantPenalty - Optional active instant penalty\n * @param currentTime - Current timestamp for instant penalty expiry check\n * @returns Movement penalty with all modifiers\n * \n * @public\n */\n calculateMovementPenalty(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n instantPenalty?: InstantMovementPenalty,\n currentTime: number = Date.now()\n ): MovementPenalty {\n // Calculate average leg health percentage\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n const avgLegHealth = (leftLegPercent + rightLegPercent) / 2;\n\n // Determine injury state and base speed multiplier\n const { injuryState, speedMultiplier } = this.getInjuryStateFromHealth(avgLegHealth);\n\n // Check if instant penalty is active\n const hasActiveInstantPenalty = \n instantPenalty !== undefined &&\n instantPenalty.appliedAt + instantPenalty.duration > currentTime;\n\n // Apply instant penalty if active, otherwise use base multiplier\n const finalSpeedMultiplier = hasActiveInstantPenalty && instantPenalty\n ? Math.min(speedMultiplier, instantPenalty.speedMultiplier)\n : speedMultiplier;\n\n // Calculate stance change penalty\n const stanceChangePenalty = \n avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.CRITICAL_THRESHOLD\n ? MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.INJURED\n : MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.NORMAL;\n\n // Determine if advanced stances are restricted\n const advancedStancesRestricted =\n avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.RESTRICTION_THRESHOLD;\n\n // Calculate balance modifier (lower leg health = worse balance)\n const balanceModifier = Math.max(0.3, avgLegHealth);\n\n // Determine if player can run\n const canRun = injuryState !== LegInjuryState.HOBBLED;\n\n return {\n speedMultiplier: finalSpeedMultiplier,\n canRun,\n injuryState,\n stanceChangePenalty,\n advancedStancesRestricted,\n balanceModifier,\n hasInstantPenalty: hasActiveInstantPenalty,\n instantPenaltyExpiry: hasActiveInstantPenalty && instantPenalty\n ? instantPenalty.appliedAt + instantPenalty.duration\n : 0,\n };\n }\n\n /**\n * Get injury state and speed multiplier from leg health percentage.\n * \n * **Korean**: 부상 상태 및 속도 배율 조회\n * \n * @param legHealthPercent - Average leg health as percentage (0.0-1.0)\n * @returns Injury state and corresponding speed multiplier\n * \n * @private\n */\n private getInjuryStateFromHealth(legHealthPercent: number): {\n injuryState: LegInjuryState;\n speedMultiplier: number;\n } {\n const { THRESHOLDS, SPEED_MULTIPLIERS } = MOVEMENT_PENALTY_CONSTANTS;\n\n if (legHealthPercent >= THRESHOLDS.NORMAL) {\n return {\n injuryState: LegInjuryState.NORMAL,\n speedMultiplier: SPEED_MULTIPLIERS.NORMAL,\n };\n } else if (legHealthPercent >= THRESHOLDS.LIMPING) {\n return {\n injuryState: LegInjuryState.LIMPING,\n speedMultiplier: SPEED_MULTIPLIERS.LIMPING,\n };\n } else if (legHealthPercent >= THRESHOLDS.SEVERE_LIMP) {\n return {\n injuryState: LegInjuryState.SEVERE_LIMP,\n speedMultiplier: SPEED_MULTIPLIERS.SEVERE_LIMP,\n };\n } else {\n return {\n injuryState: LegInjuryState.HOBBLED,\n speedMultiplier: SPEED_MULTIPLIERS.HOBBLED,\n };\n }\n }\n\n /**\n * Calculate asymmetric movement penalty based on movement direction and injured leg.\n * \n * **Korean**: 비대칭 이동 패널티 계산\n * \n * Left leg damage affects left-side movements more, and vice versa.\n * This creates realistic limping behavior where movement toward the injured\n * side is more impaired.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param movementDirection - Direction of movement (positive = right, negative = left)\n * @returns Additional speed multiplier for asymmetric penalty\n * \n * @public\n */\n calculateAsymmetricPenalty(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n movementDirection: { x: number; y: number }\n ): number {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n\n // Only apply asymmetric penalty if one leg is significantly more damaged\n const legHealthDifference = Math.abs(leftLegPercent - rightLegPercent);\n if (legHealthDifference < 0.15) {\n // Both legs similarly damaged - no asymmetric penalty\n return 1.0;\n }\n\n // Determine which leg is more injured\n const leftLegMoreInjured = leftLegPercent < rightLegPercent;\n\n // Horizontal movement direction (x-axis)\n const movingLeft = movementDirection.x < -0.1;\n const movingRight = movementDirection.x > 0.1;\n\n if (leftLegMoreInjured) {\n // Left leg injured - left movement more impaired\n if (movingLeft) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.SAME_SIDE_PENALTY;\n } else if (movingRight) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.OPPOSITE_SIDE_PENALTY;\n }\n } else {\n // Right leg injured - right movement more impaired\n if (movingRight) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.SAME_SIDE_PENALTY;\n } else if (movingLeft) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.OPPOSITE_SIDE_PENALTY;\n }\n }\n\n return 1.0; // No horizontal movement\n }\n\n /**\n * Create instant movement penalty from knee/ankle strike.\n * \n * **Korean**: 순간 이동 패널티 생성\n * \n * Applied when knee or ankle vital points are struck, causing immediate\n * severe movement impairment for 5 seconds.\n * \n * @param affectedPart - Body part that was struck (LEG_LEFT or LEG_RIGHT)\n * @param currentTime - Timestamp when strike occurred\n * @returns Instant movement penalty configuration\n * \n * @public\n */\n createInstantPenalty(\n affectedPart: BodyPart.LEG_LEFT | BodyPart.LEG_RIGHT,\n currentTime: number = Date.now()\n ): InstantMovementPenalty {\n return {\n speedMultiplier: MOVEMENT_PENALTY_CONSTANTS.INSTANT_PENALTY.SPEED_MULTIPLIER,\n duration: MOVEMENT_PENALTY_CONSTANTS.INSTANT_PENALTY.DURATION,\n appliedAt: currentTime,\n affectedPart,\n };\n }\n\n /**\n * Check if player should enter VULNERABLE state from leg damage.\n * \n * **Korean**: 취약 상태 확인\n * \n * Low leg health increases chance of entering vulnerable state,\n * making player more susceptible to follow-up attacks.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns True if player should enter vulnerable state\n * \n * @public\n */\n shouldEnterVulnerableState(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): boolean {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n const avgLegHealth = (leftLegPercent + rightLegPercent) / 2;\n\n // Enter vulnerable state when legs are critically damaged\n return avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP;\n }\n\n /**\n * Check if player should enter HELPLESS state from leg damage.\n * \n * **Korean**: 무력 상태 확인\n * \n * Both legs critically damaged or hobbled - player cannot maintain\n * effective combat stance and is highly vulnerable.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns True if player should enter helpless state\n * \n * @public\n */\n shouldEnterHelplessState(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): boolean {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n\n // Enter helpless state when both legs are hobbled\n return (\n leftLegPercent < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP &&\n rightLegPercent < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP\n );\n }\n\n /**\n * Calculate modified movement speed with all penalties applied.\n * \n * **Korean**: 수정된 이동 속도 계산\n * \n * Applies base movement penalty, asymmetric penalties, and instant penalties\n * to calculate the final movement speed.\n * \n * @param baseSpeed - Base movement speed (pixels per frame)\n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param movementDirection - Direction vector of movement\n * @param instantPenalty - Optional active instant penalty\n * @param currentTime - Current timestamp\n * @returns Final movement speed with all penalties applied\n * \n * @public\n */\n calculateModifiedSpeed(\n baseSpeed: number,\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n movementDirection: { x: number; y: number },\n instantPenalty?: InstantMovementPenalty,\n currentTime: number = Date.now()\n ): number {\n // Get base movement penalty\n const penalty = this.calculateMovementPenalty(\n health,\n maxHealth,\n instantPenalty,\n currentTime\n );\n\n // Calculate asymmetric penalty\n const asymmetricMultiplier = this.calculateAsymmetricPenalty(\n health,\n maxHealth,\n movementDirection\n );\n\n // Apply all multipliers\n return baseSpeed * penalty.speedMultiplier * asymmetricMultiplier;\n }\n}\n\n/**\n * Singleton instance of Movement Penalty System.\n * \n * **Korean**: 이동 패널티 시스템 싱글톤\n * \n * Provides global access to the movement penalty system throughout the game.\n * \n * @public\n */\nexport const movementPenaltySystem = new MovementPenaltySystem();\n"],"mappings":"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"}
1
+ {"version":3,"file":"MovementPenaltySystem.js","names":[],"sources":["../../../src/systems/bodypart/MovementPenaltySystem.ts"],"sourcesContent":["/**\n * Movement Penalty System\n * \n * **Korean**: 이동 패널티 시스템\n * \n * Implements injury-based movement penalties where leg and body damage reduces\n * movement speed, stance changes, and mobility capabilities. This system applies\n * realistic combat trauma effects based on Korean martial arts principles.\n * \n * ## System Features\n * \n * - Progressive speed reduction based on leg health\n * - Asymmetric damage (left/right leg affects directional movement)\n * - Instant penalties from knee/ankle strikes (5 seconds)\n * - Stance change duration penalties\n * - Advanced stance restrictions when critically injured\n * - Balance integration for VULNERABLE/HELPLESS states\n * \n * ## Movement Speed Penalties\n * \n * | Leg Health | State | Speed | Can Run |\n * |------------|-------|-------|---------|\n * | 100-70% | Normal | 100% | Yes |\n * | 69-50% | Limping | 80% | Yes |\n * | 49-30% | Severe Limp | 60% | Yes |\n * | <30% | Hobbled | 40% | No |\n * \n * ## Stance Change Penalties\n * \n * - Legs <50% health: Stance change takes 2x longer\n * - Legs <30% health: Cannot change to advanced stances (only basic)\n * \n * @module systems/bodypart/MovementPenaltySystem\n * @category Body Part System\n * @korean 이동패널티시스템\n */\n\nimport {\n BodyPart,\n BodyPartHealth,\n BodyPartMaxHealth,\n LegInjuryState,\n MovementPenalty,\n InstantMovementPenalty,\n MOVEMENT_PENALTY_CONSTANTS,\n} from \"./types\";\n\n/**\n * Movement Penalty System class.\n * \n * **Korean**: 이동 패널티 시스템 클래스\n * \n * Calculates movement penalties from leg injuries, manages instant penalties\n * from knee/ankle strikes, and integrates with balance system.\n * \n * @example\n * ```typescript\n * const system = new MovementPenaltySystem();\n * \n * // Calculate current movement penalty\n * const penalty = system.calculateMovementPenalty(\n * bodyPartHealth,\n * maxHealth,\n * activeInstantPenalty\n * );\n * \n * // Apply to movement speed\n * const actualSpeed = baseSpeed * penalty.speedMultiplier;\n * ```\n * \n * @category Body Part System\n */\nexport class MovementPenaltySystem {\n /**\n * Calculate movement penalty from body part health.\n * \n * **Korean**: 이동 패널티 계산\n * \n * Analyzes leg health and returns comprehensive movement penalty including\n * speed multiplier, stance change penalties, and balance effects.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param instantPenalty - Optional active instant penalty\n * @param currentTime - Current timestamp for instant penalty expiry check\n * @returns Movement penalty with all modifiers\n * \n */\n calculateMovementPenalty(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n instantPenalty?: InstantMovementPenalty,\n currentTime: number = Date.now()\n ): MovementPenalty {\n // Calculate average leg health percentage\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n const avgLegHealth = (leftLegPercent + rightLegPercent) / 2;\n\n // Determine injury state and base speed multiplier\n const { injuryState, speedMultiplier } = this.getInjuryStateFromHealth(avgLegHealth);\n\n // Check if instant penalty is active\n const hasActiveInstantPenalty = \n instantPenalty !== undefined &&\n instantPenalty.appliedAt + instantPenalty.duration > currentTime;\n\n // Apply instant penalty if active, otherwise use base multiplier\n const finalSpeedMultiplier = hasActiveInstantPenalty && instantPenalty\n ? Math.min(speedMultiplier, instantPenalty.speedMultiplier)\n : speedMultiplier;\n\n // Calculate stance change penalty\n const stanceChangePenalty = \n avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.CRITICAL_THRESHOLD\n ? MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.INJURED\n : MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.NORMAL;\n\n // Determine if advanced stances are restricted\n const advancedStancesRestricted =\n avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.STANCE_CHANGE.RESTRICTION_THRESHOLD;\n\n // Calculate balance modifier (lower leg health = worse balance)\n const balanceModifier = Math.max(0.3, avgLegHealth);\n\n // Determine if player can run\n const canRun = injuryState !== LegInjuryState.HOBBLED;\n\n return {\n speedMultiplier: finalSpeedMultiplier,\n canRun,\n injuryState,\n stanceChangePenalty,\n advancedStancesRestricted,\n balanceModifier,\n hasInstantPenalty: hasActiveInstantPenalty,\n instantPenaltyExpiry: hasActiveInstantPenalty && instantPenalty\n ? instantPenalty.appliedAt + instantPenalty.duration\n : 0,\n };\n }\n\n /**\n * Get injury state and speed multiplier from leg health percentage.\n * \n * **Korean**: 부상 상태 및 속도 배율 조회\n * \n * @param legHealthPercent - Average leg health as percentage (0.0-1.0)\n * @returns Injury state and corresponding speed multiplier\n * \n * @private\n */\n private getInjuryStateFromHealth(legHealthPercent: number): {\n injuryState: LegInjuryState;\n speedMultiplier: number;\n } {\n const { THRESHOLDS, SPEED_MULTIPLIERS } = MOVEMENT_PENALTY_CONSTANTS;\n\n if (legHealthPercent >= THRESHOLDS.NORMAL) {\n return {\n injuryState: LegInjuryState.NORMAL,\n speedMultiplier: SPEED_MULTIPLIERS.NORMAL,\n };\n } else if (legHealthPercent >= THRESHOLDS.LIMPING) {\n return {\n injuryState: LegInjuryState.LIMPING,\n speedMultiplier: SPEED_MULTIPLIERS.LIMPING,\n };\n } else if (legHealthPercent >= THRESHOLDS.SEVERE_LIMP) {\n return {\n injuryState: LegInjuryState.SEVERE_LIMP,\n speedMultiplier: SPEED_MULTIPLIERS.SEVERE_LIMP,\n };\n } else {\n return {\n injuryState: LegInjuryState.HOBBLED,\n speedMultiplier: SPEED_MULTIPLIERS.HOBBLED,\n };\n }\n }\n\n /**\n * Calculate asymmetric movement penalty based on movement direction and injured leg.\n * \n * **Korean**: 비대칭 이동 패널티 계산\n * \n * Left leg damage affects left-side movements more, and vice versa.\n * This creates realistic limping behavior where movement toward the injured\n * side is more impaired.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param movementDirection - Direction of movement (positive = right, negative = left)\n * @returns Additional speed multiplier for asymmetric penalty\n * \n */\n calculateAsymmetricPenalty(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n movementDirection: { x: number; y: number }\n ): number {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n\n // Only apply asymmetric penalty if one leg is significantly more damaged\n const legHealthDifference = Math.abs(leftLegPercent - rightLegPercent);\n if (legHealthDifference < 0.15) {\n // Both legs similarly damaged - no asymmetric penalty\n return 1.0;\n }\n\n // Determine which leg is more injured\n const leftLegMoreInjured = leftLegPercent < rightLegPercent;\n\n // Horizontal movement direction (x-axis)\n const movingLeft = movementDirection.x < -0.1;\n const movingRight = movementDirection.x > 0.1;\n\n if (leftLegMoreInjured) {\n // Left leg injured - left movement more impaired\n if (movingLeft) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.SAME_SIDE_PENALTY;\n } else if (movingRight) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.OPPOSITE_SIDE_PENALTY;\n }\n } else {\n // Right leg injured - right movement more impaired\n if (movingRight) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.SAME_SIDE_PENALTY;\n } else if (movingLeft) {\n return MOVEMENT_PENALTY_CONSTANTS.ASYMMETRIC.OPPOSITE_SIDE_PENALTY;\n }\n }\n\n return 1.0; // No horizontal movement\n }\n\n /**\n * Create instant movement penalty from knee/ankle strike.\n * \n * **Korean**: 순간 이동 패널티 생성\n * \n * Applied when knee or ankle vital points are struck, causing immediate\n * severe movement impairment for 5 seconds.\n * \n * @param affectedPart - Body part that was struck (LEG_LEFT or LEG_RIGHT)\n * @param currentTime - Timestamp when strike occurred\n * @returns Instant movement penalty configuration\n * \n */\n createInstantPenalty(\n affectedPart: BodyPart.LEG_LEFT | BodyPart.LEG_RIGHT,\n currentTime: number = Date.now()\n ): InstantMovementPenalty {\n return {\n speedMultiplier: MOVEMENT_PENALTY_CONSTANTS.INSTANT_PENALTY.SPEED_MULTIPLIER,\n duration: MOVEMENT_PENALTY_CONSTANTS.INSTANT_PENALTY.DURATION,\n appliedAt: currentTime,\n affectedPart,\n };\n }\n\n /**\n * Check if player should enter VULNERABLE state from leg damage.\n * \n * **Korean**: 취약 상태 확인\n * \n * Low leg health increases chance of entering vulnerable state,\n * making player more susceptible to follow-up attacks.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns True if player should enter vulnerable state\n * \n */\n shouldEnterVulnerableState(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): boolean {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n const avgLegHealth = (leftLegPercent + rightLegPercent) / 2;\n\n // Enter vulnerable state when legs are critically damaged\n return avgLegHealth < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP;\n }\n\n /**\n * Check if player should enter HELPLESS state from leg damage.\n * \n * **Korean**: 무력 상태 확인\n * \n * Both legs critically damaged or hobbled - player cannot maintain\n * effective combat stance and is highly vulnerable.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns True if player should enter helpless state\n * \n */\n shouldEnterHelplessState(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): boolean {\n const leftLegPercent = health.legLeft / maxHealth.legLeft;\n const rightLegPercent = health.legRight / maxHealth.legRight;\n\n // Enter helpless state when both legs are hobbled\n return (\n leftLegPercent < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP &&\n rightLegPercent < MOVEMENT_PENALTY_CONSTANTS.THRESHOLDS.SEVERE_LIMP\n );\n }\n\n /**\n * Calculate modified movement speed with all penalties applied.\n * \n * **Korean**: 수정된 이동 속도 계산\n * \n * Applies base movement penalty, asymmetric penalties, and instant penalties\n * to calculate the final movement speed.\n * \n * @param baseSpeed - Base movement speed (pixels per frame)\n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param movementDirection - Direction vector of movement\n * @param instantPenalty - Optional active instant penalty\n * @param currentTime - Current timestamp\n * @returns Final movement speed with all penalties applied\n * \n */\n calculateModifiedSpeed(\n baseSpeed: number,\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n movementDirection: { x: number; y: number },\n instantPenalty?: InstantMovementPenalty,\n currentTime: number = Date.now()\n ): number {\n // Get base movement penalty\n const penalty = this.calculateMovementPenalty(\n health,\n maxHealth,\n instantPenalty,\n currentTime\n );\n\n // Calculate asymmetric penalty\n const asymmetricMultiplier = this.calculateAsymmetricPenalty(\n health,\n maxHealth,\n movementDirection\n );\n\n // Apply all multipliers\n return baseSpeed * penalty.speedMultiplier * asymmetricMultiplier;\n }\n}\n\n/**\n * Singleton instance of Movement Penalty System.\n * \n * **Korean**: 이동 패널티 시스템 싱글톤\n * \n * Provides global access to the movement penalty system throughout the game.\n * \n */\nexport const movementPenaltySystem = new MovementPenaltySystem();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwEA,IAAa,wBAAb,MAAmC;;;;;;;;;;;;;;;;CAgBjC,yBACE,QACA,WACA,gBACA,cAAsB,KAAK,KAAK,EACf;EAIjB,MAAM,gBAFiB,OAAO,UAAU,UAAU,UAC1B,OAAO,WAAW,UAAU,YACM;EAG1D,MAAM,EAAE,aAAa,oBAAoB,KAAK,yBAAyB,aAAa;EAGpF,MAAM,0BACJ,mBAAmB,KAAA,KACnB,eAAe,YAAY,eAAe,WAAW;EAGvD,MAAM,uBAAuB,2BAA2B,iBACpD,KAAK,IAAI,iBAAiB,eAAe,gBAAgB,GACzD;EAGJ,MAAM,sBACJ,eAAe,2BAA2B,cAAc,qBACpD,2BAA2B,cAAc,UACzC,2BAA2B,cAAc;EAG/C,MAAM,4BACJ,eAAe,2BAA2B,cAAc;EAG1D,MAAM,kBAAkB,KAAK,IAAI,IAAK,aAAa;EAKnD,OAAO;GACL,iBAAiB;GACjB,QAJa,gBAAgB,eAAe;GAK5C;GACA;GACA;GACA;GACA,mBAAmB;GACnB,sBAAsB,2BAA2B,iBAC7C,eAAe,YAAY,eAAe,WAC1C;GACL;;;;;;;;;;;;CAaH,yBAAiC,kBAG/B;EACA,MAAM,EAAE,YAAY,sBAAsB;EAE1C,IAAI,oBAAoB,WAAW,QACjC,OAAO;GACL,aAAa,eAAe;GAC5B,iBAAiB,kBAAkB;GACpC;OACI,IAAI,oBAAoB,WAAW,SACxC,OAAO;GACL,aAAa,eAAe;GAC5B,iBAAiB,kBAAkB;GACpC;OACI,IAAI,oBAAoB,WAAW,aACxC,OAAO;GACL,aAAa,eAAe;GAC5B,iBAAiB,kBAAkB;GACpC;OAED,OAAO;GACL,aAAa,eAAe;GAC5B,iBAAiB,kBAAkB;GACpC;;;;;;;;;;;;;;;;;CAmBL,2BACE,QACA,WACA,mBACQ;EACR,MAAM,iBAAiB,OAAO,UAAU,UAAU;EAClD,MAAM,kBAAkB,OAAO,WAAW,UAAU;EAIpD,IAD4B,KAAK,IAAI,iBAAiB,gBAClD,GAAsB,KAExB,OAAO;EAIT,MAAM,qBAAqB,iBAAiB;EAG5C,MAAM,aAAa,kBAAkB,IAAI;EACzC,MAAM,cAAc,kBAAkB,IAAI;EAE1C,IAAI;OAEE,YACF,OAAO,2BAA2B,WAAW;QACxC,IAAI,aACT,OAAO,2BAA2B,WAAW;SAI/C,IAAI,aACF,OAAO,2BAA2B,WAAW;OACxC,IAAI,YACT,OAAO,2BAA2B,WAAW;EAIjD,OAAO;;;;;;;;;;;;;;;CAgBT,qBACE,cACA,cAAsB,KAAK,KAAK,EACR;EACxB,OAAO;GACL,iBAAiB,2BAA2B,gBAAgB;GAC5D,UAAU,2BAA2B,gBAAgB;GACrD,WAAW;GACX;GACD;;;;;;;;;;;;;;;CAgBH,2BACE,QACA,WACS;EAMT,QALuB,OAAO,UAAU,UAAU,UAC1B,OAAO,WAAW,UAAU,YACM,IAGpC,2BAA2B,WAAW;;;;;;;;;;;;;;;CAgB9D,yBACE,QACA,WACS;EACT,MAAM,iBAAiB,OAAO,UAAU,UAAU;EAClD,MAAM,kBAAkB,OAAO,WAAW,UAAU;EAGpD,OACE,iBAAiB,2BAA2B,WAAW,eACvD,kBAAkB,2BAA2B,WAAW;;;;;;;;;;;;;;;;;;;CAqB5D,uBACE,WACA,QACA,WACA,mBACA,gBACA,cAAsB,KAAK,KAAK,EACxB;EAER,MAAM,UAAU,KAAK,yBACnB,QACA,WACA,gBACA,YACD;EAGD,MAAM,uBAAuB,KAAK,2BAChC,QACA,WACA,kBACD;EAGD,OAAO,YAAY,QAAQ,kBAAkB;;;;;;;;;;;AAYjD,IAAa,wBAAwB,IAAI,uBAAuB"}
@@ -40,7 +40,6 @@ import { CombatInjuryIntegration } from "./CombatInjuryIntegration";
40
40
  * manager.clearPlayerInjuries('player-1');
41
41
  * ```
42
42
  *
43
- * @public
44
43
  */
45
44
  export declare class PlayerInjuryTrackingManager {
46
45
  private trackers;
@@ -53,7 +52,6 @@ export declare class PlayerInjuryTrackingManager {
53
52
  * @param playerId - Unique player identifier (string or number)
54
53
  * @returns InjuryTracker instance for the player
55
54
  *
56
- * @public
57
55
  */
58
56
  getTrackerForPlayer(playerId: string | number): InjuryTracker;
59
57
  /**
@@ -64,7 +62,6 @@ export declare class PlayerInjuryTrackingManager {
64
62
  * @param playerId - Unique player identifier (string or number)
65
63
  * @returns CombatInjuryIntegration instance for the player
66
64
  *
67
- * @public
68
65
  */
69
66
  getIntegrationForPlayer(playerId: string | number): CombatInjuryIntegration;
70
67
  /**
@@ -76,7 +73,6 @@ export declare class PlayerInjuryTrackingManager {
76
73
  *
77
74
  * @param playerId - Unique player identifier (string or number)
78
75
  *
79
- * @public
80
76
  */
81
77
  clearPlayerInjuries(playerId: string | number): void;
82
78
  /**
@@ -86,7 +82,6 @@ export declare class PlayerInjuryTrackingManager {
86
82
  *
87
83
  * @param playerId - Unique player identifier (string or number)
88
84
  *
89
- * @public
90
85
  */
91
86
  removePlayer(playerId: string | number): void;
92
87
  /**
@@ -96,7 +91,6 @@ export declare class PlayerInjuryTrackingManager {
96
91
  *
97
92
  * Useful for resetting the entire game state.
98
93
  *
99
- * @public
100
94
  */
101
95
  clearAll(): void;
102
96
  /**
@@ -106,7 +100,6 @@ export declare class PlayerInjuryTrackingManager {
106
100
  *
107
101
  * @returns Array of player IDs
108
102
  *
109
- * @public
110
103
  */
111
104
  getActivePlayerIds(): string[];
112
105
  }
@@ -131,7 +124,6 @@ export declare class PlayerInjuryTrackingManager {
131
124
  * });
132
125
  * ```
133
126
  *
134
- * @public
135
127
  */
136
128
  export declare const playerInjuryManager: PlayerInjuryTrackingManager;
137
129
  //# sourceMappingURL=PlayerInjuryTrackingManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlayerInjuryTrackingManager.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/PlayerInjuryTrackingManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,YAAY,CAA8C;IAElE;;;;;;;;;OASG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa;IAU7D;;;;;;;;;OASG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,uBAAuB;IAiB3E;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQpD;;;;;;;;OAQG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM7C;;;;;;;;OAQG;IACH,QAAQ,IAAI,IAAI;IAKhB;;;;;;;;OAQG;IACH,kBAAkB,IAAI,MAAM,EAAE;CAG/B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,mBAAmB,6BAAoC,CAAC"}
1
+ {"version":3,"file":"PlayerInjuryTrackingManager.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/PlayerInjuryTrackingManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,YAAY,CAA8C;IAElE;;;;;;;;OAQG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa;IAU7D;;;;;;;;OAQG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,uBAAuB;IAiB3E;;;;;;;;;OASG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQpD;;;;;;;OAOG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM7C;;;;;;;OAOG;IACH,QAAQ,IAAI,IAAI;IAKhB;;;;;;;OAOG;IACH,kBAAkB,IAAI,MAAM,EAAE;CAG/B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,mBAAmB,6BAAoC,CAAC"}
@@ -41,7 +41,6 @@ import { CombatInjuryIntegration } from "./CombatInjuryIntegration.js";
41
41
  * manager.clearPlayerInjuries('player-1');
42
42
  * ```
43
43
  *
44
- * @public
45
44
  */
46
45
  var PlayerInjuryTrackingManager = class {
47
46
  trackers = /* @__PURE__ */ new Map();
@@ -54,7 +53,6 @@ var PlayerInjuryTrackingManager = class {
54
53
  * @param playerId - Unique player identifier (string or number)
55
54
  * @returns InjuryTracker instance for the player
56
55
  *
57
- * @public
58
56
  */
59
57
  getTrackerForPlayer(playerId) {
60
58
  const key = String(playerId);
@@ -73,7 +71,6 @@ var PlayerInjuryTrackingManager = class {
73
71
  * @param playerId - Unique player identifier (string or number)
74
72
  * @returns CombatInjuryIntegration instance for the player
75
73
  *
76
- * @public
77
74
  */
78
75
  getIntegrationForPlayer(playerId) {
79
76
  const key = String(playerId);
@@ -98,7 +95,6 @@ var PlayerInjuryTrackingManager = class {
98
95
  *
99
96
  * @param playerId - Unique player identifier (string or number)
100
97
  *
101
- * @public
102
98
  */
103
99
  clearPlayerInjuries(playerId) {
104
100
  const key = String(playerId);
@@ -112,7 +108,6 @@ var PlayerInjuryTrackingManager = class {
112
108
  *
113
109
  * @param playerId - Unique player identifier (string or number)
114
110
  *
115
- * @public
116
111
  */
117
112
  removePlayer(playerId) {
118
113
  const key = String(playerId);
@@ -126,7 +121,6 @@ var PlayerInjuryTrackingManager = class {
126
121
  *
127
122
  * Useful for resetting the entire game state.
128
123
  *
129
- * @public
130
124
  */
131
125
  clearAll() {
132
126
  this.trackers.clear();
@@ -139,7 +133,6 @@ var PlayerInjuryTrackingManager = class {
139
133
  *
140
134
  * @returns Array of player IDs
141
135
  *
142
- * @public
143
136
  */
144
137
  getActivePlayerIds() {
145
138
  return Array.from(this.trackers.keys());
@@ -166,7 +159,6 @@ var PlayerInjuryTrackingManager = class {
166
159
  * });
167
160
  * ```
168
161
  *
169
- * @public
170
162
  */
171
163
  var playerInjuryManager = new PlayerInjuryTrackingManager();
172
164
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"PlayerInjuryTrackingManager.js","names":[],"sources":["../../../src/systems/bodypart/PlayerInjuryTrackingManager.ts"],"sourcesContent":["/**\n * Player Injury Tracking Manager\n * \n * **Korean**: 플레이어 부상 추적 관리자\n * \n * Manages per-player injury tracking to prevent mixing injuries between\n * multiple characters in combat scenarios. Each player gets their own\n * InjuryTracker instance.\n * \n * @module systems/bodypart\n * @category Injury Tracking\n * @korean 부상추적\n */\n\nimport { InjuryTracker } from \"./InjuryTracker\";\nimport { CombatInjuryIntegration } from \"./CombatInjuryIntegration\";\n\n/**\n * Manager for per-player injury tracking.\n * \n * **Korean**: 플레이어별 부상 추적 관리자\n * \n * Maintains separate {@link InjuryTracker} and {@link CombatInjuryIntegration}\n * instances for each player to ensure injuries don't get mixed between characters.\n * \n * @example\n * ```typescript\n * const manager = new PlayerInjuryTrackingManager();\n * \n * // Get or create tracker for a player\n * const player1Tracker = manager.getTrackerForPlayer('player-1');\n * const player1Integration = manager.getIntegrationForPlayer('player-1');\n * \n * // Record injury for specific player\n * player1Integration.recordCombatDamage({\n * damage: 35,\n * bodyRegion: BodyRegion.TORSO,\n * damageType: DamageType.BLUNT,\n * });\n * \n * // Clear injuries for a player (e.g., between rounds)\n * manager.clearPlayerInjuries('player-1');\n * ```\n * \n * @public\n */\nexport class PlayerInjuryTrackingManager {\n private trackers = new Map<string, InjuryTracker>();\n private integrations = new Map<string, CombatInjuryIntegration>();\n\n /**\n * Get the InjuryTracker for a specific player, creating it if needed.\n * \n * **Korean**: 특정 플레이어의 InjuryTracker 가져오기 (필요시 생성)\n * \n * @param playerId - Unique player identifier (string or number)\n * @returns InjuryTracker instance for the player\n * \n * @public\n */\n getTrackerForPlayer(playerId: string | number): InjuryTracker {\n const key = String(playerId);\n let tracker = this.trackers.get(key);\n if (!tracker) {\n tracker = new InjuryTracker();\n this.trackers.set(key, tracker);\n }\n return tracker;\n }\n\n /**\n * Get the CombatInjuryIntegration for a specific player, creating it if needed.\n * \n * **Korean**: 특정 플레이어의 CombatInjuryIntegration 가져오기 (필요시 생성)\n * \n * @param playerId - Unique player identifier (string or number)\n * @returns CombatInjuryIntegration instance for the player\n * \n * @public\n */\n getIntegrationForPlayer(playerId: string | number): CombatInjuryIntegration {\n const key = String(playerId);\n let integration = this.integrations.get(key);\n if (!integration) {\n const tracker = this.getTrackerForPlayer(playerId);\n // Pass complete config with tracker override\n integration = new CombatInjuryIntegration({\n enabled: true,\n minDamage: 5,\n bloodThreshold: 30,\n tracker,\n });\n this.integrations.set(key, integration);\n }\n return integration;\n }\n\n /**\n * Clear all injuries for a specific player.\n * \n * **Korean**: 특정 플레이어의 모든 부상 제거\n * \n * Useful for round resets or when a player is defeated.\n * \n * @param playerId - Unique player identifier (string or number)\n * \n * @public\n */\n clearPlayerInjuries(playerId: string | number): void {\n const key = String(playerId);\n const tracker = this.trackers.get(key);\n if (tracker) {\n tracker.clearInjuries();\n }\n }\n\n /**\n * Remove tracking data for a player (e.g., when they leave the game).\n * \n * **Korean**: 플레이어 추적 데이터 제거\n * \n * @param playerId - Unique player identifier (string or number)\n * \n * @public\n */\n removePlayer(playerId: string | number): void {\n const key = String(playerId);\n this.trackers.delete(key);\n this.integrations.delete(key);\n }\n\n /**\n * Clear all player tracking data.\n * \n * **Korean**: 모든 플레이어 추적 데이터 제거\n * \n * Useful for resetting the entire game state.\n * \n * @public\n */\n clearAll(): void {\n this.trackers.clear();\n this.integrations.clear();\n }\n\n /**\n * Get all active player IDs being tracked.\n * \n * **Korean**: 추적 중인 모든 플레이어 ID 가져오기\n * \n * @returns Array of player IDs\n * \n * @public\n */\n getActivePlayerIds(): string[] {\n return Array.from(this.trackers.keys());\n }\n}\n\n/**\n * Global singleton manager for player injury tracking.\n * \n * **Korean**: 플레이어 부상 추적을 위한 전역 싱글톤 관리자\n * \n * This singleton manages per-player injury trackers to ensure injuries\n * from different characters don't get mixed together.\n * \n * @example\n * ```typescript\n * import { playerInjuryManager } from '@/systems/bodypart';\n * \n * // In combat code:\n * const defenderIntegration = playerInjuryManager.getIntegrationForPlayer(defender.id);\n * defenderIntegration.recordCombatDamage({\n * damage: result.damage,\n * bodyRegion,\n * damageType,\n * });\n * ```\n * \n * @public\n */\nexport const playerInjuryManager = new PlayerInjuryTrackingManager();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,IAAa,8BAAb,MAAyC;CACvC,2BAAmB,IAAI,KAA4B;CACnD,+BAAuB,IAAI,KAAsC;;;;;;;;;;;CAYjE,oBAAoB,UAA0C;EAC5D,MAAM,MAAM,OAAO,SAAS;EAC5B,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI;EACpC,IAAI,CAAC,SAAS;GACZ,UAAU,IAAI,eAAe;GAC7B,KAAK,SAAS,IAAI,KAAK,QAAQ;;EAEjC,OAAO;;;;;;;;;;;;CAaT,wBAAwB,UAAoD;EAC1E,MAAM,MAAM,OAAO,SAAS;EAC5B,IAAI,cAAc,KAAK,aAAa,IAAI,IAAI;EAC5C,IAAI,CAAC,aAAa;GAGhB,cAAc,IAAI,wBAAwB;IACxC,SAAS;IACT,WAAW;IACX,gBAAgB;IAChB,SANc,KAAK,oBAAoB,SAMvC;IACD,CAAC;GACF,KAAK,aAAa,IAAI,KAAK,YAAY;;EAEzC,OAAO;;;;;;;;;;;;;CAcT,oBAAoB,UAAiC;EACnD,MAAM,MAAM,OAAO,SAAS;EAC5B,MAAM,UAAU,KAAK,SAAS,IAAI,IAAI;EACtC,IAAI,SACF,QAAQ,eAAe;;;;;;;;;;;CAa3B,aAAa,UAAiC;EAC5C,MAAM,MAAM,OAAO,SAAS;EAC5B,KAAK,SAAS,OAAO,IAAI;EACzB,KAAK,aAAa,OAAO,IAAI;;;;;;;;;;;CAY/B,WAAiB;EACf,KAAK,SAAS,OAAO;EACrB,KAAK,aAAa,OAAO;;;;;;;;;;;CAY3B,qBAA+B;EAC7B,OAAO,MAAM,KAAK,KAAK,SAAS,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA2B3C,IAAa,sBAAsB,IAAI,6BAA6B"}
1
+ {"version":3,"file":"PlayerInjuryTrackingManager.js","names":[],"sources":["../../../src/systems/bodypart/PlayerInjuryTrackingManager.ts"],"sourcesContent":["/**\n * Player Injury Tracking Manager\n * \n * **Korean**: 플레이어 부상 추적 관리자\n * \n * Manages per-player injury tracking to prevent mixing injuries between\n * multiple characters in combat scenarios. Each player gets their own\n * InjuryTracker instance.\n * \n * @module systems/bodypart\n * @category Injury Tracking\n * @korean 부상추적\n */\n\nimport { InjuryTracker } from \"./InjuryTracker\";\nimport { CombatInjuryIntegration } from \"./CombatInjuryIntegration\";\n\n/**\n * Manager for per-player injury tracking.\n * \n * **Korean**: 플레이어별 부상 추적 관리자\n * \n * Maintains separate {@link InjuryTracker} and {@link CombatInjuryIntegration}\n * instances for each player to ensure injuries don't get mixed between characters.\n * \n * @example\n * ```typescript\n * const manager = new PlayerInjuryTrackingManager();\n * \n * // Get or create tracker for a player\n * const player1Tracker = manager.getTrackerForPlayer('player-1');\n * const player1Integration = manager.getIntegrationForPlayer('player-1');\n * \n * // Record injury for specific player\n * player1Integration.recordCombatDamage({\n * damage: 35,\n * bodyRegion: BodyRegion.TORSO,\n * damageType: DamageType.BLUNT,\n * });\n * \n * // Clear injuries for a player (e.g., between rounds)\n * manager.clearPlayerInjuries('player-1');\n * ```\n * \n */\nexport class PlayerInjuryTrackingManager {\n private trackers = new Map<string, InjuryTracker>();\n private integrations = new Map<string, CombatInjuryIntegration>();\n\n /**\n * Get the InjuryTracker for a specific player, creating it if needed.\n * \n * **Korean**: 특정 플레이어의 InjuryTracker 가져오기 (필요시 생성)\n * \n * @param playerId - Unique player identifier (string or number)\n * @returns InjuryTracker instance for the player\n * \n */\n getTrackerForPlayer(playerId: string | number): InjuryTracker {\n const key = String(playerId);\n let tracker = this.trackers.get(key);\n if (!tracker) {\n tracker = new InjuryTracker();\n this.trackers.set(key, tracker);\n }\n return tracker;\n }\n\n /**\n * Get the CombatInjuryIntegration for a specific player, creating it if needed.\n * \n * **Korean**: 특정 플레이어의 CombatInjuryIntegration 가져오기 (필요시 생성)\n * \n * @param playerId - Unique player identifier (string or number)\n * @returns CombatInjuryIntegration instance for the player\n * \n */\n getIntegrationForPlayer(playerId: string | number): CombatInjuryIntegration {\n const key = String(playerId);\n let integration = this.integrations.get(key);\n if (!integration) {\n const tracker = this.getTrackerForPlayer(playerId);\n // Pass complete config with tracker override\n integration = new CombatInjuryIntegration({\n enabled: true,\n minDamage: 5,\n bloodThreshold: 30,\n tracker,\n });\n this.integrations.set(key, integration);\n }\n return integration;\n }\n\n /**\n * Clear all injuries for a specific player.\n * \n * **Korean**: 특정 플레이어의 모든 부상 제거\n * \n * Useful for round resets or when a player is defeated.\n * \n * @param playerId - Unique player identifier (string or number)\n * \n */\n clearPlayerInjuries(playerId: string | number): void {\n const key = String(playerId);\n const tracker = this.trackers.get(key);\n if (tracker) {\n tracker.clearInjuries();\n }\n }\n\n /**\n * Remove tracking data for a player (e.g., when they leave the game).\n * \n * **Korean**: 플레이어 추적 데이터 제거\n * \n * @param playerId - Unique player identifier (string or number)\n * \n */\n removePlayer(playerId: string | number): void {\n const key = String(playerId);\n this.trackers.delete(key);\n this.integrations.delete(key);\n }\n\n /**\n * Clear all player tracking data.\n * \n * **Korean**: 모든 플레이어 추적 데이터 제거\n * \n * Useful for resetting the entire game state.\n * \n */\n clearAll(): void {\n this.trackers.clear();\n this.integrations.clear();\n }\n\n /**\n * Get all active player IDs being tracked.\n * \n * **Korean**: 추적 중인 모든 플레이어 ID 가져오기\n * \n * @returns Array of player IDs\n * \n */\n getActivePlayerIds(): string[] {\n return Array.from(this.trackers.keys());\n }\n}\n\n/**\n * Global singleton manager for player injury tracking.\n * \n * **Korean**: 플레이어 부상 추적을 위한 전역 싱글톤 관리자\n * \n * This singleton manages per-player injury trackers to ensure injuries\n * from different characters don't get mixed together.\n * \n * @example\n * ```typescript\n * import { playerInjuryManager } from '@/systems/bodypart';\n * \n * // In combat code:\n * const defenderIntegration = playerInjuryManager.getIntegrationForPlayer(defender.id);\n * defenderIntegration.recordCombatDamage({\n * damage: result.damage,\n * bodyRegion,\n * damageType,\n * });\n * ```\n * \n */\nexport const playerInjuryManager = new PlayerInjuryTrackingManager();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,IAAa,8BAAb,MAAyC;CACvC,2BAAmB,IAAI,KAA4B;CACnD,+BAAuB,IAAI,KAAsC;;;;;;;;;;CAWjE,oBAAoB,UAA0C;EAC5D,MAAM,MAAM,OAAO,SAAS;EAC5B,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI;EACpC,IAAI,CAAC,SAAS;GACZ,UAAU,IAAI,eAAe;GAC7B,KAAK,SAAS,IAAI,KAAK,QAAQ;;EAEjC,OAAO;;;;;;;;;;;CAYT,wBAAwB,UAAoD;EAC1E,MAAM,MAAM,OAAO,SAAS;EAC5B,IAAI,cAAc,KAAK,aAAa,IAAI,IAAI;EAC5C,IAAI,CAAC,aAAa;GAGhB,cAAc,IAAI,wBAAwB;IACxC,SAAS;IACT,WAAW;IACX,gBAAgB;IAChB,SANc,KAAK,oBAAoB,SAMvC;IACD,CAAC;GACF,KAAK,aAAa,IAAI,KAAK,YAAY;;EAEzC,OAAO;;;;;;;;;;;;CAaT,oBAAoB,UAAiC;EACnD,MAAM,MAAM,OAAO,SAAS;EAC5B,MAAM,UAAU,KAAK,SAAS,IAAI,IAAI;EACtC,IAAI,SACF,QAAQ,eAAe;;;;;;;;;;CAY3B,aAAa,UAAiC;EAC5C,MAAM,MAAM,OAAO,SAAS;EAC5B,KAAK,SAAS,OAAO,IAAI;EACzB,KAAK,aAAa,OAAO,IAAI;;;;;;;;;;CAW/B,WAAiB;EACf,KAAK,SAAS,OAAO;EACrB,KAAK,aAAa,OAAO;;;;;;;;;;CAW3B,qBAA+B;EAC7B,OAAO,MAAM,KAAK,KAAK,SAAS,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AA0B3C,IAAa,sBAAsB,IAAI,6BAA6B"}