blacktrigram 0.7.44 → 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 (746) 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/index.d.ts.map +1 -1
  6. package/lib/audio/index.js.map +1 -1
  7. package/lib/audio/types.d.ts +18 -2
  8. package/lib/audio/types.d.ts.map +1 -1
  9. package/lib/audio/types.js +1 -0
  10. package/lib/audio/types.js.map +1 -1
  11. package/lib/components/effects/WindParticles3D.d.ts.map +1 -1
  12. package/lib/components/index.d.ts.map +1 -1
  13. package/lib/components/index.js.map +1 -1
  14. package/lib/components/screens/combat/CombatScreen3D.d.ts.map +1 -1
  15. package/lib/components/screens/combat/CombatScreen3D.js.map +1 -1
  16. package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts +0 -1
  17. package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts.map +1 -1
  18. package/lib/components/screens/combat/components/controls/KeyboardHints.js +0 -1
  19. package/lib/components/screens/combat/components/controls/KeyboardHints.js.map +1 -1
  20. package/lib/components/screens/combat/components/controls/PauseMenu.d.ts.map +1 -1
  21. package/lib/components/screens/combat/components/controls/PauseMenu.js.map +1 -1
  22. package/lib/components/screens/combat/components/effects/ArterialSpray3D.d.ts.map +1 -1
  23. package/lib/components/screens/combat/components/effects/BloodDecals3D.d.ts.map +1 -1
  24. package/lib/components/screens/combat/components/effects/BloodDecals3D.js.map +1 -1
  25. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.d.ts.map +1 -1
  26. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js.map +1 -1
  27. package/lib/components/screens/combat/components/effects/BloodParticles3D.d.ts.map +1 -1
  28. package/lib/components/screens/combat/components/effects/BloodParticles3D.js.map +1 -1
  29. package/lib/components/screens/combat/components/effects/BloodViscosity3D.d.ts.map +1 -1
  30. package/lib/components/screens/combat/components/effects/BloodViscosity3D.js.map +1 -1
  31. package/lib/components/screens/combat/components/effects/BoneCrackParticles3D.d.ts.map +1 -1
  32. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.d.ts.map +1 -1
  33. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js.map +1 -1
  34. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.d.ts.map +1 -1
  35. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js.map +1 -1
  36. package/lib/components/screens/combat/components/effects/DustClouds3D.d.ts.map +1 -1
  37. package/lib/components/screens/combat/components/effects/EarthCrackEffect3D.d.ts.map +1 -1
  38. package/lib/components/screens/combat/components/effects/EarthHealingEffect3D.d.ts.map +1 -1
  39. package/lib/components/screens/combat/components/effects/ImpactSparks3D.d.ts.map +1 -1
  40. package/lib/components/screens/combat/components/effects/InternalDamage3D.d.ts.map +1 -1
  41. package/lib/components/screens/combat/components/effects/InternalDamage3D.js.map +1 -1
  42. package/lib/components/screens/combat/components/effects/LiPrecisionTargetingOverlay.d.ts.map +1 -1
  43. package/lib/components/screens/combat/components/effects/NerveStrikeParticles3D.d.ts.map +1 -1
  44. package/lib/components/screens/combat/components/effects/PainVignette.d.ts.map +1 -1
  45. package/lib/components/screens/combat/components/effects/PainVignette.js.map +1 -1
  46. package/lib/components/screens/combat/components/effects/ParticleAudio3D.d.ts.map +1 -1
  47. package/lib/components/screens/combat/components/effects/ParticleAudio3D.js.map +1 -1
  48. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.d.ts.map +1 -1
  49. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js.map +1 -1
  50. package/lib/components/screens/combat/components/effects/WaterRipple3D.d.ts.map +1 -1
  51. package/lib/components/screens/combat/components/effects/WaterWave3D.d.ts.map +1 -1
  52. package/lib/components/screens/combat/components/effects/index.d.ts.map +1 -1
  53. package/lib/components/screens/combat/components/feedback/MatchCountdown.d.ts.map +1 -1
  54. package/lib/components/screens/combat/components/feedback/MatchCountdown.js.map +1 -1
  55. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.d.ts.map +1 -1
  56. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js.map +1 -1
  57. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.d.ts.map +1 -1
  58. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.js.map +1 -1
  59. package/lib/components/screens/combat/components/hud/CombatBottomHUD.d.ts.map +1 -1
  60. package/lib/components/screens/combat/components/hud/CombatBottomHUD.js.map +1 -1
  61. package/lib/components/screens/combat/components/hud/CombatLeftHUD.d.ts.map +1 -1
  62. package/lib/components/screens/combat/components/hud/CombatLeftHUD.js.map +1 -1
  63. package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.d.ts.map +1 -1
  64. package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.js.map +1 -1
  65. package/lib/components/screens/combat/components/hud/CombatRightHUD.d.ts.map +1 -1
  66. package/lib/components/screens/combat/components/hud/CombatRightHUD.js.map +1 -1
  67. package/lib/components/screens/combat/components/hud/CombatTopHUD.d.ts.map +1 -1
  68. package/lib/components/screens/combat/components/hud/CombatTopHUD.js.map +1 -1
  69. package/lib/components/screens/combat/components/hud/DifficultyIndicator.d.ts.map +1 -1
  70. package/lib/components/screens/combat/components/hud/DifficultyIndicator.js.map +1 -1
  71. package/lib/components/screens/combat/components/hud/FPSMonitor.d.ts.map +1 -1
  72. package/lib/components/screens/combat/components/hud/FPSMonitor.js.map +1 -1
  73. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.d.ts.map +1 -1
  74. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js.map +1 -1
  75. package/lib/components/screens/combat/components/indicators/BalanceIndicator.d.ts.map +1 -1
  76. package/lib/components/screens/combat/components/indicators/BalanceIndicator.js.map +1 -1
  77. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts +0 -1
  78. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts.map +1 -1
  79. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js +0 -1
  80. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js.map +1 -1
  81. package/lib/components/screens/combat/components/indicators/StaminaWarning.d.ts.map +1 -1
  82. package/lib/components/screens/combat/components/indicators/StaminaWarning.js.map +1 -1
  83. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts +0 -2
  84. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts.map +1 -1
  85. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js +0 -1
  86. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js.map +1 -1
  87. package/lib/components/screens/combat/helpers/AnimationUpdater.d.ts.map +1 -1
  88. package/lib/components/screens/combat/helpers/AnimationUpdater.js.map +1 -1
  89. package/lib/components/screens/combat/helpers/combatHelpers.d.ts.map +1 -1
  90. package/lib/components/screens/combat/helpers/combatHelpers.js.map +1 -1
  91. package/lib/components/screens/combat/hooks/useAICombat.d.ts.map +1 -1
  92. package/lib/components/screens/combat/hooks/useAICombat.js.map +1 -1
  93. package/lib/components/screens/combat/hooks/useCombatActions.d.ts.map +1 -1
  94. package/lib/components/screens/combat/hooks/useCombatActions.js.map +1 -1
  95. package/lib/components/screens/combat/hooks/useCombatAttackMovement.d.ts.map +1 -1
  96. package/lib/components/screens/combat/hooks/useCombatAttackMovement.js.map +1 -1
  97. package/lib/components/screens/combat/hooks/useCombatAudio.d.ts.map +1 -1
  98. package/lib/components/screens/combat/hooks/useCombatAudio.js.map +1 -1
  99. package/lib/components/screens/combat/hooks/useCombatLayout.d.ts.map +1 -1
  100. package/lib/components/screens/combat/hooks/useCombatLayout.js.map +1 -1
  101. package/lib/components/screens/combat/hooks/useCombatState.d.ts.map +1 -1
  102. package/lib/components/screens/combat/hooks/useCombatState.js.map +1 -1
  103. package/lib/components/screens/combat/hooks/useGrapplingAudio.d.ts.map +1 -1
  104. package/lib/components/screens/combat/hooks/usePreloadCombatAudio.d.ts.map +1 -1
  105. package/lib/components/screens/controls/ControlsScreen3D.d.ts.map +1 -1
  106. package/lib/components/screens/controls/ControlsScreen3D.js.map +1 -1
  107. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.d.ts.map +1 -1
  108. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js.map +1 -1
  109. package/lib/components/screens/controls/components/GamepadVisualization3D.d.ts.map +1 -1
  110. package/lib/components/screens/controls/components/GamepadVisualization3D.js.map +1 -1
  111. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.d.ts.map +1 -1
  112. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js.map +1 -1
  113. package/lib/components/screens/controls/components/Key3D.d.ts.map +1 -1
  114. package/lib/components/screens/controls/components/Key3D.js.map +1 -1
  115. package/lib/components/screens/controls/components/VisualKeyboard3D.d.ts.map +1 -1
  116. package/lib/components/screens/controls/components/VisualKeyboard3D.js.map +1 -1
  117. package/lib/components/screens/controls/constants/ControlsConstants.d.ts.map +1 -1
  118. package/lib/components/screens/controls/constants/ControlsConstants.js.map +1 -1
  119. package/lib/components/screens/controls/hooks/useControlsState.d.ts.map +1 -1
  120. package/lib/components/screens/controls/hooks/useControlsState.js.map +1 -1
  121. package/lib/components/screens/endscreen/EndScreen3D.d.ts.map +1 -1
  122. package/lib/components/screens/endscreen/EndScreen3D.js.map +1 -1
  123. package/lib/components/screens/endscreen/components/DefeatAnimation3D.d.ts.map +1 -1
  124. package/lib/components/screens/endscreen/components/DefeatAnimation3D.js.map +1 -1
  125. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.d.ts.map +1 -1
  126. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js.map +1 -1
  127. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.d.ts.map +1 -1
  128. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js.map +1 -1
  129. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.d.ts.map +1 -1
  130. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js.map +1 -1
  131. package/lib/components/screens/endscreen/components/VictoryAnimation3D.d.ts.map +1 -1
  132. package/lib/components/screens/endscreen/components/VictoryAnimation3D.js.map +1 -1
  133. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.d.ts.map +1 -1
  134. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js.map +1 -1
  135. package/lib/components/screens/endscreen/components/index.d.ts.map +1 -1
  136. package/lib/components/screens/endscreen/index.d.ts.map +1 -1
  137. package/lib/components/screens/intro/IntroScreen3D.d.ts.map +1 -1
  138. package/lib/components/screens/intro/IntroScreen3D.js +1 -1
  139. package/lib/components/screens/intro/IntroScreen3D.js.map +1 -1
  140. package/lib/components/screens/intro/components/AbilityListOverlayHtml.d.ts.map +1 -1
  141. package/lib/components/screens/intro/components/AbilityListOverlayHtml.js.map +1 -1
  142. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.d.ts.map +1 -1
  143. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js.map +1 -1
  144. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.d.ts.map +1 -1
  145. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js.map +1 -1
  146. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.d.ts.map +1 -1
  147. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js.map +1 -1
  148. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.d.ts.map +1 -1
  149. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js.map +1 -1
  150. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.d.ts.map +1 -1
  151. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js.map +1 -1
  152. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.d.ts.map +1 -1
  153. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js.map +1 -1
  154. package/lib/components/screens/intro/components/StatBarOverlayHtml.d.ts.map +1 -1
  155. package/lib/components/screens/intro/components/StatBarOverlayHtml.js.map +1 -1
  156. package/lib/components/screens/philosophy/PhilosophyScreen3D.d.ts.map +1 -1
  157. package/lib/components/screens/philosophy/PhilosophyScreen3D.js.map +1 -1
  158. package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts +0 -1
  159. package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts.map +1 -1
  160. package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts +0 -1
  161. package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts.map +1 -1
  162. package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts +0 -1
  163. package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts.map +1 -1
  164. package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts +0 -1
  165. package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts.map +1 -1
  166. package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts +0 -1
  167. package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts.map +1 -1
  168. package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts +0 -1
  169. package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts.map +1 -1
  170. package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts +0 -1
  171. package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts.map +1 -1
  172. package/lib/components/screens/training/TrainingScreen3D.d.ts.map +1 -1
  173. package/lib/components/screens/training/TrainingScreen3D.js.map +1 -1
  174. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.d.ts.map +1 -1
  175. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js.map +1 -1
  176. package/lib/components/screens/training/components/AnatomyOverlay3D.d.ts.map +1 -1
  177. package/lib/components/screens/training/components/AnatomyOverlay3D.js.map +1 -1
  178. package/lib/components/screens/training/components/DamageNumber3D.d.ts.map +1 -1
  179. package/lib/components/screens/training/components/FootPlacementMarkers3D.d.ts.map +1 -1
  180. package/lib/components/screens/training/components/FootPlacementMarkers3D.js.map +1 -1
  181. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.d.ts.map +1 -1
  182. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js.map +1 -1
  183. package/lib/components/screens/training/components/HitFeedbackEffect3D.d.ts.map +1 -1
  184. package/lib/components/screens/training/components/HitFeedbackEffect3D.js.map +1 -1
  185. package/lib/components/screens/training/components/TrainingAICharacter3D.d.ts.map +1 -1
  186. package/lib/components/screens/training/components/TrainingArena3D.d.ts.map +1 -1
  187. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.d.ts.map +1 -1
  188. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js.map +1 -1
  189. package/lib/components/screens/training/components/TrainingDummy3D.d.ts.map +1 -1
  190. package/lib/components/screens/training/components/TrainingDummy3D.js.map +1 -1
  191. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.d.ts.map +1 -1
  192. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js.map +1 -1
  193. package/lib/components/screens/training/components/TrainingHitEffects3D.d.ts.map +1 -1
  194. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.d.ts.map +1 -1
  195. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js.map +1 -1
  196. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.d.ts.map +1 -1
  197. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js.map +1 -1
  198. package/lib/components/screens/training/components/VitalPointMarker3D.d.ts.map +1 -1
  199. package/lib/components/screens/training/components/VitalPointMarker3D.js.map +1 -1
  200. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.d.ts.map +1 -1
  201. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.js.map +1 -1
  202. package/lib/components/screens/training/components/hud/TrainingBottomHUD.d.ts.map +1 -1
  203. package/lib/components/screens/training/components/hud/TrainingBottomHUD.js.map +1 -1
  204. package/lib/components/screens/training/components/hud/TrainingLeftHUD.d.ts.map +1 -1
  205. package/lib/components/screens/training/components/hud/TrainingLeftHUD.js.map +1 -1
  206. package/lib/components/screens/training/components/hud/TrainingRightHUD.d.ts.map +1 -1
  207. package/lib/components/screens/training/components/hud/TrainingRightHUD.js.map +1 -1
  208. package/lib/components/screens/training/components/hud/TrainingTopHUD.d.ts.map +1 -1
  209. package/lib/components/screens/training/components/hud/TrainingTopHUD.js.map +1 -1
  210. package/lib/components/screens/training/components/index.d.ts.map +1 -1
  211. package/lib/components/screens/training/hooks/useAttackMovement.d.ts.map +1 -1
  212. package/lib/components/screens/training/hooks/useAttackMovement.js.map +1 -1
  213. package/lib/components/screens/training/hooks/useTrainingActions.d.ts.map +1 -1
  214. package/lib/components/screens/training/hooks/useTrainingActions.js.map +1 -1
  215. package/lib/components/screens/training/hooks/useTrainingLayout.d.ts.map +1 -1
  216. package/lib/components/screens/training/hooks/useTrainingLayout.js.map +1 -1
  217. package/lib/components/screens/training/hooks/useTrainingState.d.ts.map +1 -1
  218. package/lib/components/screens/training/hooks/useTrainingState.js.map +1 -1
  219. package/lib/components/shared/base/AccessibilityProvider.d.ts.map +1 -1
  220. package/lib/components/shared/base/BaseButton.d.ts.map +1 -1
  221. package/lib/components/shared/base/BaseButton.js.map +1 -1
  222. package/lib/components/shared/base/BaseButtonOverlayHtml.d.ts.map +1 -1
  223. package/lib/components/shared/base/BaseButtonOverlayHtml.js.map +1 -1
  224. package/lib/components/shared/base/BasePanel.d.ts.map +1 -1
  225. package/lib/components/shared/base/BasePanel.js.map +1 -1
  226. package/lib/components/shared/base/BaseText.d.ts.map +1 -1
  227. package/lib/components/shared/base/BaseText.js.map +1 -1
  228. package/lib/components/shared/base/ResponsiveContainer.d.ts.map +1 -1
  229. package/lib/components/shared/base/index.d.ts.map +1 -1
  230. package/lib/components/shared/base/useKoreanTheme.d.ts.map +1 -1
  231. package/lib/components/shared/base/useKoreanTheme.js.map +1 -1
  232. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.d.ts.map +1 -1
  233. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js.map +1 -1
  234. package/lib/components/shared/effects/ScreenFlash.d.ts.map +1 -1
  235. package/lib/components/shared/mobile/ActionButtons.d.ts.map +1 -1
  236. package/lib/components/shared/mobile/ActionButtons.js +0 -1
  237. package/lib/components/shared/mobile/ActionButtons.js.map +1 -1
  238. package/lib/components/shared/mobile/GestureRecognizerPure.d.ts +0 -1
  239. package/lib/components/shared/mobile/GestureRecognizerPure.d.ts.map +1 -1
  240. package/lib/components/shared/mobile/GestureRecognizerPure.js +0 -1
  241. package/lib/components/shared/mobile/GestureRecognizerPure.js.map +1 -1
  242. package/lib/components/shared/mobile/HapticController.d.ts +0 -13
  243. package/lib/components/shared/mobile/HapticController.d.ts.map +1 -1
  244. package/lib/components/shared/mobile/HapticController.js +0 -10
  245. package/lib/components/shared/mobile/HapticController.js.map +1 -1
  246. package/lib/components/shared/mobile/MobileControlsPure.d.ts.map +1 -1
  247. package/lib/components/shared/mobile/MobileControlsPure.js.map +1 -1
  248. package/lib/components/shared/mobile/PerformanceMonitor.d.ts +0 -15
  249. package/lib/components/shared/mobile/PerformanceMonitor.d.ts.map +1 -1
  250. package/lib/components/shared/mobile/StanceWheelPure.d.ts +0 -1
  251. package/lib/components/shared/mobile/StanceWheelPure.d.ts.map +1 -1
  252. package/lib/components/shared/mobile/StanceWheelPure.js +0 -1
  253. package/lib/components/shared/mobile/StanceWheelPure.js.map +1 -1
  254. package/lib/components/shared/mobile/TouchOptimizer.d.ts +0 -4
  255. package/lib/components/shared/mobile/TouchOptimizer.d.ts.map +1 -1
  256. package/lib/components/shared/mobile/TouchOptimizer.js +0 -3
  257. package/lib/components/shared/mobile/TouchOptimizer.js.map +1 -1
  258. package/lib/components/shared/mobile/VirtualDPad.d.ts.map +1 -1
  259. package/lib/components/shared/mobile/VirtualDPad.js +0 -1
  260. package/lib/components/shared/mobile/VirtualDPad.js.map +1 -1
  261. package/lib/components/shared/mobile/index.d.ts.map +1 -1
  262. package/lib/components/shared/three/anatomy/BodySurface.d.ts.map +1 -1
  263. package/lib/components/shared/three/anatomy/BodySurface.js.map +1 -1
  264. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.d.ts.map +1 -1
  265. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js.map +1 -1
  266. package/lib/components/shared/three/anatomy/BoneClothing.d.ts.map +1 -1
  267. package/lib/components/shared/three/anatomy/BoneClothing.js.map +1 -1
  268. package/lib/components/shared/three/anatomy/BoneRenderer.d.ts +0 -1
  269. package/lib/components/shared/three/anatomy/BoneRenderer.d.ts.map +1 -1
  270. package/lib/components/shared/three/anatomy/BoneRenderer.js.map +1 -1
  271. package/lib/components/shared/three/anatomy/Face3D.d.ts.map +1 -1
  272. package/lib/components/shared/three/anatomy/Face3D.js.map +1 -1
  273. package/lib/components/shared/three/anatomy/Foot3D.d.ts +0 -1
  274. package/lib/components/shared/three/anatomy/Foot3D.d.ts.map +1 -1
  275. package/lib/components/shared/three/anatomy/Foot3D.js.map +1 -1
  276. package/lib/components/shared/three/anatomy/Hand3D.d.ts +0 -1
  277. package/lib/components/shared/three/anatomy/Hand3D.d.ts.map +1 -1
  278. package/lib/components/shared/three/anatomy/Hand3D.js.map +1 -1
  279. package/lib/components/shared/three/effects/ActionFeedback.d.ts.map +1 -1
  280. package/lib/components/shared/three/effects/ActionFeedback.js.map +1 -1
  281. package/lib/components/shared/three/effects/DamageNumbers.d.ts.map +1 -1
  282. package/lib/components/shared/three/effects/DamageNumbers.js.map +1 -1
  283. package/lib/components/shared/three/effects/ExplosiveBurstEffect3D.d.ts.map +1 -1
  284. package/lib/components/shared/three/effects/GrapplingIndicator3D.d.ts.map +1 -1
  285. package/lib/components/shared/three/effects/HitEffects3D.d.ts.map +1 -1
  286. package/lib/components/shared/three/effects/HitEffects3D.js.map +1 -1
  287. package/lib/components/shared/three/effects/LimbExposureIndicator3D.d.ts.map +1 -1
  288. package/lib/components/shared/three/effects/NerveDisruptionEffect3D.d.ts.map +1 -1
  289. package/lib/components/shared/three/effects/PlayerStateIndicators.d.ts.map +1 -1
  290. package/lib/components/shared/three/effects/PlayerStateIndicators.js.map +1 -1
  291. package/lib/components/shared/three/effects/StanceSymbol3D.d.ts.map +1 -1
  292. package/lib/components/shared/three/effects/StanceSymbol3D.js.map +1 -1
  293. package/lib/components/shared/three/effects/StanceTransitionEffect.d.ts.map +1 -1
  294. package/lib/components/shared/three/effects/StanceTransitionEffect.js.map +1 -1
  295. package/lib/components/shared/three/effects/ThunderEffect3D.d.ts.map +1 -1
  296. package/lib/components/shared/three/effects/VitalPointMarkers3D.d.ts.map +1 -1
  297. package/lib/components/shared/three/effects/VitalPointMarkers3D.js.map +1 -1
  298. package/lib/components/shared/three/index.d.ts.map +1 -1
  299. package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts +0 -6
  300. package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts.map +1 -1
  301. package/lib/components/shared/three/indicators/ElementalColorSystem.js +0 -4
  302. package/lib/components/shared/three/indicators/ElementalColorSystem.js.map +1 -1
  303. package/lib/components/shared/three/indicators/GuardIndicator.d.ts +0 -1
  304. package/lib/components/shared/three/indicators/GuardIndicator.d.ts.map +1 -1
  305. package/lib/components/shared/three/indicators/GuardIndicator.js +0 -1
  306. package/lib/components/shared/three/indicators/GuardIndicator.js.map +1 -1
  307. package/lib/components/shared/three/indicators/HapticFeedback.d.ts +0 -7
  308. package/lib/components/shared/three/indicators/HapticFeedback.d.ts.map +1 -1
  309. package/lib/components/shared/three/indicators/HapticFeedback.js +0 -2
  310. package/lib/components/shared/three/indicators/HapticFeedback.js.map +1 -1
  311. package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts +0 -1
  312. package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts.map +1 -1
  313. package/lib/components/shared/three/indicators/StanceChangeIndicator.js +0 -1
  314. package/lib/components/shared/three/indicators/StanceChangeIndicator.js.map +1 -1
  315. package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts +0 -1
  316. package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts.map +1 -1
  317. package/lib/components/shared/three/models/Player3DWithTransitions.d.ts.map +1 -1
  318. package/lib/components/shared/three/models/Player3DWithTransitions.js.map +1 -1
  319. package/lib/components/shared/three/models/SkeletalPlayer3D.d.ts.map +1 -1
  320. package/lib/components/shared/three/models/SkeletalPlayer3D.js.map +1 -1
  321. package/lib/components/shared/three/optimization/AdaptiveQuality.d.ts.map +1 -1
  322. package/lib/components/shared/three/optimization/AdaptiveQuality.js.map +1 -1
  323. package/lib/components/shared/three/optimization/InstancedGeometry.d.ts.map +1 -1
  324. package/lib/components/shared/three/optimization/LODSystem.d.ts.map +1 -1
  325. package/lib/components/shared/three/scene/AtmosphericParticles3D.d.ts.map +1 -1
  326. package/lib/components/shared/three/scene/AtmosphericParticles3D.js.map +1 -1
  327. package/lib/components/shared/three/scene/BackgroundScene3D.d.ts.map +1 -1
  328. package/lib/components/shared/three/scene/BackgroundScene3D.js.map +1 -1
  329. package/lib/components/shared/three/scene/CombatArena3D.d.ts.map +1 -1
  330. package/lib/components/shared/three/scene/CombatArena3D.js.map +1 -1
  331. package/lib/components/shared/three/scene/DebugCollision.d.ts +0 -2
  332. package/lib/components/shared/three/scene/DebugCollision.d.ts.map +1 -1
  333. package/lib/components/shared/three/scene/KoreanSignage3D.d.ts.map +1 -1
  334. package/lib/components/shared/three/scene/KoreanSignage3D.js.map +1 -1
  335. package/lib/components/shared/three/ui/ArchetypeCard.d.ts.map +1 -1
  336. package/lib/components/shared/three/ui/ArchetypeCard.js.map +1 -1
  337. package/lib/components/shared/three/ui/BodyPartHealthDisplay.d.ts.map +1 -1
  338. package/lib/components/shared/three/ui/BodyPartHealthDisplay.js.map +1 -1
  339. package/lib/components/shared/three/ui/BreathingIndicator.d.ts.map +1 -1
  340. package/lib/components/shared/three/ui/BreathingIndicator2.js.map +1 -1
  341. package/lib/components/shared/three/ui/CombatReadinessBar.d.ts.map +1 -1
  342. package/lib/components/shared/three/ui/CombatReadinessBar.js.map +1 -1
  343. package/lib/components/shared/three/ui/ComboCounter.d.ts.map +1 -1
  344. package/lib/components/shared/three/ui/ComboCounter.js.map +1 -1
  345. package/lib/components/shared/three/ui/HealthBar.d.ts.map +1 -1
  346. package/lib/components/shared/three/ui/HealthBar.js.map +1 -1
  347. package/lib/components/shared/three/ui/KoreanButton.d.ts.map +1 -1
  348. package/lib/components/shared/three/ui/KoreanButton.js.map +1 -1
  349. package/lib/components/shared/three/ui/KoreanPanel.d.ts.map +1 -1
  350. package/lib/components/shared/three/ui/KoreanPanel.js.map +1 -1
  351. package/lib/components/shared/three/ui/KoreanText.d.ts.map +1 -1
  352. package/lib/components/shared/three/ui/KoreanText.js.map +1 -1
  353. package/lib/components/shared/three/ui/MenuList.d.ts.map +1 -1
  354. package/lib/components/shared/three/ui/MenuList.js.map +1 -1
  355. package/lib/components/shared/three/ui/PlayerHUD.d.ts.map +1 -1
  356. package/lib/components/shared/three/ui/PlayerHUD.js.map +1 -1
  357. package/lib/components/shared/three/ui/ProgressBar.d.ts.map +1 -1
  358. package/lib/components/shared/three/ui/ProgressBar.js.map +1 -1
  359. package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts +0 -1
  360. package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts.map +1 -1
  361. package/lib/components/shared/three/ui/SpeedIndicatorHUD.js +0 -1
  362. package/lib/components/shared/three/ui/SpeedIndicatorHUD.js.map +1 -1
  363. package/lib/components/shared/three/ui/StaminaBar.d.ts.map +1 -1
  364. package/lib/components/shared/three/ui/StaminaBar.js.map +1 -1
  365. package/lib/components/shared/three/ui/TechniqueBar.d.ts.map +1 -1
  366. package/lib/components/shared/three/ui/TechniqueBar.js.map +1 -1
  367. package/lib/components/shared/three/ui/TechniqueBarContainer.d.ts.map +1 -1
  368. package/lib/components/shared/three/ui/TechniqueCard.d.ts.map +1 -1
  369. package/lib/components/shared/three/ui/TechniqueCard.js.map +1 -1
  370. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.d.ts.map +1 -1
  371. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js.map +1 -1
  372. package/lib/components/shared/three/ui/VulnerabilityWindowHUD.d.ts.map +1 -1
  373. package/lib/components/shared/ui/BaseHUDContainer.d.ts.map +1 -1
  374. package/lib/components/shared/ui/BaseHUDContainer.js.map +1 -1
  375. package/lib/components/shared/ui/CombatTimer.d.ts.map +1 -1
  376. package/lib/components/shared/ui/CombatTimer.js.map +1 -1
  377. package/lib/components/shared/ui/ErrorBoundary.d.ts.map +1 -1
  378. package/lib/components/shared/ui/ErrorModal.d.ts.map +1 -1
  379. package/lib/components/shared/ui/ErrorModal.js.map +1 -1
  380. package/lib/components/shared/ui/HUDSection.d.ts.map +1 -1
  381. package/lib/components/shared/ui/LoadingState.d.ts.map +1 -1
  382. package/lib/components/shared/ui/LoadingState.js.map +1 -1
  383. package/lib/components/shared/ui/MobileHUDLayout.d.ts +0 -1
  384. package/lib/components/shared/ui/MobileHUDLayout.d.ts.map +1 -1
  385. package/lib/components/shared/ui/ResponsiveContainer.d.ts +0 -1
  386. package/lib/components/shared/ui/ResponsiveContainer.d.ts.map +1 -1
  387. package/lib/components/shared/ui/SplashScreen.d.ts.map +1 -1
  388. package/lib/components/shared/ui/SplashScreen.js +2 -2
  389. package/lib/components/shared/ui/SplashScreen.js.map +1 -1
  390. package/lib/components/shared/ui/StyledHUDPanel.d.ts.map +1 -1
  391. package/lib/components/shared/ui/VitalPointOverlayControlsPure.d.ts.map +1 -1
  392. package/lib/components/shared/ui/VitalPointOverlayControlsPure.js.map +1 -1
  393. package/lib/components/shared/ui/VolumeControl.d.ts.map +1 -1
  394. package/lib/components/shared/ui/VolumeControl.js.map +1 -1
  395. package/lib/components/shared/ui/shared/ConfirmDialog.d.ts.map +1 -1
  396. package/lib/components/shared/ui/shared/ConfirmDialog.js.map +1 -1
  397. package/lib/components/test/Hello3D.d.ts.map +1 -1
  398. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.d.ts.map +1 -1
  399. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js.map +1 -1
  400. package/lib/components/ui/combat/ComboCounter.d.ts.map +1 -1
  401. package/lib/components/ui/combat/PressureMeter.d.ts.map +1 -1
  402. package/lib/systems/CombatSystem.d.ts +0 -6
  403. package/lib/systems/CombatSystem.d.ts.map +1 -1
  404. package/lib/systems/CombatSystem.js +0 -6
  405. package/lib/systems/CombatSystem.js.map +1 -1
  406. package/lib/systems/EffectCalculator.d.ts +0 -7
  407. package/lib/systems/EffectCalculator.d.ts.map +1 -1
  408. package/lib/systems/EffectCalculator.js +0 -4
  409. package/lib/systems/EffectCalculator.js.map +1 -1
  410. package/lib/systems/LayoutSystem.d.ts +0 -1
  411. package/lib/systems/LayoutSystem.d.ts.map +1 -1
  412. package/lib/systems/LayoutSystem.js +0 -1
  413. package/lib/systems/LayoutSystem.js.map +1 -1
  414. package/lib/systems/PlayerEffectManager.d.ts +0 -10
  415. package/lib/systems/PlayerEffectManager.d.ts.map +1 -1
  416. package/lib/systems/PlayerEffectManager.js +0 -3
  417. package/lib/systems/PlayerEffectManager.js.map +1 -1
  418. package/lib/systems/ResponsiveScaling.d.ts +0 -12
  419. package/lib/systems/ResponsiveScaling.d.ts.map +1 -1
  420. package/lib/systems/ResponsiveScaling.js +0 -12
  421. package/lib/systems/ResponsiveScaling.js.map +1 -1
  422. package/lib/systems/TrigramSystem.d.ts +0 -13
  423. package/lib/systems/TrigramSystem.d.ts.map +1 -1
  424. package/lib/systems/TrigramSystem.js +0 -13
  425. package/lib/systems/TrigramSystem.js.map +1 -1
  426. package/lib/systems/VitalPointSystem.d.ts +0 -10
  427. package/lib/systems/VitalPointSystem.d.ts.map +1 -1
  428. package/lib/systems/VitalPointSystem.js +0 -10
  429. package/lib/systems/VitalPointSystem.js.map +1 -1
  430. package/lib/systems/animation/builders/KeyframeInterpolation.d.ts +0 -4
  431. package/lib/systems/animation/builders/KeyframeInterpolation.d.ts.map +1 -1
  432. package/lib/systems/animation/builders/KeyframeInterpolation.js +0 -1
  433. package/lib/systems/animation/builders/KeyframeInterpolation.js.map +1 -1
  434. package/lib/systems/animation/builders/SkeletonRig.d.ts +0 -4
  435. package/lib/systems/animation/builders/SkeletonRig.d.ts.map +1 -1
  436. package/lib/systems/animation/builders/SkeletonRig.js +0 -3
  437. package/lib/systems/animation/builders/SkeletonRig.js.map +1 -1
  438. package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts +0 -5
  439. package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts.map +1 -1
  440. package/lib/systems/animation/catalogs/RecoveryAnimations.js +0 -5
  441. package/lib/systems/animation/catalogs/RecoveryAnimations.js.map +1 -1
  442. package/lib/systems/animation/core/AnimationHitTiming.d.ts +0 -6
  443. package/lib/systems/animation/core/AnimationHitTiming.d.ts.map +1 -1
  444. package/lib/systems/animation/core/AnimationHitTiming.js +0 -4
  445. package/lib/systems/animation/core/AnimationHitTiming.js.map +1 -1
  446. package/lib/systems/animation/core/AnimationTransitions.d.ts +0 -3
  447. package/lib/systems/animation/core/AnimationTransitions.d.ts.map +1 -1
  448. package/lib/systems/animation/core/AnimationTransitions.js.map +1 -1
  449. package/lib/systems/animation/core/LateralityTransform.d.ts +0 -3
  450. package/lib/systems/animation/core/LateralityTransform.d.ts.map +1 -1
  451. package/lib/systems/animation/core/LateralityTransform.js +0 -1
  452. package/lib/systems/animation/core/LateralityTransform.js.map +1 -1
  453. package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts +0 -1
  454. package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts.map +1 -1
  455. package/lib/systems/animation/core/RecoveryPhaseEnhancer.js.map +1 -1
  456. package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts +0 -10
  457. package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts.map +1 -1
  458. package/lib/systems/animation/core/TechniqueAnimationMapper.js +0 -8
  459. package/lib/systems/animation/core/TechniqueAnimationMapper.js.map +1 -1
  460. package/lib/systems/animation/core/TrigramAnimationMapping.d.ts +0 -10
  461. package/lib/systems/animation/core/TrigramAnimationMapping.d.ts.map +1 -1
  462. package/lib/systems/animation/core/TrigramStanceTransitions.d.ts +0 -2
  463. package/lib/systems/animation/core/TrigramStanceTransitions.d.ts.map +1 -1
  464. package/lib/systems/animation/core/types.d.ts +0 -39
  465. package/lib/systems/animation/core/types.d.ts.map +1 -1
  466. package/lib/systems/animation/core/types.js +0 -9
  467. package/lib/systems/animation/core/types.js.map +1 -1
  468. package/lib/systems/animation/systems/AdvancedJointMovements.d.ts +0 -27
  469. package/lib/systems/animation/systems/AdvancedJointMovements.d.ts.map +1 -1
  470. package/lib/systems/animation/systems/AdvancedJointMovements.js +0 -1
  471. package/lib/systems/animation/systems/AdvancedJointMovements.js.map +1 -1
  472. package/lib/systems/animation/systems/BodyFacingSystem.d.ts +0 -19
  473. package/lib/systems/animation/systems/BodyFacingSystem.d.ts.map +1 -1
  474. package/lib/systems/animation/systems/BodyFacingSystem.js +0 -14
  475. package/lib/systems/animation/systems/BodyFacingSystem.js.map +1 -1
  476. package/lib/systems/animation/systems/FacialExpressions.d.ts +0 -10
  477. package/lib/systems/animation/systems/FacialExpressions.d.ts.map +1 -1
  478. package/lib/systems/animation/systems/FacialExpressions.js +0 -2
  479. package/lib/systems/animation/systems/FacialExpressions.js.map +1 -1
  480. package/lib/systems/animation/systems/FallAnimations.d.ts +0 -4
  481. package/lib/systems/animation/systems/FallAnimations.d.ts.map +1 -1
  482. package/lib/systems/animation/systems/FallAnimations.js +0 -2
  483. package/lib/systems/animation/systems/FallAnimations.js.map +1 -1
  484. package/lib/systems/animation/systems/HeadMovements.d.ts +0 -10
  485. package/lib/systems/animation/systems/HeadMovements.d.ts.map +1 -1
  486. package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts +0 -7
  487. package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts.map +1 -1
  488. package/lib/systems/bodypart/BodyPartDamageIntegration.js +0 -7
  489. package/lib/systems/bodypart/BodyPartDamageIntegration.js.map +1 -1
  490. package/lib/systems/bodypart/BodyPartHealthSystem.d.ts +0 -13
  491. package/lib/systems/bodypart/BodyPartHealthSystem.d.ts.map +1 -1
  492. package/lib/systems/bodypart/BodyPartHealthSystem.js +0 -13
  493. package/lib/systems/bodypart/BodyPartHealthSystem.js.map +1 -1
  494. package/lib/systems/bodypart/BodyPartPositionMapping.d.ts +0 -6
  495. package/lib/systems/bodypart/BodyPartPositionMapping.d.ts.map +1 -1
  496. package/lib/systems/bodypart/BodyPartPositionMapping.js +0 -6
  497. package/lib/systems/bodypart/BodyPartPositionMapping.js.map +1 -1
  498. package/lib/systems/bodypart/CombatInjuryIntegration.d.ts +0 -10
  499. package/lib/systems/bodypart/CombatInjuryIntegration.d.ts.map +1 -1
  500. package/lib/systems/bodypart/CombatInjuryIntegration.js +0 -8
  501. package/lib/systems/bodypart/CombatInjuryIntegration.js.map +1 -1
  502. package/lib/systems/bodypart/InjuryIntegration.d.ts +0 -2
  503. package/lib/systems/bodypart/InjuryIntegration.d.ts.map +1 -1
  504. package/lib/systems/bodypart/InjuryIntegration.js +0 -2
  505. package/lib/systems/bodypart/InjuryIntegration.js.map +1 -1
  506. package/lib/systems/bodypart/InjuryTracker.d.ts +0 -14
  507. package/lib/systems/bodypart/InjuryTracker.d.ts.map +1 -1
  508. package/lib/systems/bodypart/InjuryTracker.js +0 -12
  509. package/lib/systems/bodypart/InjuryTracker.js.map +1 -1
  510. package/lib/systems/bodypart/MovementPenaltySystem.d.ts +0 -8
  511. package/lib/systems/bodypart/MovementPenaltySystem.d.ts.map +1 -1
  512. package/lib/systems/bodypart/MovementPenaltySystem.js +0 -8
  513. package/lib/systems/bodypart/MovementPenaltySystem.js.map +1 -1
  514. package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts +0 -8
  515. package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts.map +1 -1
  516. package/lib/systems/bodypart/PlayerInjuryTrackingManager.js +0 -8
  517. package/lib/systems/bodypart/PlayerInjuryTrackingManager.js.map +1 -1
  518. package/lib/systems/bodypart/types.d.ts +0 -13
  519. package/lib/systems/bodypart/types.d.ts.map +1 -1
  520. package/lib/systems/bodypart/types.js +0 -5
  521. package/lib/systems/bodypart/types.js.map +1 -1
  522. package/lib/systems/breathing/BreathingDisruptionSystem.d.ts +0 -3
  523. package/lib/systems/breathing/BreathingDisruptionSystem.d.ts.map +1 -1
  524. package/lib/systems/breathing/BreathingDisruptionSystem.js +0 -2
  525. package/lib/systems/breathing/BreathingDisruptionSystem.js.map +1 -1
  526. package/lib/systems/combat/BalanceSystem.d.ts +0 -25
  527. package/lib/systems/combat/BalanceSystem.d.ts.map +1 -1
  528. package/lib/systems/combat/BalanceSystem.js +0 -25
  529. package/lib/systems/combat/BalanceSystem.js.map +1 -1
  530. package/lib/systems/combat/BreakingStatusEffects.d.ts +0 -4
  531. package/lib/systems/combat/BreakingStatusEffects.d.ts.map +1 -1
  532. package/lib/systems/combat/BreakingStatusEffects.js +0 -3
  533. package/lib/systems/combat/BreakingStatusEffects.js.map +1 -1
  534. package/lib/systems/combat/CombatStateSystem.d.ts +0 -9
  535. package/lib/systems/combat/CombatStateSystem.d.ts.map +1 -1
  536. package/lib/systems/combat/CombatStateSystem.js +0 -9
  537. package/lib/systems/combat/CombatStateSystem.js.map +1 -1
  538. package/lib/systems/combat/ConsciousnessSystem.d.ts +0 -16
  539. package/lib/systems/combat/ConsciousnessSystem.d.ts.map +1 -1
  540. package/lib/systems/combat/ConsciousnessSystem.js +0 -16
  541. package/lib/systems/combat/ConsciousnessSystem.js.map +1 -1
  542. package/lib/systems/combat/FallIntegration.d.ts +0 -3
  543. package/lib/systems/combat/FallIntegration.d.ts.map +1 -1
  544. package/lib/systems/combat/FallIntegration.js +0 -3
  545. package/lib/systems/combat/FallIntegration.js.map +1 -1
  546. package/lib/systems/combat/GrappleSystem.d.ts +0 -2
  547. package/lib/systems/combat/GrappleSystem.d.ts.map +1 -1
  548. package/lib/systems/combat/GrappleSystem.js +0 -2
  549. package/lib/systems/combat/GrappleSystem.js.map +1 -1
  550. package/lib/systems/combat/LimbExposureSystem.d.ts +0 -7
  551. package/lib/systems/combat/LimbExposureSystem.d.ts.map +1 -1
  552. package/lib/systems/combat/LimbExposureSystem.js +0 -7
  553. package/lib/systems/combat/LimbExposureSystem.js.map +1 -1
  554. package/lib/systems/combat/PainResponseSystem.d.ts +0 -11
  555. package/lib/systems/combat/PainResponseSystem.d.ts.map +1 -1
  556. package/lib/systems/combat/PainResponseSystem.js +0 -11
  557. package/lib/systems/combat/PainResponseSystem.js.map +1 -1
  558. package/lib/systems/combat/painConsciousnessUtils.d.ts +0 -7
  559. package/lib/systems/combat/painConsciousnessUtils.d.ts.map +1 -1
  560. package/lib/systems/combat/painConsciousnessUtils.js +0 -7
  561. package/lib/systems/combat/painConsciousnessUtils.js.map +1 -1
  562. package/lib/systems/effects.d.ts +11 -0
  563. package/lib/systems/effects.d.ts.map +1 -1
  564. package/lib/systems/effects.js +10 -0
  565. package/lib/systems/effects.js.map +1 -1
  566. package/lib/systems/game.d.ts +16 -0
  567. package/lib/systems/game.d.ts.map +1 -1
  568. package/lib/systems/game.js +1 -0
  569. package/lib/systems/game.js.map +1 -1
  570. package/lib/systems/index.d.ts +5 -1
  571. package/lib/systems/index.d.ts.map +1 -1
  572. package/lib/systems/index.js.map +1 -1
  573. package/lib/systems/movement/InjuryMovementModifier.d.ts +0 -10
  574. package/lib/systems/movement/InjuryMovementModifier.d.ts.map +1 -1
  575. package/lib/systems/movement/InjuryMovementModifier.js +0 -7
  576. package/lib/systems/movement/InjuryMovementModifier.js.map +1 -1
  577. package/lib/systems/movement/integration.d.ts +0 -3
  578. package/lib/systems/movement/integration.d.ts.map +1 -1
  579. package/lib/systems/movement/integration.js +0 -3
  580. package/lib/systems/movement/integration.js.map +1 -1
  581. package/lib/systems/physics/AttackMovementPhysics.d.ts +0 -9
  582. package/lib/systems/physics/AttackMovementPhysics.d.ts.map +1 -1
  583. package/lib/systems/physics/AttackMovementPhysics.js +0 -7
  584. package/lib/systems/physics/AttackMovementPhysics.js.map +1 -1
  585. package/lib/systems/physics/CollisionDetection.d.ts +0 -6
  586. package/lib/systems/physics/CollisionDetection.d.ts.map +1 -1
  587. package/lib/systems/physics/CollisionDetection.js +0 -6
  588. package/lib/systems/physics/CollisionDetection.js.map +1 -1
  589. package/lib/systems/physics/CoordinateMapper.d.ts +0 -1
  590. package/lib/systems/physics/CoordinateMapper.d.ts.map +1 -1
  591. package/lib/systems/physics/CoordinateMapper.js +0 -1
  592. package/lib/systems/physics/CoordinateMapper.js.map +1 -1
  593. package/lib/systems/physics/KnockbackPhysics.d.ts +0 -11
  594. package/lib/systems/physics/KnockbackPhysics.d.ts.map +1 -1
  595. package/lib/systems/physics/KnockbackPhysics.js +0 -8
  596. package/lib/systems/physics/KnockbackPhysics.js.map +1 -1
  597. package/lib/systems/physics/MovementPhysics.d.ts +0 -10
  598. package/lib/systems/physics/MovementPhysics.d.ts.map +1 -1
  599. package/lib/systems/physics/MovementPhysics.js +0 -8
  600. package/lib/systems/physics/MovementPhysics.js.map +1 -1
  601. package/lib/systems/physics/PhysicalReachCalculator.d.ts +0 -6
  602. package/lib/systems/physics/PhysicalReachCalculator.d.ts.map +1 -1
  603. package/lib/systems/physics/PhysicalReachCalculator.js +0 -5
  604. package/lib/systems/physics/PhysicalReachCalculator.js.map +1 -1
  605. package/lib/systems/physics/SpeedModifierSystem.d.ts +0 -5
  606. package/lib/systems/physics/SpeedModifierSystem.d.ts.map +1 -1
  607. package/lib/systems/physics/SpeedModifierSystem.js +0 -4
  608. package/lib/systems/physics/SpeedModifierSystem.js.map +1 -1
  609. package/lib/systems/player.d.ts +0 -5
  610. package/lib/systems/player.d.ts.map +1 -1
  611. package/lib/systems/trigram/TrigramCalculator.d.ts +0 -1
  612. package/lib/systems/trigram/TrigramCalculator.d.ts.map +1 -1
  613. package/lib/systems/trigram/TrigramCalculator.js +0 -1
  614. package/lib/systems/trigram/TrigramCalculator.js.map +1 -1
  615. package/lib/systems/trigram/types.d.ts +0 -4
  616. package/lib/systems/trigram/types.d.ts.map +1 -1
  617. package/lib/systems/trigram/types.js +0 -2
  618. package/lib/systems/trigram/types.js.map +1 -1
  619. package/lib/systems/types.d.ts +7 -2
  620. package/lib/systems/types.d.ts.map +1 -1
  621. package/lib/systems/types.js.map +1 -1
  622. package/lib/systems/vitalpoint/DamageCalculator.d.ts +0 -3
  623. package/lib/systems/vitalpoint/DamageCalculator.d.ts.map +1 -1
  624. package/lib/systems/vitalpoint/DamageCalculator.js +0 -3
  625. package/lib/systems/vitalpoint/DamageCalculator.js.map +1 -1
  626. package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts +0 -8
  627. package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts.map +1 -1
  628. package/lib/systems/vitalpoint/KoreanVitalPoints.js +0 -8
  629. package/lib/systems/vitalpoint/KoreanVitalPoints.js.map +1 -1
  630. package/lib/systems/vitalpoint/VitalPointsData.d.ts +0 -3
  631. package/lib/systems/vitalpoint/VitalPointsData.d.ts.map +1 -1
  632. package/lib/systems/vitalpoint/VitalPointsData.js +0 -1
  633. package/lib/systems/vitalpoint/VitalPointsData.js.map +1 -1
  634. package/lib/types/PhysicsTypes.d.ts +21 -78
  635. package/lib/types/PhysicsTypes.d.ts.map +1 -1
  636. package/lib/types/PhysicsTypes.js +17 -63
  637. package/lib/types/PhysicsTypes.js.map +1 -1
  638. package/lib/types/clothing.d.ts +0 -9
  639. package/lib/types/clothing.d.ts.map +1 -1
  640. package/lib/types/constants/animations.d.ts +35 -1
  641. package/lib/types/constants/animations.d.ts.map +1 -1
  642. package/lib/types/constants/animations.js +12 -1
  643. package/lib/types/constants/animations.js.map +1 -1
  644. package/lib/types/constants/colors.d.ts +28 -2
  645. package/lib/types/constants/colors.d.ts.map +1 -1
  646. package/lib/types/constants/colors.js +30 -4
  647. package/lib/types/constants/colors.js.map +1 -1
  648. package/lib/types/constants/index.d.ts +5 -1
  649. package/lib/types/constants/index.d.ts.map +1 -1
  650. package/lib/types/constants/index.js.map +1 -1
  651. package/lib/types/constants/performance.d.ts +0 -2
  652. package/lib/types/constants/performance.d.ts.map +1 -1
  653. package/lib/types/constants/performance.js +0 -2
  654. package/lib/types/constants/performance.js.map +1 -1
  655. package/lib/types/constants/typography.d.ts +40 -2
  656. package/lib/types/constants/typography.d.ts.map +1 -1
  657. package/lib/types/constants/typography.js +40 -2
  658. package/lib/types/constants/typography.js.map +1 -1
  659. package/lib/types/constants/ui.d.ts +89 -1
  660. package/lib/types/constants/ui.d.ts.map +1 -1
  661. package/lib/types/constants/ui.js +33 -1
  662. package/lib/types/constants/ui.js.map +1 -1
  663. package/lib/types/facial.d.ts +0 -15
  664. package/lib/types/facial.d.ts.map +1 -1
  665. package/lib/types/facial.js +0 -8
  666. package/lib/types/facial.js.map +1 -1
  667. package/lib/types/hand-animation.d.ts +34 -147
  668. package/lib/types/hand-animation.d.ts.map +1 -1
  669. package/lib/types/hand-animation.js +0 -2
  670. package/lib/types/hand-animation.js.map +1 -1
  671. package/lib/types/injury.d.ts +0 -2
  672. package/lib/types/injury.d.ts.map +1 -1
  673. package/lib/types/injury.js +0 -1
  674. package/lib/types/injury.js.map +1 -1
  675. package/lib/types/physics.d.ts +0 -21
  676. package/lib/types/physics.d.ts.map +1 -1
  677. package/lib/types/physics.js +0 -6
  678. package/lib/types/physics.js.map +1 -1
  679. package/lib/types/physicsConstants.d.ts +0 -12
  680. package/lib/types/physicsConstants.d.ts.map +1 -1
  681. package/lib/types/physicsConstants.js +0 -12
  682. package/lib/types/physicsConstants.js.map +1 -1
  683. package/lib/types/player-visual.d.ts +45 -189
  684. package/lib/types/player-visual.d.ts.map +1 -1
  685. package/lib/types/technique.d.ts +1 -5
  686. package/lib/types/technique.d.ts.map +1 -1
  687. package/lib/types/techniqueId.d.ts +0 -1
  688. package/lib/types/techniqueId.d.ts.map +1 -1
  689. package/lib/types/techniqueId.js +0 -1
  690. package/lib/types/techniqueId.js.map +1 -1
  691. package/lib/utils/arenaWorldDimensions.d.ts +0 -11
  692. package/lib/utils/arenaWorldDimensions.d.ts.map +1 -1
  693. package/lib/utils/arenaWorldDimensions.js +0 -6
  694. package/lib/utils/arenaWorldDimensions.js.map +1 -1
  695. package/lib/utils/controlMapping.d.ts +3 -4
  696. package/lib/utils/controlMapping.d.ts.map +1 -1
  697. package/lib/utils/controlMapping.js +1 -2
  698. package/lib/utils/controlMapping.js.map +1 -1
  699. package/lib/utils/deviceDetection.d.ts +0 -5
  700. package/lib/utils/deviceDetection.d.ts.map +1 -1
  701. package/lib/utils/deviceDetection.js +0 -5
  702. package/lib/utils/deviceDetection.js.map +1 -1
  703. package/lib/utils/hapticFeedback.d.ts +23 -95
  704. package/lib/utils/hapticFeedback.d.ts.map +1 -1
  705. package/lib/utils/hapticFeedback.js +9 -39
  706. package/lib/utils/hapticFeedback.js.map +1 -1
  707. package/lib/utils/haptics.d.ts +0 -3
  708. package/lib/utils/haptics.d.ts.map +1 -1
  709. package/lib/utils/haptics.js +0 -1
  710. package/lib/utils/haptics.js.map +1 -1
  711. package/lib/utils/math.d.ts +0 -3
  712. package/lib/utils/math.d.ts.map +1 -1
  713. package/lib/utils/math.js +0 -2
  714. package/lib/utils/math.js.map +1 -1
  715. package/lib/utils/mobileLayoutHelpers.d.ts +0 -3
  716. package/lib/utils/mobileLayoutHelpers.d.ts.map +1 -1
  717. package/lib/utils/mobileLayoutHelpers.js +0 -1
  718. package/lib/utils/mobileLayoutHelpers.js.map +1 -1
  719. package/lib/utils/mobileUIUtils.d.ts +5 -100
  720. package/lib/utils/mobileUIUtils.d.ts.map +1 -1
  721. package/lib/utils/mobileUIUtils.js +0 -9
  722. package/lib/utils/mobileUIUtils.js.map +1 -1
  723. package/lib/utils/physicalAttributeValidation.d.ts.map +1 -1
  724. package/lib/utils/player3DHelpers.d.ts.map +1 -1
  725. package/lib/utils/player3DHelpers.js.map +1 -1
  726. package/lib/utils/responsiveLayoutHelpers.d.ts +0 -65
  727. package/lib/utils/responsiveLayoutHelpers.d.ts.map +1 -1
  728. package/lib/utils/responsiveLayoutHelpers.js +0 -65
  729. package/lib/utils/responsiveLayoutHelpers.js.map +1 -1
  730. package/lib/utils/responsiveOrientationConstants.d.ts +0 -7
  731. package/lib/utils/responsiveOrientationConstants.d.ts.map +1 -1
  732. package/lib/utils/responsiveOrientationConstants.js +0 -7
  733. package/lib/utils/responsiveOrientationConstants.js.map +1 -1
  734. package/lib/utils/safeAreaUtils.d.ts +0 -6
  735. package/lib/utils/safeAreaUtils.d.ts.map +1 -1
  736. package/lib/utils/safeAreaUtils.js +0 -2
  737. package/lib/utils/safeAreaUtils.js.map +1 -1
  738. package/lib/utils/sharedPhysicsConfig.d.ts +0 -4
  739. package/lib/utils/sharedPhysicsConfig.d.ts.map +1 -1
  740. package/lib/utils/sharedPhysicsConfig.js +0 -2
  741. package/lib/utils/sharedPhysicsConfig.js.map +1 -1
  742. package/lib/utils/skeletonScaling.d.ts +0 -9
  743. package/lib/utils/skeletonScaling.d.ts.map +1 -1
  744. package/lib/utils/skeletonScaling.js +0 -1
  745. package/lib/utils/skeletonScaling.js.map +1 -1
  746. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"BodyPartDamageIntegration.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/BodyPartDamageIntegration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAY,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CAChD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,GACrB,UAAU,CAoGZ;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,oBAAoB,EACnE,MAAM,EAAE,CAAC,EACT,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,GACrB,CAAC,CA0BH;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gCAAgC,CAC9C,CAAC,SAAS,oBAAoB,EAC9B,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,CAAC,CAG3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,qCAiBpE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAMT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAC/C,CAAC,SAAS,oBAAoB,EAC9B,MAAM,EAAE,CAAC,EAAE,gBAAgB,GAAE,MAAY,GAAG,CAAC,CAiB9C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,oBAAoB,EACxE,MAAM,EAAE,CAAC,EACT,eAAe,EAAE,MAAM,GACtB,CAAC,CA+CH"}
1
+ {"version":3,"file":"BodyPartDamageIntegration.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/BodyPartDamageIntegration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAY,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CAChD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,GACrB,UAAU,CAoGZ;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,oBAAoB,EACnE,MAAM,EAAE,CAAC,EACT,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,GACrB,CAAC,CA0BH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gCAAgC,CAC9C,CAAC,SAAS,oBAAoB,EAC9B,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,CAAC,CAG3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,qCAiBpE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAMT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iCAAiC,CAC/C,CAAC,SAAS,oBAAoB,EAC9B,MAAM,EAAE,CAAC,EAAE,gBAAgB,GAAE,MAAY,GAAG,CAAC,CAiB9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,oBAAoB,EACxE,MAAM,EAAE,CAAC,EACT,eAAe,EAAE,MAAM,GACtB,CAAC,CA+CH"}
@@ -25,7 +25,6 @@ import { bodyPartHealthSystem } from "./BodyPartHealthSystem.js";
25
25
  * @param vitalPoint - Vital point that was struck
26
26
  * @returns Corresponding body region
27
27
  *
28
- * @public
29
28
  */
30
29
  function getBodyRegionFromVitalPoint(vitalPoint) {
31
30
  const pointId = vitalPoint.id.toLowerCase();
@@ -56,7 +55,6 @@ function getBodyRegionFromVitalPoint(vitalPoint) {
56
55
  * @param bodyRegion - Body region that was hit
57
56
  * @returns Updated player state with body part damage applied
58
57
  *
59
- * @public
60
58
  */
61
59
  function applyDamageToBodyParts(player, totalDamage, bodyRegion) {
62
60
  const bodyPartHealth = player.bodyPartHealth ?? bodyPartHealthSystem.createDefaultBodyPartHealth();
@@ -83,7 +81,6 @@ function applyDamageToBodyParts(player, totalDamage, bodyRegion) {
83
81
  * @param vitalPoint - Vital point that was struck
84
82
  * @returns Updated player state with vital point damage applied
85
83
  *
86
- * @public
87
84
  */
88
85
  function applyVitalPointDamageToBodyParts(player, totalDamage, vitalPoint) {
89
86
  return applyDamageToBodyParts(player, totalDamage, getBodyRegionFromVitalPoint(vitalPoint));
@@ -112,7 +109,6 @@ function applyVitalPointDamageToBodyParts(player, totalDamage, vitalPoint) {
112
109
  * const actualSpeed = baseSpeed * effects.movementSpeedModifier;
113
110
  * ```
114
111
  *
115
- * @public
116
112
  */
117
113
  function getBodyPartCombatEffects(player) {
118
114
  if (!player.bodyPartHealth) return {
@@ -139,7 +135,6 @@ function getBodyPartCombatEffects(player) {
139
135
  * @param player - Player state to check
140
136
  * @returns Whether player is incapacitated
141
137
  *
142
- * @public
143
138
  */
144
139
  function isPlayerIncapacitatedByBodyDamage(player) {
145
140
  if (!player.bodyPartHealth) return false;
@@ -157,7 +152,6 @@ function isPlayerIncapacitatedByBodyDamage(player) {
157
152
  * @param maxHealthPerPart - Optional custom max health per part
158
153
  * @returns Player state with body part health initialized
159
154
  *
160
- * @public
161
155
  */
162
156
  function initializeBodyPartHealthForPlayer(player, maxHealthPerPart = 100) {
163
157
  if (player.bodyPartHealth && player.bodyPartMaxHealth) return player;
@@ -182,7 +176,6 @@ function initializeBodyPartHealthForPlayer(player, maxHealthPerPart = 100) {
182
176
  * @param totalHealAmount - Total healing to distribute
183
177
  * @returns Updated player state with healing applied
184
178
  *
185
- * @public
186
179
  */
187
180
  function healBodyPartsProportionally(player, totalHealAmount) {
188
181
  if (!player.bodyPartHealth || !player.bodyPartMaxHealth) return player;
@@ -1 +1 @@
1
- {"version":3,"file":"BodyPartDamageIntegration.js","names":[],"sources":["../../../src/systems/bodypart/BodyPartDamageIntegration.ts"],"sourcesContent":["/**\n * Body Part Damage Integration for Combat System\n *\n * **Korean**: 신체부위 피해 통합\n *\n * Extends the damage calculation system to apply damage to specific body parts\n * based on vital point hits and attack locations. Integrates with the existing\n * VitalPointSystem and DamageCalculator.\n *\n * @module systems/bodypart/BodyPartDamageIntegration\n * @category Body Part System\n * @korean 신체부위피해통합\n */\n\nimport { BodyRegion } from \"@/types\";\nimport type { VitalPoint } from \"../vitalpoint/types\";\nimport { bodyPartHealthSystem } from \"./BodyPartHealthSystem\";\nimport { BodyPart, BodyPartHealth, BodyPartMaxHealth } from \"./types\";\n\n/**\n * Minimal player view needed for body part damage operations.\n */\nexport interface BodyPartDamageTarget {\n readonly health: number;\n readonly bodyPartHealth?: BodyPartHealth;\n readonly bodyPartMaxHealth?: BodyPartMaxHealth;\n}\n\n/**\n * Map vital point to its corresponding body region.\n *\n * **Korean**: 급소에서 신체 영역 매핑\n *\n * Analyzes a vital point's location and category to determine which\n * BodyRegion it belongs to, enabling proper damage distribution.\n *\n * @param vitalPoint - Vital point that was struck\n * @returns Corresponding body region\n *\n * @public\n */\nexport function getBodyRegionFromVitalPoint(\n vitalPoint: VitalPoint\n): BodyRegion {\n const pointId = vitalPoint.id.toLowerCase();\n\n // Head region vital points\n if (\n pointId.includes(\"head_\") ||\n pointId.includes(\"temple\") ||\n pointId.includes(\"jaw\") ||\n pointId.includes(\"crown\") ||\n pointId.includes(\"forehead\") ||\n pointId.includes(\"eye\") ||\n pointId.includes(\"nose\") ||\n pointId.includes(\"ear\") ||\n pointId.includes(\"skull\")\n ) {\n return BodyRegion.HEAD;\n }\n\n // Neck region vital points\n if (\n pointId.includes(\"neck\") ||\n pointId.includes(\"throat\") ||\n pointId.includes(\"carotid\") ||\n pointId.includes(\"cervical\")\n ) {\n return BodyRegion.NECK;\n }\n\n // Torso region vital points\n if (\n pointId.includes(\"torso_\") ||\n pointId.includes(\"chest\") ||\n pointId.includes(\"solar_plexus\") ||\n pointId.includes(\"ribs\") ||\n pointId.includes(\"sternum\") ||\n pointId.includes(\"heart\") ||\n pointId.includes(\"lung\") ||\n pointId.includes(\"abdomen\")\n ) {\n return BodyRegion.TORSO;\n }\n\n // Core region vital points\n if (\n pointId.includes(\"core\") ||\n pointId.includes(\"dantian\") ||\n pointId.includes(\"kidney\") ||\n pointId.includes(\"liver\") ||\n pointId.includes(\"spleen\") ||\n pointId.includes(\"bladder\")\n ) {\n return BodyRegion.CORE;\n }\n\n // Left arm vital points\n if (\n pointId.includes(\"arm_left\") ||\n pointId.includes(\"left_shoulder\") ||\n pointId.includes(\"left_elbow\") ||\n pointId.includes(\"left_wrist\") ||\n pointId.includes(\"left_hand\")\n ) {\n return BodyRegion.LEFT_ARM;\n }\n\n // Right arm vital points\n if (\n pointId.includes(\"arm_right\") ||\n pointId.includes(\"right_shoulder\") ||\n pointId.includes(\"right_elbow\") ||\n pointId.includes(\"right_wrist\") ||\n pointId.includes(\"right_hand\")\n ) {\n return BodyRegion.RIGHT_ARM;\n }\n\n // Left leg vital points\n if (\n pointId.includes(\"leg_left\") ||\n pointId.includes(\"left_knee\") ||\n pointId.includes(\"left_ankle\") ||\n pointId.includes(\"left_foot\") ||\n pointId.includes(\"left_thigh\")\n ) {\n return BodyRegion.LEFT_LEG;\n }\n\n // Right leg vital points\n if (\n pointId.includes(\"leg_right\") ||\n pointId.includes(\"right_knee\") ||\n pointId.includes(\"right_ankle\") ||\n pointId.includes(\"right_foot\") ||\n pointId.includes(\"right_thigh\")\n ) {\n return BodyRegion.RIGHT_LEG;\n }\n\n // Default to torso for unmatched points\n return BodyRegion.TORSO;\n}\n\n/**\n * Apply damage to player's body parts based on hit location.\n *\n * **Korean**: 타격 위치 기반 신체부위 피해 적용\n *\n * Takes total damage and distributes it across body parts according to\n * the hit location. Updates both aggregate health and body part health.\n *\n * For combat compatibility, the aggregate health is directly reduced by\n * the damage amount (traditional behavior), while body part health is\n * updated proportionally for visualization purposes.\n *\n * @param player - Player receiving damage\n * @param totalDamage - Total damage amount\n * @param bodyRegion - Body region that was hit\n * @returns Updated player state with body part damage applied\n *\n * @public\n */\nexport function applyDamageToBodyParts<T extends BodyPartDamageTarget>(\n player: T,\n totalDamage: number,\n bodyRegion: BodyRegion\n): T {\n // If body part health not initialized, initialize it\n const bodyPartHealth =\n player.bodyPartHealth ?? bodyPartHealthSystem.createDefaultBodyPartHealth();\n const bodyPartMaxHealth =\n player.bodyPartMaxHealth ?? bodyPartHealthSystem.createDefaultMaxHealth();\n\n // Apply distributed damage to body parts for visualization\n const updatedBodyPartHealth = bodyPartHealthSystem.applyDistributedDamage(\n bodyPartHealth,\n bodyRegion,\n totalDamage,\n bodyPartMaxHealth\n );\n\n // Calculate new aggregate health directly: traditional damage reduction\n // This ensures combat damage calculations remain consistent\n const newAggregateHealth = Math.max(0, player.health - totalDamage);\n\n // Update player state with new body part health and aggregate health\n return {\n ...player,\n bodyPartHealth: updatedBodyPartHealth,\n bodyPartMaxHealth,\n health: newAggregateHealth,\n };\n}\n\n/**\n * Apply damage from a vital point hit to appropriate body parts.\n *\n * **Korean**: 급소 타격 신체부위 피해 적용\n *\n * Specialized damage application for vital point strikes. Maps the vital\n * point to its body region and applies damage with appropriate distribution.\n *\n * @param player - Player receiving damage\n * @param totalDamage - Total damage amount\n * @param vitalPoint - Vital point that was struck\n * @returns Updated player state with vital point damage applied\n *\n * @public\n */\nexport function applyVitalPointDamageToBodyParts<\n T extends BodyPartDamageTarget\n>(player: T, totalDamage: number, vitalPoint: VitalPoint): T {\n const bodyRegion = getBodyRegionFromVitalPoint(vitalPoint);\n return applyDamageToBodyParts(player, totalDamage, bodyRegion);\n}\n\n/**\n * Get combat capability modifiers from body part health.\n *\n * **Korean**: 신체부위 전투 능력 수정치 조회\n *\n * Calculates how body part damage affects combat capabilities.\n * Returns modifiers that should be applied to:\n * - Consciousness (awareness, reaction time)\n * - Stamina regeneration\n * - Attack damage output\n * - Movement speed\n * - Balance and stability\n * - Technique accuracy\n *\n * @param player - Player state to analyze\n * @returns Combat capability effect multipliers (0.0-1.0)\n *\n * @example\n * ```typescript\n * const effects = getBodyPartCombatEffects(player);\n * const actualDamage = baseDamage * effects.attackDamageModifier;\n * const actualSpeed = baseSpeed * effects.movementSpeedModifier;\n * ```\n *\n * @public\n */\nexport function getBodyPartCombatEffects(player: BodyPartDamageTarget) {\n // If no body part health, return no effects\n if (!player.bodyPartHealth) {\n return {\n consciousnessModifier: 1.0,\n staminaRegenModifier: 1.0,\n attackDamageModifier: 1.0,\n movementSpeedModifier: 1.0,\n balanceModifier: 1.0,\n techniqueAccuracyModifier: 1.0,\n };\n }\n\n return bodyPartHealthSystem.calculateBodyPartEffects(\n player.bodyPartHealth,\n player.bodyPartMaxHealth\n );\n}\n\n/**\n * Check if player is incapacitated by body part damage.\n *\n * **Korean**: 신체부위 무력화 확인\n *\n * Determines if the player can continue fighting based on body part health.\n * Player is incapacitated if:\n * - Head is at 0 HP (unconscious)\n * - Both legs are at 0 HP (cannot stand)\n * - Aggregate health is below 10%\n *\n * @param player - Player state to check\n * @returns Whether player is incapacitated\n *\n * @public\n */\nexport function isPlayerIncapacitatedByBodyDamage(\n player: BodyPartDamageTarget\n): boolean {\n if (!player.bodyPartHealth) {\n return false; // No body part system = use aggregate health only\n }\n\n return bodyPartHealthSystem.isIncapacitated(player.bodyPartHealth);\n}\n\n/**\n * Initialize body part health for a player.\n *\n * **Korean**: 플레이어 신체부위 체력 초기화\n *\n * Sets up body part health and max health for a player if not already present.\n * Uses the provided max health or defaults to 100 per part.\n *\n * @param player - Player state to initialize\n * @param maxHealthPerPart - Optional custom max health per part\n * @returns Player state with body part health initialized\n *\n * @public\n */\nexport function initializeBodyPartHealthForPlayer<\n T extends BodyPartDamageTarget\n>(player: T, maxHealthPerPart: number = 100): T {\n // Skip if already initialized\n if (player.bodyPartHealth && player.bodyPartMaxHealth) {\n return player;\n }\n\n const bodyPartHealth =\n bodyPartHealthSystem.createDefaultBodyPartHealth(maxHealthPerPart);\n const bodyPartMaxHealth =\n bodyPartHealthSystem.createDefaultMaxHealth(maxHealthPerPart);\n\n return {\n ...player,\n bodyPartHealth,\n bodyPartMaxHealth,\n health: bodyPartHealthSystem.calculateAggregateHealth(bodyPartHealth),\n };\n}\n\n/**\n * Heal body parts proportionally based on total healing amount.\n *\n * **Korean**: 신체부위 비례 치유\n *\n * Distributes healing across all damaged body parts proportionally to\n * their damage level. Most damaged parts receive more healing.\n *\n * @param player - Player state to heal\n * @param totalHealAmount - Total healing to distribute\n * @returns Updated player state with healing applied\n *\n * @public\n */\nexport function healBodyPartsProportionally<T extends BodyPartDamageTarget>(\n player: T,\n totalHealAmount: number\n): T {\n if (!player.bodyPartHealth || !player.bodyPartMaxHealth) {\n return player; // No body part system active\n }\n\n const bodyPartHealth = player.bodyPartHealth;\n const bodyPartMaxHealth = player.bodyPartMaxHealth;\n\n // Calculate total missing health across all parts\n const missingHealth = (Object.keys(bodyPartHealth) as BodyPart[]).reduce(\n (sum, part) => {\n return sum + (bodyPartMaxHealth[part] - bodyPartHealth[part]);\n },\n 0\n );\n\n // If no damage, return unchanged\n if (missingHealth <= 0) {\n return player;\n }\n\n // Heal each part proportionally to its damage\n let updatedHealth = { ...bodyPartHealth };\n\n (Object.keys(bodyPartHealth) as BodyPart[]).forEach((part) => {\n const partMissingHealth = bodyPartMaxHealth[part] - bodyPartHealth[part];\n if (partMissingHealth > 0) {\n const proportion = partMissingHealth / missingHealth;\n const healForThisPart = totalHealAmount * proportion;\n updatedHealth = bodyPartHealthSystem.healBodyPart(\n updatedHealth,\n part,\n healForThisPart,\n bodyPartMaxHealth\n );\n }\n });\n\n // Calculate new aggregate health\n const newAggregateHealth =\n bodyPartHealthSystem.calculateAggregateHealth(updatedHealth);\n\n return {\n ...player,\n bodyPartHealth: updatedHealth,\n health: newAggregateHealth,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BodyPartDamageIntegration.js","names":[],"sources":["../../../src/systems/bodypart/BodyPartDamageIntegration.ts"],"sourcesContent":["/**\n * Body Part Damage Integration for Combat System\n *\n * **Korean**: 신체부위 피해 통합\n *\n * Extends the damage calculation system to apply damage to specific body parts\n * based on vital point hits and attack locations. Integrates with the existing\n * VitalPointSystem and DamageCalculator.\n *\n * @module systems/bodypart/BodyPartDamageIntegration\n * @category Body Part System\n * @korean 신체부위피해통합\n */\n\nimport { BodyRegion } from \"@/types\";\nimport type { VitalPoint } from \"../vitalpoint/types\";\nimport { bodyPartHealthSystem } from \"./BodyPartHealthSystem\";\nimport { BodyPart, BodyPartHealth, BodyPartMaxHealth } from \"./types\";\n\n/**\n * Minimal player view needed for body part damage operations.\n */\nexport interface BodyPartDamageTarget {\n readonly health: number;\n readonly bodyPartHealth?: BodyPartHealth;\n readonly bodyPartMaxHealth?: BodyPartMaxHealth;\n}\n\n/**\n * Map vital point to its corresponding body region.\n *\n * **Korean**: 급소에서 신체 영역 매핑\n *\n * Analyzes a vital point's location and category to determine which\n * BodyRegion it belongs to, enabling proper damage distribution.\n *\n * @param vitalPoint - Vital point that was struck\n * @returns Corresponding body region\n *\n */\nexport function getBodyRegionFromVitalPoint(\n vitalPoint: VitalPoint\n): BodyRegion {\n const pointId = vitalPoint.id.toLowerCase();\n\n // Head region vital points\n if (\n pointId.includes(\"head_\") ||\n pointId.includes(\"temple\") ||\n pointId.includes(\"jaw\") ||\n pointId.includes(\"crown\") ||\n pointId.includes(\"forehead\") ||\n pointId.includes(\"eye\") ||\n pointId.includes(\"nose\") ||\n pointId.includes(\"ear\") ||\n pointId.includes(\"skull\")\n ) {\n return BodyRegion.HEAD;\n }\n\n // Neck region vital points\n if (\n pointId.includes(\"neck\") ||\n pointId.includes(\"throat\") ||\n pointId.includes(\"carotid\") ||\n pointId.includes(\"cervical\")\n ) {\n return BodyRegion.NECK;\n }\n\n // Torso region vital points\n if (\n pointId.includes(\"torso_\") ||\n pointId.includes(\"chest\") ||\n pointId.includes(\"solar_plexus\") ||\n pointId.includes(\"ribs\") ||\n pointId.includes(\"sternum\") ||\n pointId.includes(\"heart\") ||\n pointId.includes(\"lung\") ||\n pointId.includes(\"abdomen\")\n ) {\n return BodyRegion.TORSO;\n }\n\n // Core region vital points\n if (\n pointId.includes(\"core\") ||\n pointId.includes(\"dantian\") ||\n pointId.includes(\"kidney\") ||\n pointId.includes(\"liver\") ||\n pointId.includes(\"spleen\") ||\n pointId.includes(\"bladder\")\n ) {\n return BodyRegion.CORE;\n }\n\n // Left arm vital points\n if (\n pointId.includes(\"arm_left\") ||\n pointId.includes(\"left_shoulder\") ||\n pointId.includes(\"left_elbow\") ||\n pointId.includes(\"left_wrist\") ||\n pointId.includes(\"left_hand\")\n ) {\n return BodyRegion.LEFT_ARM;\n }\n\n // Right arm vital points\n if (\n pointId.includes(\"arm_right\") ||\n pointId.includes(\"right_shoulder\") ||\n pointId.includes(\"right_elbow\") ||\n pointId.includes(\"right_wrist\") ||\n pointId.includes(\"right_hand\")\n ) {\n return BodyRegion.RIGHT_ARM;\n }\n\n // Left leg vital points\n if (\n pointId.includes(\"leg_left\") ||\n pointId.includes(\"left_knee\") ||\n pointId.includes(\"left_ankle\") ||\n pointId.includes(\"left_foot\") ||\n pointId.includes(\"left_thigh\")\n ) {\n return BodyRegion.LEFT_LEG;\n }\n\n // Right leg vital points\n if (\n pointId.includes(\"leg_right\") ||\n pointId.includes(\"right_knee\") ||\n pointId.includes(\"right_ankle\") ||\n pointId.includes(\"right_foot\") ||\n pointId.includes(\"right_thigh\")\n ) {\n return BodyRegion.RIGHT_LEG;\n }\n\n // Default to torso for unmatched points\n return BodyRegion.TORSO;\n}\n\n/**\n * Apply damage to player's body parts based on hit location.\n *\n * **Korean**: 타격 위치 기반 신체부위 피해 적용\n *\n * Takes total damage and distributes it across body parts according to\n * the hit location. Updates both aggregate health and body part health.\n *\n * For combat compatibility, the aggregate health is directly reduced by\n * the damage amount (traditional behavior), while body part health is\n * updated proportionally for visualization purposes.\n *\n * @param player - Player receiving damage\n * @param totalDamage - Total damage amount\n * @param bodyRegion - Body region that was hit\n * @returns Updated player state with body part damage applied\n *\n */\nexport function applyDamageToBodyParts<T extends BodyPartDamageTarget>(\n player: T,\n totalDamage: number,\n bodyRegion: BodyRegion\n): T {\n // If body part health not initialized, initialize it\n const bodyPartHealth =\n player.bodyPartHealth ?? bodyPartHealthSystem.createDefaultBodyPartHealth();\n const bodyPartMaxHealth =\n player.bodyPartMaxHealth ?? bodyPartHealthSystem.createDefaultMaxHealth();\n\n // Apply distributed damage to body parts for visualization\n const updatedBodyPartHealth = bodyPartHealthSystem.applyDistributedDamage(\n bodyPartHealth,\n bodyRegion,\n totalDamage,\n bodyPartMaxHealth\n );\n\n // Calculate new aggregate health directly: traditional damage reduction\n // This ensures combat damage calculations remain consistent\n const newAggregateHealth = Math.max(0, player.health - totalDamage);\n\n // Update player state with new body part health and aggregate health\n return {\n ...player,\n bodyPartHealth: updatedBodyPartHealth,\n bodyPartMaxHealth,\n health: newAggregateHealth,\n };\n}\n\n/**\n * Apply damage from a vital point hit to appropriate body parts.\n *\n * **Korean**: 급소 타격 신체부위 피해 적용\n *\n * Specialized damage application for vital point strikes. Maps the vital\n * point to its body region and applies damage with appropriate distribution.\n *\n * @param player - Player receiving damage\n * @param totalDamage - Total damage amount\n * @param vitalPoint - Vital point that was struck\n * @returns Updated player state with vital point damage applied\n *\n */\nexport function applyVitalPointDamageToBodyParts<\n T extends BodyPartDamageTarget\n>(player: T, totalDamage: number, vitalPoint: VitalPoint): T {\n const bodyRegion = getBodyRegionFromVitalPoint(vitalPoint);\n return applyDamageToBodyParts(player, totalDamage, bodyRegion);\n}\n\n/**\n * Get combat capability modifiers from body part health.\n *\n * **Korean**: 신체부위 전투 능력 수정치 조회\n *\n * Calculates how body part damage affects combat capabilities.\n * Returns modifiers that should be applied to:\n * - Consciousness (awareness, reaction time)\n * - Stamina regeneration\n * - Attack damage output\n * - Movement speed\n * - Balance and stability\n * - Technique accuracy\n *\n * @param player - Player state to analyze\n * @returns Combat capability effect multipliers (0.0-1.0)\n *\n * @example\n * ```typescript\n * const effects = getBodyPartCombatEffects(player);\n * const actualDamage = baseDamage * effects.attackDamageModifier;\n * const actualSpeed = baseSpeed * effects.movementSpeedModifier;\n * ```\n *\n */\nexport function getBodyPartCombatEffects(player: BodyPartDamageTarget) {\n // If no body part health, return no effects\n if (!player.bodyPartHealth) {\n return {\n consciousnessModifier: 1.0,\n staminaRegenModifier: 1.0,\n attackDamageModifier: 1.0,\n movementSpeedModifier: 1.0,\n balanceModifier: 1.0,\n techniqueAccuracyModifier: 1.0,\n };\n }\n\n return bodyPartHealthSystem.calculateBodyPartEffects(\n player.bodyPartHealth,\n player.bodyPartMaxHealth\n );\n}\n\n/**\n * Check if player is incapacitated by body part damage.\n *\n * **Korean**: 신체부위 무력화 확인\n *\n * Determines if the player can continue fighting based on body part health.\n * Player is incapacitated if:\n * - Head is at 0 HP (unconscious)\n * - Both legs are at 0 HP (cannot stand)\n * - Aggregate health is below 10%\n *\n * @param player - Player state to check\n * @returns Whether player is incapacitated\n *\n */\nexport function isPlayerIncapacitatedByBodyDamage(\n player: BodyPartDamageTarget\n): boolean {\n if (!player.bodyPartHealth) {\n return false; // No body part system = use aggregate health only\n }\n\n return bodyPartHealthSystem.isIncapacitated(player.bodyPartHealth);\n}\n\n/**\n * Initialize body part health for a player.\n *\n * **Korean**: 플레이어 신체부위 체력 초기화\n *\n * Sets up body part health and max health for a player if not already present.\n * Uses the provided max health or defaults to 100 per part.\n *\n * @param player - Player state to initialize\n * @param maxHealthPerPart - Optional custom max health per part\n * @returns Player state with body part health initialized\n *\n */\nexport function initializeBodyPartHealthForPlayer<\n T extends BodyPartDamageTarget\n>(player: T, maxHealthPerPart: number = 100): T {\n // Skip if already initialized\n if (player.bodyPartHealth && player.bodyPartMaxHealth) {\n return player;\n }\n\n const bodyPartHealth =\n bodyPartHealthSystem.createDefaultBodyPartHealth(maxHealthPerPart);\n const bodyPartMaxHealth =\n bodyPartHealthSystem.createDefaultMaxHealth(maxHealthPerPart);\n\n return {\n ...player,\n bodyPartHealth,\n bodyPartMaxHealth,\n health: bodyPartHealthSystem.calculateAggregateHealth(bodyPartHealth),\n };\n}\n\n/**\n * Heal body parts proportionally based on total healing amount.\n *\n * **Korean**: 신체부위 비례 치유\n *\n * Distributes healing across all damaged body parts proportionally to\n * their damage level. Most damaged parts receive more healing.\n *\n * @param player - Player state to heal\n * @param totalHealAmount - Total healing to distribute\n * @returns Updated player state with healing applied\n *\n */\nexport function healBodyPartsProportionally<T extends BodyPartDamageTarget>(\n player: T,\n totalHealAmount: number\n): T {\n if (!player.bodyPartHealth || !player.bodyPartMaxHealth) {\n return player; // No body part system active\n }\n\n const bodyPartHealth = player.bodyPartHealth;\n const bodyPartMaxHealth = player.bodyPartMaxHealth;\n\n // Calculate total missing health across all parts\n const missingHealth = (Object.keys(bodyPartHealth) as BodyPart[]).reduce(\n (sum, part) => {\n return sum + (bodyPartMaxHealth[part] - bodyPartHealth[part]);\n },\n 0\n );\n\n // If no damage, return unchanged\n if (missingHealth <= 0) {\n return player;\n }\n\n // Heal each part proportionally to its damage\n let updatedHealth = { ...bodyPartHealth };\n\n (Object.keys(bodyPartHealth) as BodyPart[]).forEach((part) => {\n const partMissingHealth = bodyPartMaxHealth[part] - bodyPartHealth[part];\n if (partMissingHealth > 0) {\n const proportion = partMissingHealth / missingHealth;\n const healForThisPart = totalHealAmount * proportion;\n updatedHealth = bodyPartHealthSystem.healBodyPart(\n updatedHealth,\n part,\n healForThisPart,\n bodyPartMaxHealth\n );\n }\n });\n\n // Calculate new aggregate health\n const newAggregateHealth =\n bodyPartHealthSystem.calculateAggregateHealth(updatedHealth);\n\n return {\n ...player,\n bodyPartHealth: updatedHealth,\n health: newAggregateHealth,\n };\n}\n"],"mappings":"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"}
@@ -47,7 +47,6 @@ import { BodyPart, BodyPartDamageDistribution, BodyPartEffects, BodyPartHealth,
47
47
  * const effects = system.calculateBodyPartEffects(damaged);
48
48
  * ```
49
49
  *
50
- * @public
51
50
  * @category Body Part System
52
51
  */
53
52
  export declare class BodyPartHealthSystem {
@@ -61,7 +60,6 @@ export declare class BodyPartHealthSystem {
61
60
  * @param maxHealth - Optional custom max health per part (default: 100)
62
61
  * @returns Body part health structure with all parts at max HP
63
62
  *
64
- * @public
65
63
  */
66
64
  createDefaultBodyPartHealth(maxHealth?: number): BodyPartHealth;
67
65
  /**
@@ -72,7 +70,6 @@ export declare class BodyPartHealthSystem {
72
70
  * @param baseMaxHealth - Base maximum health per part
73
71
  * @returns Maximum health structure
74
72
  *
75
- * @public
76
73
  */
77
74
  createDefaultMaxHealth(baseMaxHealth?: number): BodyPartMaxHealth;
78
75
  /**
@@ -89,7 +86,6 @@ export declare class BodyPartHealthSystem {
89
86
  * @param maxHealth - Optional maximum health limits
90
87
  * @returns Updated body part health
91
88
  *
92
- * @public
93
89
  */
94
90
  applyDamageToBodyPart(current: BodyPartHealth, bodyPart: BodyPart, damage: number, maxHealth?: BodyPartMaxHealth): BodyPartHealth;
95
91
  /**
@@ -103,7 +99,6 @@ export declare class BodyPartHealthSystem {
103
99
  * @param bodyRegion - Hit location
104
100
  * @returns Damage distribution configuration
105
101
  *
106
- * @public
107
102
  */
108
103
  getDamageDistribution(bodyRegion: BodyRegion): BodyPartDamageDistribution;
109
104
  /**
@@ -120,7 +115,6 @@ export declare class BodyPartHealthSystem {
120
115
  * @param maxHealth - Optional maximum health limits
121
116
  * @returns Updated body part health
122
117
  *
123
- * @public
124
118
  */
125
119
  applyDistributedDamage(current: BodyPartHealth, bodyRegion: BodyRegion, totalDamage: number, maxHealth?: BodyPartMaxHealth): BodyPartHealth;
126
120
  /**
@@ -139,7 +133,6 @@ export declare class BodyPartHealthSystem {
139
133
  * @param maxHealth - Maximum health values
140
134
  * @returns Combat capability effect multipliers
141
135
  *
142
- * @public
143
136
  */
144
137
  calculateBodyPartEffects(health: BodyPartHealth, maxHealth?: BodyPartMaxHealth): BodyPartEffects;
145
138
  /**
@@ -153,7 +146,6 @@ export declare class BodyPartHealthSystem {
153
146
  * @param health - Body part health
154
147
  * @returns Aggregate health value (0-100)
155
148
  *
156
- * @public
157
149
  */
158
150
  calculateAggregateHealth(health: BodyPartHealth): number;
159
151
  /**
@@ -169,7 +161,6 @@ export declare class BodyPartHealthSystem {
169
161
  * @param part - Body part to query
170
162
  * @returns Status information for display
171
163
  *
172
- * @public
173
164
  */
174
165
  getBodyPartStatus(health: BodyPartHealth, maxHealth: BodyPartMaxHealth, part: BodyPart): BodyPartStatus;
175
166
  /**
@@ -183,7 +174,6 @@ export declare class BodyPartHealthSystem {
183
174
  * @param maxHealth - Maximum health values
184
175
  * @returns Array of status information for all parts
185
176
  *
186
- * @public
187
177
  */
188
178
  getAllBodyPartStatuses(health: BodyPartHealth, maxHealth: BodyPartMaxHealth): BodyPartStatus[];
189
179
  /**
@@ -200,7 +190,6 @@ export declare class BodyPartHealthSystem {
200
190
  * @param maxHealth - Optional maximum health limits
201
191
  * @returns Updated body part health
202
192
  *
203
- * @public
204
193
  */
205
194
  healBodyPart(current: BodyPartHealth, bodyPart: BodyPart, healAmount: number, maxHealth?: BodyPartMaxHealth): BodyPartHealth;
206
195
  /**
@@ -216,7 +205,6 @@ export declare class BodyPartHealthSystem {
216
205
  * @param health - Current body part health
217
206
  * @returns Whether player is incapacitated
218
207
  *
219
- * @public
220
208
  */
221
209
  isIncapacitated(health: BodyPartHealth): boolean;
222
210
  }
@@ -227,7 +215,6 @@ export declare class BodyPartHealthSystem {
227
215
  *
228
216
  * Provides global access to the body part health system throughout the game.
229
217
  *
230
- * @public
231
218
  */
232
219
  export declare const bodyPartHealthSystem: BodyPartHealthSystem;
233
220
  //# sourceMappingURL=BodyPartHealthSystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BodyPartHealthSystem.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/BodyPartHealthSystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAA6B,MAAM,SAAS,CAAC;AAChE,OAAO,EACL,QAAQ,EACR,0BAA0B,EAC1B,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EAGf,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,GAAE,oBAA+C;IAInE;;;;;;;;;OASG;IACH,2BAA2B,CAAC,SAAS,GAAE,MAAY,GAAG,cAAc;IAapE;;;;;;;;;OASG;IACH,sBAAsB,CAAC,aAAa,GAAE,MAAY,GAAG,iBAAiB;IAatE;;;;;;;;;;;;;;;OAeG;IACH,qBAAqB,CACnB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,iBAAiB,GAC5B,cAAc;IAYjB;;;;;;;;;;;;OAYG;IACH,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,0BAA0B;IA8DzE;;;;;;;;;;;;;;;OAeG;IACH,sBAAsB,CACpB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,iBAAiB,GAC5B,cAAc;IAyBjB;;;;;;;;;;;;;;;;;OAiBG;IACH,wBAAwB,CACtB,MAAM,EAAE,cAAc,EACtB,SAAS,CAAC,EAAE,iBAAiB,GAC5B,eAAe;IA2DlB;;;;;;;;;;;;OAYG;IACH,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAcxD;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CACf,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,QAAQ,GACb,cAAc;IAuDjB;;;;;;;;;;;;OAYG;IACH,sBAAsB,CACpB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,GAC3B,cAAc,EAAE;IAMnB;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CACV,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,iBAAiB,GAC5B,cAAc;IAUjB;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO;CAajD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
1
+ {"version":3,"file":"BodyPartHealthSystem.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/BodyPartHealthSystem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAA6B,MAAM,SAAS,CAAC;AAChE,OAAO,EACL,QAAQ,EACR,0BAA0B,EAC1B,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EAGf,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,GAAE,oBAA+C;IAInE;;;;;;;;OAQG;IACH,2BAA2B,CAAC,SAAS,GAAE,MAAY,GAAG,cAAc;IAapE;;;;;;;;OAQG;IACH,sBAAsB,CAAC,aAAa,GAAE,MAAY,GAAG,iBAAiB;IAatE;;;;;;;;;;;;;;OAcG;IACH,qBAAqB,CACnB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,iBAAiB,GAC5B,cAAc;IAYjB;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,0BAA0B;IA8DzE;;;;;;;;;;;;;;OAcG;IACH,sBAAsB,CACpB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,iBAAiB,GAC5B,cAAc;IAyBjB;;;;;;;;;;;;;;;;OAgBG;IACH,wBAAwB,CACtB,MAAM,EAAE,cAAc,EACtB,SAAS,CAAC,EAAE,iBAAiB,GAC5B,eAAe;IA2DlB;;;;;;;;;;;OAWG;IACH,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAcxD;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CACf,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,QAAQ,GACb,cAAc;IAuDjB;;;;;;;;;;;OAWG;IACH,sBAAsB,CACpB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,iBAAiB,GAC3B,cAAc,EAAE;IAMnB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CACV,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,iBAAiB,GAC5B,cAAc;IAUjB;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO;CAajD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
@@ -49,7 +49,6 @@ import { BODY_PART_EFFECT_CONSTANTS, BodyPart, DEFAULT_BODY_PART_CONFIG } from "
49
49
  * const effects = system.calculateBodyPartEffects(damaged);
50
50
  * ```
51
51
  *
52
- * @public
53
52
  * @category Body Part System
54
53
  */
55
54
  var BodyPartHealthSystem = class {
@@ -65,7 +64,6 @@ var BodyPartHealthSystem = class {
65
64
  * @param maxHealth - Optional custom max health per part (default: 100)
66
65
  * @returns Body part health structure with all parts at max HP
67
66
  *
68
- * @public
69
67
  */
70
68
  createDefaultBodyPartHealth(maxHealth = 100) {
71
69
  return {
@@ -87,7 +85,6 @@ var BodyPartHealthSystem = class {
87
85
  * @param baseMaxHealth - Base maximum health per part
88
86
  * @returns Maximum health structure
89
87
  *
90
- * @public
91
88
  */
92
89
  createDefaultMaxHealth(baseMaxHealth = 100) {
93
90
  return {
@@ -115,7 +112,6 @@ var BodyPartHealthSystem = class {
115
112
  * @param maxHealth - Optional maximum health limits
116
113
  * @returns Updated body part health
117
114
  *
118
- * @public
119
115
  */
120
116
  applyDamageToBodyPart(current, bodyPart, damage, maxHealth) {
121
117
  const newHealth = Math.max(0, current[bodyPart] - damage);
@@ -136,7 +132,6 @@ var BodyPartHealthSystem = class {
136
132
  * @param bodyRegion - Hit location
137
133
  * @returns Damage distribution configuration
138
134
  *
139
- * @public
140
135
  */
141
136
  getDamageDistribution(bodyRegion) {
142
137
  switch (bodyRegion) {
@@ -246,7 +241,6 @@ var BodyPartHealthSystem = class {
246
241
  * @param maxHealth - Optional maximum health limits
247
242
  * @returns Updated body part health
248
243
  *
249
- * @public
250
244
  */
251
245
  applyDistributedDamage(current, bodyRegion, totalDamage, maxHealth) {
252
246
  const distribution = this.getDamageDistribution(bodyRegion);
@@ -271,7 +265,6 @@ var BodyPartHealthSystem = class {
271
265
  * @param maxHealth - Maximum health values
272
266
  * @returns Combat capability effect multipliers
273
267
  *
274
- * @public
275
268
  */
276
269
  calculateBodyPartEffects(health, maxHealth) {
277
270
  const max = maxHealth ?? this.createDefaultMaxHealth();
@@ -309,7 +302,6 @@ var BodyPartHealthSystem = class {
309
302
  * @param health - Body part health
310
303
  * @returns Aggregate health value (0-100)
311
304
  *
312
- * @public
313
305
  */
314
306
  calculateAggregateHealth(health) {
315
307
  return (health.head + health.neck + health.torsoUpper + health.torsoLower + health.armLeft + health.armRight + health.legLeft + health.legRight) / 8;
@@ -327,7 +319,6 @@ var BodyPartHealthSystem = class {
327
319
  * @param part - Body part to query
328
320
  * @returns Status information for display
329
321
  *
330
- * @public
331
322
  */
332
323
  getBodyPartStatus(health, maxHealth, part) {
333
324
  const current = health[part];
@@ -408,7 +399,6 @@ var BodyPartHealthSystem = class {
408
399
  * @param maxHealth - Maximum health values
409
400
  * @returns Array of status information for all parts
410
401
  *
411
- * @public
412
402
  */
413
403
  getAllBodyPartStatuses(health, maxHealth) {
414
404
  return Object.values(BodyPart).map((part) => this.getBodyPartStatus(health, maxHealth, part));
@@ -427,7 +417,6 @@ var BodyPartHealthSystem = class {
427
417
  * @param maxHealth - Optional maximum health limits
428
418
  * @returns Updated body part health
429
419
  *
430
- * @public
431
420
  */
432
421
  healBodyPart(current, bodyPart, healAmount, maxHealth) {
433
422
  const max = maxHealth ?? this.createDefaultMaxHealth();
@@ -450,7 +439,6 @@ var BodyPartHealthSystem = class {
450
439
  * @param health - Current body part health
451
440
  * @returns Whether player is incapacitated
452
441
  *
453
- * @public
454
442
  */
455
443
  isIncapacitated(health) {
456
444
  if (health.head <= 0) return true;
@@ -466,7 +454,6 @@ var BodyPartHealthSystem = class {
466
454
  *
467
455
  * Provides global access to the body part health system throughout the game.
468
456
  *
469
- * @public
470
457
  */
471
458
  var bodyPartHealthSystem = new BodyPartHealthSystem();
472
459
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"BodyPartHealthSystem.js","names":[],"sources":["../../../src/systems/bodypart/BodyPartHealthSystem.ts"],"sourcesContent":["/**\n * Body Part Health System\n * \n * **Korean**: 신체부위 체력 시스템\n * \n * Manages body part-specific health tracking, damage distribution, and combat\n * capability effects. Implements realistic localized damage mechanics based on\n * Korean martial arts vital point targeting principles.\n * \n * ## System Features\n * \n * - Independent health tracking for 8 body parts\n * - Automatic combat capability penalties based on damage\n * - Damage distribution from hit locations to body parts\n * - UI-friendly status information generation\n * - Performance-optimized calculations\n * \n * @module systems/bodypart/BodyPartHealthSystem\n * @category Body Part System\n * @korean 신체부위체력시스템\n */\n\nimport { BodyRegion, KOREAN_COLORS, KoreanText } from \"@/types\";\nimport {\n BodyPart,\n BodyPartDamageDistribution,\n BodyPartEffects,\n BodyPartHealth,\n BodyPartHealthConfig,\n BodyPartMaxHealth,\n BodyPartStatus,\n BODY_PART_EFFECT_CONSTANTS,\n DEFAULT_BODY_PART_CONFIG,\n} from \"./types\";\n\n/**\n * Body Part Health System class.\n * \n * **Korean**: 신체부위 체력 시스템 클래스\n * \n * Provides methods for managing body part health, calculating effects,\n * and distributing damage based on hit locations.\n * \n * @example\n * ```typescript\n * const system = new BodyPartHealthSystem();\n * \n * // Create initial body part health\n * const health = system.createDefaultBodyPartHealth();\n * \n * // Apply damage to head\n * const damaged = system.applyDamageToBodyPart(\n * health,\n * BodyPart.HEAD,\n * 25\n * );\n * \n * // Calculate combat effects\n * const effects = system.calculateBodyPartEffects(damaged);\n * ```\n * \n * @public\n * @category Body Part System\n */\nexport class BodyPartHealthSystem {\n private config: BodyPartHealthConfig;\n\n constructor(config: BodyPartHealthConfig = DEFAULT_BODY_PART_CONFIG) {\n this.config = config;\n }\n\n /**\n * Create default body part health with all parts at maximum.\n * \n * **Korean**: 기본 신체부위 체력 생성\n * \n * @param maxHealth - Optional custom max health per part (default: 100)\n * @returns Body part health structure with all parts at max HP\n * \n * @public\n */\n createDefaultBodyPartHealth(maxHealth: number = 100): BodyPartHealth {\n return {\n head: maxHealth,\n neck: maxHealth,\n torsoUpper: maxHealth,\n torsoLower: maxHealth,\n armLeft: maxHealth,\n armRight: maxHealth,\n legLeft: maxHealth,\n legRight: maxHealth,\n };\n }\n\n /**\n * Create default maximum health values for body parts.\n * \n * **Korean**: 기본 최대 체력 생성\n * \n * @param baseMaxHealth - Base maximum health per part\n * @returns Maximum health structure\n * \n * @public\n */\n createDefaultMaxHealth(baseMaxHealth: number = 100): BodyPartMaxHealth {\n return {\n head: baseMaxHealth,\n neck: baseMaxHealth,\n torsoUpper: baseMaxHealth,\n torsoLower: baseMaxHealth,\n armLeft: baseMaxHealth,\n armRight: baseMaxHealth,\n legLeft: baseMaxHealth,\n legRight: baseMaxHealth,\n };\n }\n\n /**\n * Apply damage to a specific body part.\n * \n * **Korean**: 신체부위 피해 적용\n * \n * Reduces health of the specified body part by the damage amount.\n * Health is clamped to 0-maxHealth range.\n * \n * @param current - Current body part health\n * @param bodyPart - Body part to damage\n * @param damage - Damage amount to apply\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n * @public\n */\n applyDamageToBodyPart(\n current: BodyPartHealth,\n bodyPart: BodyPart,\n damage: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const newHealth = Math.max(0, current[bodyPart] - damage);\n const clampedHealth = maxHealth\n ? Math.min(newHealth, maxHealth[bodyPart])\n : newHealth;\n\n return {\n ...current,\n [bodyPart]: clampedHealth,\n };\n }\n\n /**\n * Distribute damage across body parts based on hit location.\n * \n * **Korean**: 피해 분배\n * \n * Maps a BodyRegion hit location to primary and secondary body parts,\n * distributing damage according to impact mechanics.\n * \n * @param bodyRegion - Hit location\n * @returns Damage distribution configuration\n * \n * @public\n */\n getDamageDistribution(bodyRegion: BodyRegion): BodyPartDamageDistribution {\n switch (bodyRegion) {\n case BodyRegion.HEAD:\n return {\n primary: { part: BodyPart.HEAD, percentage: 0.9 },\n secondary: [{ part: BodyPart.NECK, percentage: 0.1 }],\n };\n\n case BodyRegion.NECK:\n return {\n primary: { part: BodyPart.NECK, percentage: 0.8 },\n secondary: [\n { part: BodyPart.HEAD, percentage: 0.1 },\n { part: BodyPart.TORSO_UPPER, percentage: 0.1 },\n ],\n };\n\n case BodyRegion.TORSO:\n return {\n primary: { part: BodyPart.TORSO_UPPER, percentage: 0.6 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.4 }],\n };\n\n case BodyRegion.CORE:\n return {\n primary: { part: BodyPart.TORSO_LOWER, percentage: 0.7 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.3 }],\n };\n\n case BodyRegion.LEFT_ARM:\n return {\n primary: { part: BodyPart.ARM_LEFT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.1 }],\n };\n\n case BodyRegion.RIGHT_ARM:\n return {\n primary: { part: BodyPart.ARM_RIGHT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.1 }],\n };\n\n case BodyRegion.LEFT_LEG:\n return {\n primary: { part: BodyPart.LEG_LEFT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.1 }],\n };\n\n case BodyRegion.RIGHT_LEG:\n return {\n primary: { part: BodyPart.LEG_RIGHT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.1 }],\n };\n\n default:\n // Default to torso upper for unknown regions\n return {\n primary: { part: BodyPart.TORSO_UPPER, percentage: 1.0 },\n secondary: [],\n };\n }\n }\n\n /**\n * Apply distributed damage to body parts from a hit.\n * \n * **Korean**: 분산 피해 적용\n * \n * Takes total damage and distributes it across primary and secondary\n * body parts based on the hit location.\n * \n * @param current - Current body part health\n * @param bodyRegion - Hit location\n * @param totalDamage - Total damage to distribute\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n * @public\n */\n applyDistributedDamage(\n current: BodyPartHealth,\n bodyRegion: BodyRegion,\n totalDamage: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const distribution = this.getDamageDistribution(bodyRegion);\n let updated = { ...current };\n\n // Apply primary damage\n updated = this.applyDamageToBodyPart(\n updated,\n distribution.primary.part,\n totalDamage * distribution.primary.percentage,\n maxHealth\n );\n\n // Apply secondary damage\n for (const secondary of distribution.secondary) {\n updated = this.applyDamageToBodyPart(\n updated,\n secondary.part,\n totalDamage * secondary.percentage,\n maxHealth\n );\n }\n\n return updated;\n }\n\n /**\n * Calculate combat capability effects from body part damage.\n * \n * **Korean**: 전투 능력 효과 계산\n * \n * Analyzes body part health and returns multipliers for various combat\n * capabilities. Implements acceptance criteria:\n * - Head <50%: Consciousness penalties\n * - Torso <50%: Stamina regen -50%\n * - Arms <50%: Attack damage -30%\n * - Legs <50%: Movement speed -40%\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns Combat capability effect multipliers\n * \n * @public\n */\n calculateBodyPartEffects(\n health: BodyPartHealth,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartEffects {\n const max = maxHealth ?? this.createDefaultMaxHealth();\n\n // Calculate head/neck effects on consciousness\n const headPercentage = health.head / max.head;\n const neckPercentage = health.neck / max.neck;\n const minHeadNeck = Math.min(headPercentage, neckPercentage);\n \n let consciousnessModifier = 1.0;\n if (minHeadNeck < BODY_PART_EFFECT_CONSTANTS.HEAD.CRITICAL_THRESHOLD) {\n consciousnessModifier = BODY_PART_EFFECT_CONSTANTS.HEAD.CONSCIOUSNESS_PENALTY_AT_50;\n }\n\n // Calculate torso effects on stamina regeneration\n const torsoUpperPercentage = health.torsoUpper / max.torsoUpper;\n const torsoLowerPercentage = health.torsoLower / max.torsoLower;\n const avgTorso = (torsoUpperPercentage + torsoLowerPercentage) / 2;\n \n let staminaRegenModifier = 1.0;\n if (avgTorso < BODY_PART_EFFECT_CONSTANTS.TORSO.CRITICAL_THRESHOLD) {\n staminaRegenModifier = BODY_PART_EFFECT_CONSTANTS.TORSO.STAMINA_REGEN_PENALTY_AT_50;\n }\n\n // Calculate arm effects on attack damage\n const armLeftPercentage = health.armLeft / max.armLeft;\n const armRightPercentage = health.armRight / max.armRight;\n const avgArms = (armLeftPercentage + armRightPercentage) / 2;\n \n let attackDamageModifier = 1.0;\n if (avgArms < BODY_PART_EFFECT_CONSTANTS.ARMS.CRITICAL_THRESHOLD) {\n attackDamageModifier = BODY_PART_EFFECT_CONSTANTS.ARMS.ATTACK_DAMAGE_PENALTY_AT_50;\n }\n\n // Calculate leg effects on movement speed\n const legLeftPercentage = health.legLeft / max.legLeft;\n const legRightPercentage = health.legRight / max.legRight;\n const avgLegs = (legLeftPercentage + legRightPercentage) / 2;\n \n let movementSpeedModifier = 1.0;\n if (avgLegs < BODY_PART_EFFECT_CONSTANTS.LEGS.CRITICAL_THRESHOLD) {\n movementSpeedModifier = BODY_PART_EFFECT_CONSTANTS.LEGS.MOVEMENT_SPEED_PENALTY_AT_50;\n }\n\n // Balance affected by torso and legs\n const balanceModifier = Math.min(avgTorso, avgLegs);\n\n // Technique accuracy affected by head and arms\n const techniqueAccuracyModifier = Math.min(headPercentage, avgArms);\n\n return {\n consciousnessModifier,\n staminaRegenModifier,\n attackDamageModifier,\n movementSpeedModifier,\n balanceModifier,\n techniqueAccuracyModifier,\n };\n }\n\n /**\n * Calculate aggregate health from body parts.\n * \n * **Korean**: 종합 체력 계산\n * \n * Computes overall health as average of all body part health values.\n * This maintains backwards compatibility with single health bar systems.\n * \n * @param health - Body part health\n * @returns Aggregate health value (0-100)\n * \n * @public\n */\n calculateAggregateHealth(health: BodyPartHealth): number {\n const sum =\n health.head +\n health.neck +\n health.torsoUpper +\n health.torsoLower +\n health.armLeft +\n health.armRight +\n health.legLeft +\n health.legRight;\n\n return sum / 8;\n }\n\n /**\n * Get body part status for UI display.\n * \n * **Korean**: 신체부위 상태 조회\n * \n * Provides UI-friendly status information including color coding,\n * status text, and critical/disabled flags.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param part - Body part to query\n * @returns Status information for display\n * \n * @public\n */\n getBodyPartStatus(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n part: BodyPart\n ): BodyPartStatus {\n const current = health[part];\n const max = maxHealth[part];\n const percentage = current / max;\n\n // Determine status and color\n let status: KoreanText;\n let color: number;\n let critical: boolean;\n let disabled: boolean;\n\n if (percentage === 0) {\n status = { korean: \"무력화\", english: \"Disabled\" };\n color = KOREAN_COLORS.NEGATIVE_RED;\n critical = true;\n disabled = true;\n } else if (percentage < this.config.criticalThreshold) {\n status = { korean: \"치명적\", english: \"Critical\" };\n color = KOREAN_COLORS.NEGATIVE_RED;\n critical = true;\n disabled = false;\n } else if (percentage < this.config.severePenaltyThreshold) {\n status = { korean: \"심각\", english: \"Severe\" };\n color = KOREAN_COLORS.WARNING_ORANGE;\n critical = false;\n disabled = false;\n } else if (percentage < this.config.majorPenaltyThreshold) {\n status = { korean: \"중상\", english: \"Major\" };\n color = KOREAN_COLORS.WARNING_YELLOW;\n critical = false;\n disabled = false;\n } else if (percentage < this.config.minorPenaltyThreshold) {\n status = { korean: \"경상\", english: \"Minor\" };\n color = KOREAN_COLORS.HEALTH_FULL;\n critical = false;\n disabled = false;\n } else {\n status = { korean: \"정상\", english: \"Normal\" };\n color = KOREAN_COLORS.HEALTH_FULL;\n critical = false;\n disabled = false;\n }\n\n return {\n part,\n health: current,\n maxHealth: max,\n percentage,\n status,\n color,\n critical,\n disabled,\n };\n }\n\n /**\n * Get all body part statuses for UI.\n * \n * **Korean**: 모든 신체부위 상태 조회\n * \n * Returns status information for all body parts in a single call.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns Array of status information for all parts\n * \n * @public\n */\n getAllBodyPartStatuses(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): BodyPartStatus[] {\n return Object.values(BodyPart).map((part) =>\n this.getBodyPartStatus(health, maxHealth, part)\n );\n }\n\n /**\n * Heal a specific body part.\n * \n * **Korean**: 신체부위 치유\n * \n * Increases health of the specified body part by the heal amount.\n * Health is clamped to 0-maxHealth range.\n * \n * @param current - Current body part health\n * @param bodyPart - Body part to heal\n * @param healAmount - Amount of health to restore\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n * @public\n */\n healBodyPart(\n current: BodyPartHealth,\n bodyPart: BodyPart,\n healAmount: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const max = maxHealth ?? this.createDefaultMaxHealth();\n const newHealth = Math.min(max[bodyPart], current[bodyPart] + healAmount);\n\n return {\n ...current,\n [bodyPart]: newHealth,\n };\n }\n\n /**\n * Check if player is incapacitated based on body part health.\n * \n * **Korean**: 무력화 상태 확인\n * \n * Player is incapacitated if:\n * - Head is at 0 HP (unconscious)\n * - Both legs are at 0 HP (cannot move)\n * - Aggregate health below 10%\n * \n * @param health - Current body part health\n * @returns Whether player is incapacitated\n * \n * @public\n */\n isIncapacitated(health: BodyPartHealth): boolean {\n // Unconscious from head damage\n if (health.head <= 0) return true;\n\n // Cannot move from leg damage\n if (health.legLeft <= 0 && health.legRight <= 0) return true;\n\n // Aggregate health critical\n const aggregate = this.calculateAggregateHealth(health);\n if (aggregate < 10) return true;\n\n return false;\n }\n}\n\n/**\n * Singleton instance of Body Part Health System.\n * \n * **Korean**: 신체부위 체력 시스템 싱글톤\n * \n * Provides global access to the body part health system throughout the game.\n * \n * @public\n */\nexport const bodyPartHealthSystem = new BodyPartHealthSystem();\n"],"mappings":"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"}
1
+ {"version":3,"file":"BodyPartHealthSystem.js","names":[],"sources":["../../../src/systems/bodypart/BodyPartHealthSystem.ts"],"sourcesContent":["/**\n * Body Part Health System\n * \n * **Korean**: 신체부위 체력 시스템\n * \n * Manages body part-specific health tracking, damage distribution, and combat\n * capability effects. Implements realistic localized damage mechanics based on\n * Korean martial arts vital point targeting principles.\n * \n * ## System Features\n * \n * - Independent health tracking for 8 body parts\n * - Automatic combat capability penalties based on damage\n * - Damage distribution from hit locations to body parts\n * - UI-friendly status information generation\n * - Performance-optimized calculations\n * \n * @module systems/bodypart/BodyPartHealthSystem\n * @category Body Part System\n * @korean 신체부위체력시스템\n */\n\nimport { BodyRegion, KOREAN_COLORS, KoreanText } from \"@/types\";\nimport {\n BodyPart,\n BodyPartDamageDistribution,\n BodyPartEffects,\n BodyPartHealth,\n BodyPartHealthConfig,\n BodyPartMaxHealth,\n BodyPartStatus,\n BODY_PART_EFFECT_CONSTANTS,\n DEFAULT_BODY_PART_CONFIG,\n} from \"./types\";\n\n/**\n * Body Part Health System class.\n * \n * **Korean**: 신체부위 체력 시스템 클래스\n * \n * Provides methods for managing body part health, calculating effects,\n * and distributing damage based on hit locations.\n * \n * @example\n * ```typescript\n * const system = new BodyPartHealthSystem();\n * \n * // Create initial body part health\n * const health = system.createDefaultBodyPartHealth();\n * \n * // Apply damage to head\n * const damaged = system.applyDamageToBodyPart(\n * health,\n * BodyPart.HEAD,\n * 25\n * );\n * \n * // Calculate combat effects\n * const effects = system.calculateBodyPartEffects(damaged);\n * ```\n * \n * @category Body Part System\n */\nexport class BodyPartHealthSystem {\n private config: BodyPartHealthConfig;\n\n constructor(config: BodyPartHealthConfig = DEFAULT_BODY_PART_CONFIG) {\n this.config = config;\n }\n\n /**\n * Create default body part health with all parts at maximum.\n * \n * **Korean**: 기본 신체부위 체력 생성\n * \n * @param maxHealth - Optional custom max health per part (default: 100)\n * @returns Body part health structure with all parts at max HP\n * \n */\n createDefaultBodyPartHealth(maxHealth: number = 100): BodyPartHealth {\n return {\n head: maxHealth,\n neck: maxHealth,\n torsoUpper: maxHealth,\n torsoLower: maxHealth,\n armLeft: maxHealth,\n armRight: maxHealth,\n legLeft: maxHealth,\n legRight: maxHealth,\n };\n }\n\n /**\n * Create default maximum health values for body parts.\n * \n * **Korean**: 기본 최대 체력 생성\n * \n * @param baseMaxHealth - Base maximum health per part\n * @returns Maximum health structure\n * \n */\n createDefaultMaxHealth(baseMaxHealth: number = 100): BodyPartMaxHealth {\n return {\n head: baseMaxHealth,\n neck: baseMaxHealth,\n torsoUpper: baseMaxHealth,\n torsoLower: baseMaxHealth,\n armLeft: baseMaxHealth,\n armRight: baseMaxHealth,\n legLeft: baseMaxHealth,\n legRight: baseMaxHealth,\n };\n }\n\n /**\n * Apply damage to a specific body part.\n * \n * **Korean**: 신체부위 피해 적용\n * \n * Reduces health of the specified body part by the damage amount.\n * Health is clamped to 0-maxHealth range.\n * \n * @param current - Current body part health\n * @param bodyPart - Body part to damage\n * @param damage - Damage amount to apply\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n */\n applyDamageToBodyPart(\n current: BodyPartHealth,\n bodyPart: BodyPart,\n damage: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const newHealth = Math.max(0, current[bodyPart] - damage);\n const clampedHealth = maxHealth\n ? Math.min(newHealth, maxHealth[bodyPart])\n : newHealth;\n\n return {\n ...current,\n [bodyPart]: clampedHealth,\n };\n }\n\n /**\n * Distribute damage across body parts based on hit location.\n * \n * **Korean**: 피해 분배\n * \n * Maps a BodyRegion hit location to primary and secondary body parts,\n * distributing damage according to impact mechanics.\n * \n * @param bodyRegion - Hit location\n * @returns Damage distribution configuration\n * \n */\n getDamageDistribution(bodyRegion: BodyRegion): BodyPartDamageDistribution {\n switch (bodyRegion) {\n case BodyRegion.HEAD:\n return {\n primary: { part: BodyPart.HEAD, percentage: 0.9 },\n secondary: [{ part: BodyPart.NECK, percentage: 0.1 }],\n };\n\n case BodyRegion.NECK:\n return {\n primary: { part: BodyPart.NECK, percentage: 0.8 },\n secondary: [\n { part: BodyPart.HEAD, percentage: 0.1 },\n { part: BodyPart.TORSO_UPPER, percentage: 0.1 },\n ],\n };\n\n case BodyRegion.TORSO:\n return {\n primary: { part: BodyPart.TORSO_UPPER, percentage: 0.6 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.4 }],\n };\n\n case BodyRegion.CORE:\n return {\n primary: { part: BodyPart.TORSO_LOWER, percentage: 0.7 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.3 }],\n };\n\n case BodyRegion.LEFT_ARM:\n return {\n primary: { part: BodyPart.ARM_LEFT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.1 }],\n };\n\n case BodyRegion.RIGHT_ARM:\n return {\n primary: { part: BodyPart.ARM_RIGHT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_UPPER, percentage: 0.1 }],\n };\n\n case BodyRegion.LEFT_LEG:\n return {\n primary: { part: BodyPart.LEG_LEFT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.1 }],\n };\n\n case BodyRegion.RIGHT_LEG:\n return {\n primary: { part: BodyPart.LEG_RIGHT, percentage: 0.9 },\n secondary: [{ part: BodyPart.TORSO_LOWER, percentage: 0.1 }],\n };\n\n default:\n // Default to torso upper for unknown regions\n return {\n primary: { part: BodyPart.TORSO_UPPER, percentage: 1.0 },\n secondary: [],\n };\n }\n }\n\n /**\n * Apply distributed damage to body parts from a hit.\n * \n * **Korean**: 분산 피해 적용\n * \n * Takes total damage and distributes it across primary and secondary\n * body parts based on the hit location.\n * \n * @param current - Current body part health\n * @param bodyRegion - Hit location\n * @param totalDamage - Total damage to distribute\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n */\n applyDistributedDamage(\n current: BodyPartHealth,\n bodyRegion: BodyRegion,\n totalDamage: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const distribution = this.getDamageDistribution(bodyRegion);\n let updated = { ...current };\n\n // Apply primary damage\n updated = this.applyDamageToBodyPart(\n updated,\n distribution.primary.part,\n totalDamage * distribution.primary.percentage,\n maxHealth\n );\n\n // Apply secondary damage\n for (const secondary of distribution.secondary) {\n updated = this.applyDamageToBodyPart(\n updated,\n secondary.part,\n totalDamage * secondary.percentage,\n maxHealth\n );\n }\n\n return updated;\n }\n\n /**\n * Calculate combat capability effects from body part damage.\n * \n * **Korean**: 전투 능력 효과 계산\n * \n * Analyzes body part health and returns multipliers for various combat\n * capabilities. Implements acceptance criteria:\n * - Head <50%: Consciousness penalties\n * - Torso <50%: Stamina regen -50%\n * - Arms <50%: Attack damage -30%\n * - Legs <50%: Movement speed -40%\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns Combat capability effect multipliers\n * \n */\n calculateBodyPartEffects(\n health: BodyPartHealth,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartEffects {\n const max = maxHealth ?? this.createDefaultMaxHealth();\n\n // Calculate head/neck effects on consciousness\n const headPercentage = health.head / max.head;\n const neckPercentage = health.neck / max.neck;\n const minHeadNeck = Math.min(headPercentage, neckPercentage);\n \n let consciousnessModifier = 1.0;\n if (minHeadNeck < BODY_PART_EFFECT_CONSTANTS.HEAD.CRITICAL_THRESHOLD) {\n consciousnessModifier = BODY_PART_EFFECT_CONSTANTS.HEAD.CONSCIOUSNESS_PENALTY_AT_50;\n }\n\n // Calculate torso effects on stamina regeneration\n const torsoUpperPercentage = health.torsoUpper / max.torsoUpper;\n const torsoLowerPercentage = health.torsoLower / max.torsoLower;\n const avgTorso = (torsoUpperPercentage + torsoLowerPercentage) / 2;\n \n let staminaRegenModifier = 1.0;\n if (avgTorso < BODY_PART_EFFECT_CONSTANTS.TORSO.CRITICAL_THRESHOLD) {\n staminaRegenModifier = BODY_PART_EFFECT_CONSTANTS.TORSO.STAMINA_REGEN_PENALTY_AT_50;\n }\n\n // Calculate arm effects on attack damage\n const armLeftPercentage = health.armLeft / max.armLeft;\n const armRightPercentage = health.armRight / max.armRight;\n const avgArms = (armLeftPercentage + armRightPercentage) / 2;\n \n let attackDamageModifier = 1.0;\n if (avgArms < BODY_PART_EFFECT_CONSTANTS.ARMS.CRITICAL_THRESHOLD) {\n attackDamageModifier = BODY_PART_EFFECT_CONSTANTS.ARMS.ATTACK_DAMAGE_PENALTY_AT_50;\n }\n\n // Calculate leg effects on movement speed\n const legLeftPercentage = health.legLeft / max.legLeft;\n const legRightPercentage = health.legRight / max.legRight;\n const avgLegs = (legLeftPercentage + legRightPercentage) / 2;\n \n let movementSpeedModifier = 1.0;\n if (avgLegs < BODY_PART_EFFECT_CONSTANTS.LEGS.CRITICAL_THRESHOLD) {\n movementSpeedModifier = BODY_PART_EFFECT_CONSTANTS.LEGS.MOVEMENT_SPEED_PENALTY_AT_50;\n }\n\n // Balance affected by torso and legs\n const balanceModifier = Math.min(avgTorso, avgLegs);\n\n // Technique accuracy affected by head and arms\n const techniqueAccuracyModifier = Math.min(headPercentage, avgArms);\n\n return {\n consciousnessModifier,\n staminaRegenModifier,\n attackDamageModifier,\n movementSpeedModifier,\n balanceModifier,\n techniqueAccuracyModifier,\n };\n }\n\n /**\n * Calculate aggregate health from body parts.\n * \n * **Korean**: 종합 체력 계산\n * \n * Computes overall health as average of all body part health values.\n * This maintains backwards compatibility with single health bar systems.\n * \n * @param health - Body part health\n * @returns Aggregate health value (0-100)\n * \n */\n calculateAggregateHealth(health: BodyPartHealth): number {\n const sum =\n health.head +\n health.neck +\n health.torsoUpper +\n health.torsoLower +\n health.armLeft +\n health.armRight +\n health.legLeft +\n health.legRight;\n\n return sum / 8;\n }\n\n /**\n * Get body part status for UI display.\n * \n * **Korean**: 신체부위 상태 조회\n * \n * Provides UI-friendly status information including color coding,\n * status text, and critical/disabled flags.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @param part - Body part to query\n * @returns Status information for display\n * \n */\n getBodyPartStatus(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth,\n part: BodyPart\n ): BodyPartStatus {\n const current = health[part];\n const max = maxHealth[part];\n const percentage = current / max;\n\n // Determine status and color\n let status: KoreanText;\n let color: number;\n let critical: boolean;\n let disabled: boolean;\n\n if (percentage === 0) {\n status = { korean: \"무력화\", english: \"Disabled\" };\n color = KOREAN_COLORS.NEGATIVE_RED;\n critical = true;\n disabled = true;\n } else if (percentage < this.config.criticalThreshold) {\n status = { korean: \"치명적\", english: \"Critical\" };\n color = KOREAN_COLORS.NEGATIVE_RED;\n critical = true;\n disabled = false;\n } else if (percentage < this.config.severePenaltyThreshold) {\n status = { korean: \"심각\", english: \"Severe\" };\n color = KOREAN_COLORS.WARNING_ORANGE;\n critical = false;\n disabled = false;\n } else if (percentage < this.config.majorPenaltyThreshold) {\n status = { korean: \"중상\", english: \"Major\" };\n color = KOREAN_COLORS.WARNING_YELLOW;\n critical = false;\n disabled = false;\n } else if (percentage < this.config.minorPenaltyThreshold) {\n status = { korean: \"경상\", english: \"Minor\" };\n color = KOREAN_COLORS.HEALTH_FULL;\n critical = false;\n disabled = false;\n } else {\n status = { korean: \"정상\", english: \"Normal\" };\n color = KOREAN_COLORS.HEALTH_FULL;\n critical = false;\n disabled = false;\n }\n\n return {\n part,\n health: current,\n maxHealth: max,\n percentage,\n status,\n color,\n critical,\n disabled,\n };\n }\n\n /**\n * Get all body part statuses for UI.\n * \n * **Korean**: 모든 신체부위 상태 조회\n * \n * Returns status information for all body parts in a single call.\n * \n * @param health - Current body part health\n * @param maxHealth - Maximum health values\n * @returns Array of status information for all parts\n * \n */\n getAllBodyPartStatuses(\n health: BodyPartHealth,\n maxHealth: BodyPartMaxHealth\n ): BodyPartStatus[] {\n return Object.values(BodyPart).map((part) =>\n this.getBodyPartStatus(health, maxHealth, part)\n );\n }\n\n /**\n * Heal a specific body part.\n * \n * **Korean**: 신체부위 치유\n * \n * Increases health of the specified body part by the heal amount.\n * Health is clamped to 0-maxHealth range.\n * \n * @param current - Current body part health\n * @param bodyPart - Body part to heal\n * @param healAmount - Amount of health to restore\n * @param maxHealth - Optional maximum health limits\n * @returns Updated body part health\n * \n */\n healBodyPart(\n current: BodyPartHealth,\n bodyPart: BodyPart,\n healAmount: number,\n maxHealth?: BodyPartMaxHealth\n ): BodyPartHealth {\n const max = maxHealth ?? this.createDefaultMaxHealth();\n const newHealth = Math.min(max[bodyPart], current[bodyPart] + healAmount);\n\n return {\n ...current,\n [bodyPart]: newHealth,\n };\n }\n\n /**\n * Check if player is incapacitated based on body part health.\n * \n * **Korean**: 무력화 상태 확인\n * \n * Player is incapacitated if:\n * - Head is at 0 HP (unconscious)\n * - Both legs are at 0 HP (cannot move)\n * - Aggregate health below 10%\n * \n * @param health - Current body part health\n * @returns Whether player is incapacitated\n * \n */\n isIncapacitated(health: BodyPartHealth): boolean {\n // Unconscious from head damage\n if (health.head <= 0) return true;\n\n // Cannot move from leg damage\n if (health.legLeft <= 0 && health.legRight <= 0) return true;\n\n // Aggregate health critical\n const aggregate = this.calculateAggregateHealth(health);\n if (aggregate < 10) return true;\n\n return false;\n }\n}\n\n/**\n * Singleton instance of Body Part Health System.\n * \n * **Korean**: 신체부위 체력 시스템 싱글톤\n * \n * Provides global access to the body part health system throughout the game.\n * \n */\nexport const bodyPartHealthSystem = new BodyPartHealthSystem();\n"],"mappings":"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"}
@@ -45,7 +45,6 @@ export declare const CHARACTER_DIMENSIONS: {
45
45
  * @param bodyPart - Body part to get position for
46
46
  * @returns 3D position vector
47
47
  *
48
- * @public
49
48
  */
50
49
  export declare function getBodyPartPosition(bodyPart: BodyPart): THREE.Vector3;
51
50
  /**
@@ -56,7 +55,6 @@ export declare function getBodyPartPosition(bodyPart: BodyPart): THREE.Vector3;
56
55
  * @param bodyRegion - Body region to get position for
57
56
  * @returns 3D position vector
58
57
  *
59
- * @public
60
58
  */
61
59
  export declare function getBodyRegionPosition(bodyRegion: BodyRegion): THREE.Vector3;
62
60
  /**
@@ -67,7 +65,6 @@ export declare function getBodyRegionPosition(bodyRegion: BodyRegion): THREE.Vec
67
65
  * @param bodyRegion - Body region to map
68
66
  * @returns Corresponding body part
69
67
  *
70
- * @public
71
68
  */
72
69
  export declare function mapBodyRegionToBodyPart(bodyRegion: BodyRegion): BodyPart;
73
70
  /**
@@ -82,7 +79,6 @@ export declare function mapBodyRegionToBodyPart(bodyRegion: BodyRegion): BodyPar
82
79
  * @param maxOffset - Maximum offset in any direction (default: 0.1)
83
80
  * @returns New position with random offset
84
81
  *
85
- * @public
86
82
  */
87
83
  export declare function addRandomOffset(basePosition: THREE.Vector3, maxOffset?: number): THREE.Vector3;
88
84
  /**
@@ -97,7 +93,6 @@ export declare function addRandomOffset(basePosition: THREE.Vector3, maxOffset?:
97
93
  * @param maxOffset - Maximum offset for randomization
98
94
  * @returns Position with random offset
99
95
  *
100
- * @public
101
96
  */
102
97
  export declare function getInjuryPositionWithOffset(bodyRegion: BodyRegion, maxOffset?: number): THREE.Vector3;
103
98
  /**
@@ -110,7 +105,6 @@ export declare function getInjuryPositionWithOffset(bodyRegion: BodyRegion, maxO
110
105
  * @param tolerance - Distance tolerance (default: 0.3)
111
106
  * @returns Whether position is within body part bounds
112
107
  *
113
- * @public
114
108
  */
115
109
  export declare function isPositionInBodyPart(position: THREE.Vector3, bodyPart: BodyPart, tolerance?: number): boolean;
116
110
  //# sourceMappingURL=BodyPartPositionMapping.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BodyPartPositionMapping.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/BodyPartPositionMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;IAC/B,qCAAqC;;IAErC,yBAAyB;;IAEzB,mBAAmB;;IAEnB,iBAAiB;;IAEjB,iBAAiB;;IAEjB,kBAAkB;;CAEV,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC,OAAO,CAsCrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC,OAAO,CAwC3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,CA8BxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,KAAK,CAAC,OAAO,EAC3B,SAAS,GAAE,MAAY,GACtB,KAAK,CAAC,OAAO,CAQf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,SAAS,GAAE,MAAY,GACtB,KAAK,CAAC,OAAO,CAGf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,KAAK,CAAC,OAAO,EACvB,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,MAAY,GACtB,OAAO,CAIT"}
1
+ {"version":3,"file":"BodyPartPositionMapping.d.ts","sourceRoot":"","sources":["../../../src/systems/bodypart/BodyPartPositionMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;IAC/B,qCAAqC;;IAErC,yBAAyB;;IAEzB,mBAAmB;;IAEnB,iBAAiB;;IAEjB,iBAAiB;;IAEjB,kBAAkB;;CAEV,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC,OAAO,CAsCrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC,OAAO,CAwC3E;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,CA8BxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,KAAK,CAAC,OAAO,EAC3B,SAAS,GAAE,MAAY,GACtB,KAAK,CAAC,OAAO,CAQf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,SAAS,GAAE,MAAY,GACtB,KAAK,CAAC,OAAO,CAGf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,KAAK,CAAC,OAAO,EACvB,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,MAAY,GACtB,OAAO,CAIT"}
@@ -46,7 +46,6 @@ var CHARACTER_DIMENSIONS = {
46
46
  * @param bodyPart - Body part to get position for
47
47
  * @returns 3D position vector
48
48
  *
49
- * @public
50
49
  */
51
50
  function getBodyPartPosition(bodyPart) {
52
51
  const headY = CHARACTER_DIMENSIONS.HEIGHT - CHARACTER_DIMENSIONS.HEAD_HEIGHT / 2;
@@ -75,7 +74,6 @@ function getBodyPartPosition(bodyPart) {
75
74
  * @param bodyRegion - Body region to get position for
76
75
  * @returns 3D position vector
77
76
  *
78
- * @public
79
77
  */
80
78
  function getBodyRegionPosition(bodyRegion) {
81
79
  const { HEIGHT, LEG_LENGTH, SHOULDER_WIDTH } = CHARACTER_DIMENSIONS;
@@ -105,7 +103,6 @@ function getBodyRegionPosition(bodyRegion) {
105
103
  * @param bodyRegion - Body region to map
106
104
  * @returns Corresponding body part
107
105
  *
108
- * @public
109
106
  */
110
107
  function mapBodyRegionToBodyPart(bodyRegion) {
111
108
  switch (bodyRegion) {
@@ -132,7 +129,6 @@ function mapBodyRegionToBodyPart(bodyRegion) {
132
129
  * @param maxOffset - Maximum offset in any direction (default: 0.1)
133
130
  * @returns New position with random offset
134
131
  *
135
- * @public
136
132
  */
137
133
  function addRandomOffset(basePosition, maxOffset = .1) {
138
134
  const offset = new THREE.Vector3((Math.random() - .5) * maxOffset * 2, (Math.random() - .5) * maxOffset * 2, (Math.random() - .5) * maxOffset * 2);
@@ -150,7 +146,6 @@ function addRandomOffset(basePosition, maxOffset = .1) {
150
146
  * @param maxOffset - Maximum offset for randomization
151
147
  * @returns Position with random offset
152
148
  *
153
- * @public
154
149
  */
155
150
  function getInjuryPositionWithOffset(bodyRegion, maxOffset = .1) {
156
151
  return addRandomOffset(getBodyRegionPosition(bodyRegion), maxOffset);
@@ -165,7 +160,6 @@ function getInjuryPositionWithOffset(bodyRegion, maxOffset = .1) {
165
160
  * @param tolerance - Distance tolerance (default: 0.3)
166
161
  * @returns Whether position is within body part bounds
167
162
  *
168
- * @public
169
163
  */
170
164
  function isPositionInBodyPart(position, bodyPart, tolerance = .3) {
171
165
  const partPosition = getBodyPartPosition(bodyPart);
@@ -1 +1 @@
1
- {"version":3,"file":"BodyPartPositionMapping.js","names":[],"sources":["../../../src/systems/bodypart/BodyPartPositionMapping.ts"],"sourcesContent":["/**\n * Body Part Position Mapping Utilities\n * \n * **Korean**: 신체 부위 위치 매핑 유틸리티\n * \n * Maps body regions and body parts to 3D positions on character models\n * for accurate trauma visualization placement.\n * \n * @module systems/bodypart/BodyPartPositionMapping\n * @category Body Part System\n * @korean 신체부위위치매핑\n */\n\nimport * as THREE from \"three\";\nimport { BodyPart } from \"./types\";\nimport { BodyRegion } from \"../../types/common\";\n\n/**\n * Standard character model dimensions.\n * \n * Based on average human proportions scaled for game character.\n * Character center is at [0, 0, 0], standing upright.\n */\nexport const CHARACTER_DIMENSIONS = {\n /** Total height from feet to head */\n HEIGHT: 2.0,\n /** Width at shoulders */\n SHOULDER_WIDTH: 0.6,\n /** Torso height */\n TORSO_HEIGHT: 0.8,\n /** Leg length */\n LEG_LENGTH: 1.0,\n /** Arm length */\n ARM_LENGTH: 0.7,\n /** Head height */\n HEAD_HEIGHT: 0.3,\n} as const;\n\n/**\n * Get 3D position for a body part on character model.\n * \n * **Korean**: 신체 부위 3D 위치 가져오기\n * \n * Returns center position of the body part relative to character origin.\n * Character is centered at [0, 0, 0] standing upright.\n * Positions are calculated from CHARACTER_DIMENSIONS for consistency.\n * \n * @param bodyPart - Body part to get position for\n * @returns 3D position vector\n * \n * @public\n */\nexport function getBodyPartPosition(bodyPart: BodyPart): THREE.Vector3 {\n // Calculate positions from CHARACTER_DIMENSIONS\n const headY = CHARACTER_DIMENSIONS.HEIGHT - CHARACTER_DIMENSIONS.HEAD_HEIGHT / 2;\n const neckY = CHARACTER_DIMENSIONS.HEIGHT - CHARACTER_DIMENSIONS.HEAD_HEIGHT;\n const torsoTop = neckY - CHARACTER_DIMENSIONS.TORSO_HEIGHT / 3;\n const torsoBottom = neckY - (2 * CHARACTER_DIMENSIONS.TORSO_HEIGHT) / 3;\n const armY = neckY - CHARACTER_DIMENSIONS.TORSO_HEIGHT / 3;\n const legY = CHARACTER_DIMENSIONS.LEG_LENGTH / 2;\n \n switch (bodyPart) {\n case BodyPart.HEAD:\n return new THREE.Vector3(0, headY, 0);\n\n case BodyPart.NECK:\n return new THREE.Vector3(0, neckY, 0);\n\n case BodyPart.TORSO_UPPER:\n return new THREE.Vector3(0, torsoTop, 0);\n\n case BodyPart.TORSO_LOWER:\n return new THREE.Vector3(0, torsoBottom, 0);\n\n case BodyPart.ARM_LEFT:\n return new THREE.Vector3(-CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyPart.ARM_RIGHT:\n return new THREE.Vector3(CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyPart.LEG_LEFT:\n return new THREE.Vector3(-CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 4, legY, 0);\n\n case BodyPart.LEG_RIGHT:\n return new THREE.Vector3(CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 4, legY, 0);\n\n default:\n // Default to torso center\n return new THREE.Vector3(0, CHARACTER_DIMENSIONS.HEIGHT / 2, 0);\n }\n}\n\n/**\n * Get 3D position for a body region on character model.\n * \n * **Korean**: 신체 영역 3D 위치 가져오기\n * \n * @param bodyRegion - Body region to get position for\n * @returns 3D position vector\n * \n * @public\n */\nexport function getBodyRegionPosition(bodyRegion: BodyRegion): THREE.Vector3 {\n // Calculate positions based on CHARACTER_DIMENSIONS for single source of truth\n const { HEIGHT, LEG_LENGTH, SHOULDER_WIDTH } = CHARACTER_DIMENSIONS;\n \n const headY = HEIGHT * 0.9; // 1.8 for HEIGHT 2.0\n const neckY = HEIGHT * 0.8; // 1.6 for HEIGHT 2.0\n const torsoY = HEIGHT * 0.6; // 1.2 for HEIGHT 2.0\n const coreY = HEIGHT * 0.45; // 0.9 for HEIGHT 2.0\n const armY = torsoY; // Arms at torso level\n const legY = LEG_LENGTH * 0.4; // 0.4 for LEG_LENGTH 1.0\n\n switch (bodyRegion) {\n case BodyRegion.HEAD:\n return new THREE.Vector3(0, headY, 0);\n\n case BodyRegion.NECK:\n return new THREE.Vector3(0, neckY, 0);\n\n case BodyRegion.TORSO:\n return new THREE.Vector3(0, torsoY, 0);\n\n case BodyRegion.CORE:\n return new THREE.Vector3(0, coreY, 0);\n\n case BodyRegion.LEFT_ARM:\n return new THREE.Vector3(-SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyRegion.RIGHT_ARM:\n return new THREE.Vector3(SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyRegion.LEFT_LEG:\n return new THREE.Vector3(-SHOULDER_WIDTH * 0.25, legY, 0);\n\n case BodyRegion.RIGHT_LEG:\n return new THREE.Vector3(SHOULDER_WIDTH * 0.25, legY, 0);\n\n default:\n // Default to torso center\n return new THREE.Vector3(0, torsoY, 0);\n }\n}\n\n/**\n * Map BodyRegion to corresponding BodyPart.\n * \n * **Korean**: 신체 영역을 신체 부위로 매핑\n * \n * @param bodyRegion - Body region to map\n * @returns Corresponding body part\n * \n * @public\n */\nexport function mapBodyRegionToBodyPart(bodyRegion: BodyRegion): BodyPart {\n switch (bodyRegion) {\n case BodyRegion.HEAD:\n return BodyPart.HEAD;\n\n case BodyRegion.NECK:\n return BodyPart.NECK;\n\n case BodyRegion.TORSO:\n return BodyPart.TORSO_UPPER;\n\n case BodyRegion.CORE:\n return BodyPart.TORSO_LOWER;\n\n case BodyRegion.LEFT_ARM:\n return BodyPart.ARM_LEFT;\n\n case BodyRegion.RIGHT_ARM:\n return BodyPart.ARM_RIGHT;\n\n case BodyRegion.LEFT_LEG:\n return BodyPart.LEG_LEFT;\n\n case BodyRegion.RIGHT_LEG:\n return BodyPart.LEG_RIGHT;\n\n default:\n // Default to upper torso\n return BodyPart.TORSO_UPPER;\n }\n}\n\n/**\n * Add random offset to position for varied injury placement.\n * \n * **Korean**: 부상 위치에 무작위 오프셋 추가\n * \n * Adds slight randomness to injury positions to avoid exact overlap\n * and create more realistic trauma distribution.\n * \n * @param basePosition - Base position to offset from\n * @param maxOffset - Maximum offset in any direction (default: 0.1)\n * @returns New position with random offset\n * \n * @public\n */\nexport function addRandomOffset(\n basePosition: THREE.Vector3,\n maxOffset: number = 0.1\n): THREE.Vector3 {\n const offset = new THREE.Vector3(\n (Math.random() - 0.5) * maxOffset * 2,\n (Math.random() - 0.5) * maxOffset * 2,\n (Math.random() - 0.5) * maxOffset * 2\n );\n\n return basePosition.clone().add(offset);\n}\n\n/**\n * Get injury position with slight randomization.\n * \n * **Korean**: 무작위 오프셋이 포함된 부상 위치 가져오기\n * \n * Convenience function that combines region-to-position mapping\n * with random offset for natural injury placement.\n * \n * @param bodyRegion - Body region that was hit\n * @param maxOffset - Maximum offset for randomization\n * @returns Position with random offset\n * \n * @public\n */\nexport function getInjuryPositionWithOffset(\n bodyRegion: BodyRegion,\n maxOffset: number = 0.1\n): THREE.Vector3 {\n const basePosition = getBodyRegionPosition(bodyRegion);\n return addRandomOffset(basePosition, maxOffset);\n}\n\n/**\n * Check if position is within body part bounds.\n * \n * **Korean**: 위치가 신체 부위 경계 내에 있는지 확인\n * \n * @param position - Position to check\n * @param bodyPart - Body part to check against\n * @param tolerance - Distance tolerance (default: 0.3)\n * @returns Whether position is within body part bounds\n * \n * @public\n */\nexport function isPositionInBodyPart(\n position: THREE.Vector3,\n bodyPart: BodyPart,\n tolerance: number = 0.3\n): boolean {\n const partPosition = getBodyPartPosition(bodyPart);\n const distance = position.distanceTo(partPosition);\n return distance <= tolerance;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BodyPartPositionMapping.js","names":[],"sources":["../../../src/systems/bodypart/BodyPartPositionMapping.ts"],"sourcesContent":["/**\n * Body Part Position Mapping Utilities\n * \n * **Korean**: 신체 부위 위치 매핑 유틸리티\n * \n * Maps body regions and body parts to 3D positions on character models\n * for accurate trauma visualization placement.\n * \n * @module systems/bodypart/BodyPartPositionMapping\n * @category Body Part System\n * @korean 신체부위위치매핑\n */\n\nimport * as THREE from \"three\";\nimport { BodyPart } from \"./types\";\nimport { BodyRegion } from \"../../types/common\";\n\n/**\n * Standard character model dimensions.\n * \n * Based on average human proportions scaled for game character.\n * Character center is at [0, 0, 0], standing upright.\n */\nexport const CHARACTER_DIMENSIONS = {\n /** Total height from feet to head */\n HEIGHT: 2.0,\n /** Width at shoulders */\n SHOULDER_WIDTH: 0.6,\n /** Torso height */\n TORSO_HEIGHT: 0.8,\n /** Leg length */\n LEG_LENGTH: 1.0,\n /** Arm length */\n ARM_LENGTH: 0.7,\n /** Head height */\n HEAD_HEIGHT: 0.3,\n} as const;\n\n/**\n * Get 3D position for a body part on character model.\n * \n * **Korean**: 신체 부위 3D 위치 가져오기\n * \n * Returns center position of the body part relative to character origin.\n * Character is centered at [0, 0, 0] standing upright.\n * Positions are calculated from CHARACTER_DIMENSIONS for consistency.\n * \n * @param bodyPart - Body part to get position for\n * @returns 3D position vector\n * \n */\nexport function getBodyPartPosition(bodyPart: BodyPart): THREE.Vector3 {\n // Calculate positions from CHARACTER_DIMENSIONS\n const headY = CHARACTER_DIMENSIONS.HEIGHT - CHARACTER_DIMENSIONS.HEAD_HEIGHT / 2;\n const neckY = CHARACTER_DIMENSIONS.HEIGHT - CHARACTER_DIMENSIONS.HEAD_HEIGHT;\n const torsoTop = neckY - CHARACTER_DIMENSIONS.TORSO_HEIGHT / 3;\n const torsoBottom = neckY - (2 * CHARACTER_DIMENSIONS.TORSO_HEIGHT) / 3;\n const armY = neckY - CHARACTER_DIMENSIONS.TORSO_HEIGHT / 3;\n const legY = CHARACTER_DIMENSIONS.LEG_LENGTH / 2;\n \n switch (bodyPart) {\n case BodyPart.HEAD:\n return new THREE.Vector3(0, headY, 0);\n\n case BodyPart.NECK:\n return new THREE.Vector3(0, neckY, 0);\n\n case BodyPart.TORSO_UPPER:\n return new THREE.Vector3(0, torsoTop, 0);\n\n case BodyPart.TORSO_LOWER:\n return new THREE.Vector3(0, torsoBottom, 0);\n\n case BodyPart.ARM_LEFT:\n return new THREE.Vector3(-CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyPart.ARM_RIGHT:\n return new THREE.Vector3(CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyPart.LEG_LEFT:\n return new THREE.Vector3(-CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 4, legY, 0);\n\n case BodyPart.LEG_RIGHT:\n return new THREE.Vector3(CHARACTER_DIMENSIONS.SHOULDER_WIDTH / 4, legY, 0);\n\n default:\n // Default to torso center\n return new THREE.Vector3(0, CHARACTER_DIMENSIONS.HEIGHT / 2, 0);\n }\n}\n\n/**\n * Get 3D position for a body region on character model.\n * \n * **Korean**: 신체 영역 3D 위치 가져오기\n * \n * @param bodyRegion - Body region to get position for\n * @returns 3D position vector\n * \n */\nexport function getBodyRegionPosition(bodyRegion: BodyRegion): THREE.Vector3 {\n // Calculate positions based on CHARACTER_DIMENSIONS for single source of truth\n const { HEIGHT, LEG_LENGTH, SHOULDER_WIDTH } = CHARACTER_DIMENSIONS;\n \n const headY = HEIGHT * 0.9; // 1.8 for HEIGHT 2.0\n const neckY = HEIGHT * 0.8; // 1.6 for HEIGHT 2.0\n const torsoY = HEIGHT * 0.6; // 1.2 for HEIGHT 2.0\n const coreY = HEIGHT * 0.45; // 0.9 for HEIGHT 2.0\n const armY = torsoY; // Arms at torso level\n const legY = LEG_LENGTH * 0.4; // 0.4 for LEG_LENGTH 1.0\n\n switch (bodyRegion) {\n case BodyRegion.HEAD:\n return new THREE.Vector3(0, headY, 0);\n\n case BodyRegion.NECK:\n return new THREE.Vector3(0, neckY, 0);\n\n case BodyRegion.TORSO:\n return new THREE.Vector3(0, torsoY, 0);\n\n case BodyRegion.CORE:\n return new THREE.Vector3(0, coreY, 0);\n\n case BodyRegion.LEFT_ARM:\n return new THREE.Vector3(-SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyRegion.RIGHT_ARM:\n return new THREE.Vector3(SHOULDER_WIDTH / 2, armY, 0);\n\n case BodyRegion.LEFT_LEG:\n return new THREE.Vector3(-SHOULDER_WIDTH * 0.25, legY, 0);\n\n case BodyRegion.RIGHT_LEG:\n return new THREE.Vector3(SHOULDER_WIDTH * 0.25, legY, 0);\n\n default:\n // Default to torso center\n return new THREE.Vector3(0, torsoY, 0);\n }\n}\n\n/**\n * Map BodyRegion to corresponding BodyPart.\n * \n * **Korean**: 신체 영역을 신체 부위로 매핑\n * \n * @param bodyRegion - Body region to map\n * @returns Corresponding body part\n * \n */\nexport function mapBodyRegionToBodyPart(bodyRegion: BodyRegion): BodyPart {\n switch (bodyRegion) {\n case BodyRegion.HEAD:\n return BodyPart.HEAD;\n\n case BodyRegion.NECK:\n return BodyPart.NECK;\n\n case BodyRegion.TORSO:\n return BodyPart.TORSO_UPPER;\n\n case BodyRegion.CORE:\n return BodyPart.TORSO_LOWER;\n\n case BodyRegion.LEFT_ARM:\n return BodyPart.ARM_LEFT;\n\n case BodyRegion.RIGHT_ARM:\n return BodyPart.ARM_RIGHT;\n\n case BodyRegion.LEFT_LEG:\n return BodyPart.LEG_LEFT;\n\n case BodyRegion.RIGHT_LEG:\n return BodyPart.LEG_RIGHT;\n\n default:\n // Default to upper torso\n return BodyPart.TORSO_UPPER;\n }\n}\n\n/**\n * Add random offset to position for varied injury placement.\n * \n * **Korean**: 부상 위치에 무작위 오프셋 추가\n * \n * Adds slight randomness to injury positions to avoid exact overlap\n * and create more realistic trauma distribution.\n * \n * @param basePosition - Base position to offset from\n * @param maxOffset - Maximum offset in any direction (default: 0.1)\n * @returns New position with random offset\n * \n */\nexport function addRandomOffset(\n basePosition: THREE.Vector3,\n maxOffset: number = 0.1\n): THREE.Vector3 {\n const offset = new THREE.Vector3(\n (Math.random() - 0.5) * maxOffset * 2,\n (Math.random() - 0.5) * maxOffset * 2,\n (Math.random() - 0.5) * maxOffset * 2\n );\n\n return basePosition.clone().add(offset);\n}\n\n/**\n * Get injury position with slight randomization.\n * \n * **Korean**: 무작위 오프셋이 포함된 부상 위치 가져오기\n * \n * Convenience function that combines region-to-position mapping\n * with random offset for natural injury placement.\n * \n * @param bodyRegion - Body region that was hit\n * @param maxOffset - Maximum offset for randomization\n * @returns Position with random offset\n * \n */\nexport function getInjuryPositionWithOffset(\n bodyRegion: BodyRegion,\n maxOffset: number = 0.1\n): THREE.Vector3 {\n const basePosition = getBodyRegionPosition(bodyRegion);\n return addRandomOffset(basePosition, maxOffset);\n}\n\n/**\n * Check if position is within body part bounds.\n * \n * **Korean**: 위치가 신체 부위 경계 내에 있는지 확인\n * \n * @param position - Position to check\n * @param bodyPart - Body part to check against\n * @param tolerance - Distance tolerance (default: 0.3)\n * @returns Whether position is within body part bounds\n * \n */\nexport function isPositionInBodyPart(\n position: THREE.Vector3,\n bodyPart: BodyPart,\n tolerance: number = 0.3\n): boolean {\n const partPosition = getBodyPartPosition(bodyPart);\n const distance = position.distanceTo(partPosition);\n return distance <= tolerance;\n}\n"],"mappings":"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"}