# HIU DUNGEON 새 Codex 세션 인수인계 문서

작성일: 2026-07-03  
대상 빌드: `v0.7.48`  
프로젝트 경로: `/root/Documents/Codex/2026-05-23/His dungeon`

이 문서는 새 Codex 세션에서 현재 프로젝트를 바로 이어가기 위한 문서다. 긴 기획은 `Hiu_Dungeon_기획서.md`, 작업 규칙은 `CODEX_WORKFLOW.md`를 함께 읽는다.

## 1. 프로젝트 요약

`HIU DUNGEON`은 HTML/CSS/JavaScript로 만든 정적 브라우저 게임이다. 현재는 분리 파일 빌드이며 `index.html`, `css/`, `js/`, `assets/` 폴더가 모두 있어야 실행된다.

장르: 모바일 가로 화면 탑뷰 핵앤슬래시 로그라이크 액션.  
핵심 조작: 이동 조이스틱, 공격/스킬 수동 조준, 자동 조준, 패링, 지속 방어, 에너지 폭파, 기본 대시, 파워대시, 무기 2슬롯, 인벤토리 가방 정리.  
목표 플랫폼: Android Chrome 모바일 가로 화면. PC는 개발 테스트용.

현재 화면:

- 시작 안내/전체화면 요청/로고 페이드
- 메인 화면
- 던전 모드
- 테스트룸
- 튜토리얼
- 도감
- 인벤토리
- 결과/게임오버 화면

## 2. 가장 중요한 개발 원칙

1. 파일을 다시 하나로 합치지 않는다.
2. 요청과 관련된 파일만 읽고 수정한다.
3. 기존 정상 기능을 임의로 재작성하지 않는다.
4. JS 수정 시 수정한 JS 파일만 우선 `node --check`.
5. 게임 실행물이 바뀌면 버전 증가와 `Hiu_Dungeon_(수정버전).zip` 재생성.
6. 문서만 수정하면 게임 버전과 zip은 기본적으로 생략.
7. 새 몬스터 공격은 전부 패링/무적/피해태그 시스템을 통과해야 한다.
8. 새 아이템/룬/시너지는 데이터 정의, 자동 태그, 실제 보너스 적용 경로, 도감/상점/보상 노출을 한 묶음으로 본다.
9. 새 보너스 키를 만들면 `createEmptyRuneBonuses()` 기본값과 실제 소비 함수까지 반드시 연결한다.

## 3. 현재 파일 역할

- `index.html`: DOM, CSS/JS 로드 순서.
- `css/00-base-menu-codex.css`: 시작 안내, 로고, 메인, 도감, 기본 폰트.
- `css/01-game-hud.css`: HUD, 코인 이미지, 미니맵, 무기 슬롯.
- `css/02-mobile-controls.css`: 모바일 조작 버튼.
- `css/03-testroom-inventory.css`: 테스트룸/인벤토리/가방/무기룬.
- `css/04-dialogue-responsive.css`: 대화창/선택지/이벤트 UI.
- `js/00-config-state-dom.js`: `CONFIG`, `state`, `input`, `dom`, 폰트/코인 이미지 헬퍼.
- `js/data/01-bag-items.js`: 가방 아이템과 음식/저주 아이템.
- `js/data/02-weapon-runes-codex.js`: 무기 룬과 도감 정적 데이터.
- `js/data/03-treasure-chests.js`: 상자 등급과 보상량.
- `js/data/04-event-rooms.js`: 이벤트 카탈로그.
- `js/data/05-synergies.js`: 가방 아이템/룬 시너지 규칙.
- `js/systems/04-dungeon-generation.js`: 절차적 스테이지 생성.
- `js/systems/10-tutorial.js`: 튜토리얼.
- `js/entities/05-player.js`: 플레이어, 피격, 패링, 대시, 상태이상.
- `js/entities/06-weapons-projectiles.js`: 무기/투사체/적 투사체.
- `js/entities/07-enemies.js`: 적 AI와 보스.
- `js/entities/08-summons-pickups-shop.js`: 소환수, 드랍, NPC, 상점 표시물.
- `js/entities/09-effects-objects.js`: 이펙트, 오브, 박스, 상자, 비밀문.
- `js/core/11-game.js`: `Game` 본체. 매우 크므로 필요한 함수 주변만 읽는다.
- `js/12-app-flow.js`: 화면 전환/시작/종료.
- `js/13-ui-hud-inventory-codex.js`: HUD, 도감, 가방, 무기 룬 UI.
- `js/14-loop-events-input.js`: 입력 연결과 루프.
- `js/15-physics-status-utils.js`: 충돌/상태이상/피해태그 유틸.
- `js/16-boot.js`: 부트.

## 4. 구현 상태

정상 구현된 핵심 기능:

- 메인/던전/테스트룸/튜토리얼/게임오버 전환.
- 시작 안내와 전체화면 요청, 로고 페이드.
- 모바일 멀티터치 조작.
- 자동 조준과 수동 조준.
- 공격 홀드 연사/단발.
- 무기 슬롯 2개.
- 패링, 퍼펙트 패링, 지속 방어, 에너지 폭파.
- 패링 성공 순간 0.5초 무적, 동시 다중 공격 방어.
- 기본 대시, 파워대시, 대시 중 피해 면역.
- HP/MP/SP, 코인 HUD. 코인 이미지는 `assets/icons/gold.png`, 마나 아이콘은 `assets/icons/mana.png`.
- 폰트 `DungGeunMo.woff2`.
- 피해 태그와 무기 정보창/도감 피해 설명.
- 플레이어 스탯 `넉백 힘`. 플레이어 스탯 보너스와 무기 룬의 `knockbackRate`가 합산되어 플레이어 공격 넉백을 키운다.
- 피해 계열 스탯은 기본 100% 표기, 치명타피해는 기본 150% 표기. `getDamageTagMultiplier()`가 피해 태그에 맞춰 물리/마법/투사체/검기/파동/범위/스킬/속성 피해 보너스를 적용한다.
- 플레이어 스탯 `교섭`, `행운`, `탐욕`. 교섭/행운은 확장용이며, 탐욕은 골드 오브 수집량 보너스로 즉시 적용된다.
- 화염/빙결/중독/출혈/혼돈/바람 상태이상.
- 가방 자유 배치, 아이템/룬 레벨 다이아 표시.
- 무기 룬 슬롯 5개.
- 상점, 상점 NPC `석류`, 자동 상품 풀.
- 이벤트: 축소공방, 두비두밤, 무 밭. 무 밭은 우측 끝에 별도 이름의 초고가 `무(얼티밋 프리미엄 유기농 국산 100% 무 함유)` 상품 1개를 추가 배치한다.
- 절차적 던전, 전투방 웨이브, 상점방, 보상방, 이벤트방, 비밀방, 보스방.
- 보상상자 등급: 일반/희귀/영웅/신화/전설.
- 잠긴 상자와 열쇠.
- 테스트룸 메인방/전투방/이벤트 테스트 방.
- 도감: 아이템/룬/무기/적/시너지/피해 종류. 인벤토리 안에도 동일한 도감 탭이 있다.

대표 무기:

- 기본 총, 산탄총, 훈련용 검, 특대검, 불지팡이, 얼음 지팡이, 혼돈 지팡이, 독안개 지팡이, 가시장미 지팡이, 바람 지팡이, 무 지팡이, 거울 지팡이, H-99, 파워 건틀릿, 기폭 메그넘, 미니건, 로켓런쳐.

대표 적:

- 고정 더미, 고HP 더미, 훈련 인형, 투사체 더미, 전투 더미, 원거리 적, 힐러, 독침, 부채탄, 번개마법, 화염, 얼음, 원형톱날, 레이저, 폭탄, 대시공격, 방패기사, 혼돈의 기사, 고대 골렘, 화염 골램.

## 5. 신규 기능 추가 시 연결 규칙

### 5.1 새 몬스터

필수 연결:

- `js/entities/07-enemies.js`: 적 클래스 추가.
- `Game.createEnemyByKind` in `js/core/11-game.js`: kind 연결.
- `spawnTestDummy` 또는 테스트룸 동적 spawn 목록: 테스트룸에서 소환 가능하게 추가.
- 던전 출현이 필요하면 `enemyPool`에 추가.
- `CODEX_STATIC_ENTRIES.enemies`: 도감 추가.

공격 규칙:

- 투사체는 `EnemyProjectile` 또는 `game.enemyProjectiles`에 들어가는 클래스 사용.
- 근접/레이저/장판/폭발은 `player.takeDamage`, `game.damageHostileTargetsInCircle`, `game.damageHostileTargetsOnSegment` 사용.
- `damageTagOptions(...)`로 피해 태그를 반드시 붙인다.
- 막혀야 하는 공격은 `parryBlocksHit: true`를 붙인다.
- 절대 플레이어 HP를 직접 빼지 않는다.
- 보스/엘리트는 패링으로 기절하지 않고 강인도만 감소해야 한다.
- 새 공격에는 경고선/경고원/선딜을 넣는다.

### 5.2 새 무기

필수 연결:

- `createWeaponById`에 정의 추가.
- `CODEX_STATIC_ENTRIES.weapons`에 추가. 이 항목이 보상/상점 자동 풀에도 중요하다.
- 공격/스킬/대시공격 피해 태그 추가.
- 무기 정보창 기본공격/스킬/대시공격/소환수 탭 표시 확인.
- 룬 적용 확인: 투사체 수, 크기, 튕김, 유도, 치명타, 폭발, 소환수 룬.
- 필요하면 `REWARD_WEAPON_IDS`와 상점 자동 풀에 자연스럽게 들어가는지 확인.

### 5.3 새 아이템

필수 연결:

- `RUNE_DEFS` 또는 가방 아이템 데이터에 추가.
- 외형/히트박스/레벨 표시 확인.
- 가방 배치, 선택 설명, 사용하기 버튼 필요 여부 확인.
- 패시브면 `calculateRuneBonuses`/스탯 반영 경로 확인.
- 소모성이면 사용 효과와 파티클 확인.
- 상점/상자 자동 풀에 들어가는지 확인.

### 5.4 새 룬

필수 연결:

- `js/data/02-weapon-runes-codex.js`에 룬 정의 추가.
- 룬 보너스를 실제 무기 계산 경로에서 읽는지 확인.
- 가방 탭에서는 아이템과 동일하게 표시되고, 무기 탭에서는 가방 룬/주변 룬 목록에 표시되어야 한다.
- 장착/해제 시 룬이 임의로 사라지거나 중복되지 않는지 확인.

### 5.5 새 이벤트

필수 연결:

- `EVENT_ROOM_DEFS`에 등록.
- 이벤트 테스트 NPC 선택지에 자동 노출되는지 확인.
- 실제 던전 이벤트방에서 무작위로 선택되는지 확인.
- 대화 후 선택지 표시가 끊기지 않는지 확인.
- 이벤트 종료/방 비우기 시 NPC와 오브젝트가 제대로 정리되는지 확인.

### 5.6 새 시너지

필수 연결:

- `js/data/05-synergies.js`의 `SYNERGY_DEFS`에 시너지 id, 이름, 태그, 색상, 아이콘, 중첩 조건을 추가한다.
- 기존 시너지 시트 번호를 쓰면 `assets/icons/synergy/synergy_번호.png`를 연결한다. 새 첨부 이미지를 쓰면 `assets/icons/synergy/`에 복사하고 그 경로를 연결한다.
- `SYNERGY_TAG_PRIORITY`에 태그를 넣는다. 아이템/룬당 최대 3개만 표시되므로 중요한 시너지가 잘리지 않도록 우선순위를 잡는다.
- `getSynergyTagsForItem()`에서 `synergyTags`, 보너스 키, 이름, 효과 텍스트 기반 자동 부여 규칙을 추가한다.
- 새 보너스 키를 만들면 `js/13-ui-hud-inventory-codex.js`의 `createEmptyRuneBonuses()`에 기본값을 추가한다.
- 새 보너스 키는 반드시 실제 소비 경로에 연결한다. 예: `goldDamageRate`는 `Game.getDamageMultiplier()`, `chaosExplosionDamageRate`는 혼돈 폭발 계산에서 읽는다.
- 시너지 효과는 현재 만족하는 가장 높은 중첩 단계 하나만 적용된다. 4중첩 효과에 2중첩 효과가 자동으로 더해지지 않는다.
- 검증은 수정한 JS `node --check`와, 필요한 경우 작은 Node 스크립트로 자동 태그/활성 중첩 계산만 확인한다.
- 기획서와 인수인계의 현재 시너지 목록, 최근 변경 내역, 새 세션 요약을 함께 갱신한다.

## 6. 알려진 리스크/버그 후보

1. 전투 렉: 투사체 증가 룬, 다중 파티클, 보스 패턴, 가방 UI가 겹치면 렉이 커질 수 있다.
2. 가방 탭 렉: 배치 아이템/룬이 많을 때 히트박스 검사와 DOM 렌더링 최적화가 필요하다.
3. 무기 장착 룬이 임의로 풀리는 문제가 과거에 보고됐다. 룬을 새로 줍거나 가방/무기 탭을 오갈 때 instanceId 참조가 유지되는지 확인해야 한다.
4. 새 몬스터 공격이 직접 피해를 주면 패링/무적/태그 시스템을 우회한다. 신규 적 작업 시 가장 먼저 점검한다.
5. 모바일 파일 실행은 폴더 구조가 깨지면 흰 화면이 된다. 배포는 zip 전체를 풀어야 한다.
6. 브라우저별 전체화면/파일 접근/캐시 차이가 있다. 모바일 실기 테스트가 필요하다.

## 7. 최근 중요 변경

- `v0.7.48`: `BAG_ITEM_GEOMETRY.betrayer`를 추가해 `배신자`가 기본 셀 외형으로 표시되던 문제를 수정했다. `drawBagItemIcon()`에 `betrayer` 전용 장식선을 추가했다. `warnMissingBagItemGeometry()`를 추가해 신규 비소모 가방 아이템이 `BAG_ITEM_GEOMETRY` 없이 들어오면 콘솔 경고로 누락을 확인할 수 있게 했다. 또한 `playerStatusBar`와 `updatePlayerStatusHud()`를 추가해 플레이어가 보유한 화상/중독/출혈/서리/빙결/혼돈/감전/패링/무 표식/혈석/기습/소모품 버프와 칼날 세례 스택, 무기 강화 상태를 HP/MP/SP 창 아래 별도 줄의 작은 사각형 아이콘으로 표시한다. 대시/회피 무적은 표시하지 않으며, 스택 수와 남은 시간 배지는 아이콘을 덜 가리도록 하단으로 낮춰 렌더링한다.
- `v0.7.47`: `칼날 세례` 대시 발사를 즉시 일괄 생성에서 예약 연사로 변경했다. `CONFIG.BLADE_SHOWER_BURST_INTERVAL`, `BLADE_SHOWER_BURST_SPREAD`, `BLADE_SHOWER_BURST_JITTER`를 추가했고, `triggerBladeShowerOnDash()`는 스택 수만큼 커스텀 `scheduledShots`를 넣어 좁은 폭으로 순차 발사한다. `runScheduledShots()`는 `shot.fire(game)` 콜백도 처리한다.
- `v0.7.46`: `황금 바늘통`과 `사냥꾼 갈고리`에 `synergyTags: ["blade_shower"]`를 추가했다. 신규 아이템 `betrayer`는 `plague`/`blade_shower` 시너지와 `bladeShowerStackFromPoisonChance: 0.1` 보너스를 가진다. 맹독 디버프 틱 후 `tryGainBladeShowerStackFromPoisonTick()`을 호출해 10% 확률로 칼날 스택을 얻으며, 독 피해로 얻은 스택은 `칼날 세례` 2중첩 자동 적립이 없어도 대시에서 소비된다.
- `v0.7.45`: `칼날 세례` 시너지 로직을 재작업했다. `Game.updateBladeShowerStacks(dt)`가 `bladeShowerStackInterval` 주기마다 칼날 스택을 1개씩 쌓고, `triggerBladeShowerOnDash()`는 보유 스택을 전부 소비해 스택 수만큼 `bladeShard` 투사체를 부채꼴로 발사한다. 4/7중첩은 시너지 정의에서 획득 주기를 4초/3초로 줄이고 `bladeShowerDamageRate`를 강화한다.
- `v0.7.44`: `불의 꽃` 무기 효과를 기획 기준으로 재작업했다. `Game.performFireFlowerAttack()`은 가까운 적 최대 3명을 `getFireFlowerTargets()`로 잡아 `FireFlowerBudProjectileEffect`를 발사하고, 적중 시 `applyTargetingChainDamage()`로 화염/마법/타겟팅/타겟팅:체인/투사체 태그 피해와 화염 4스택, 3회 연쇄 전이를 적용한다. `performFireFlowerPetalSkill()`은 화염 디버프 상태인 적 수만큼 꽃잎을 저장하고, 다음 기본공격에서 꽃잎당 피해 증가 및 꽃잎 3개당 연쇄 +1회를 부여한다. `applyTargetingChainHit()`은 이제 화염 꽃 연쇄의 burnStacks/crit/fx 옵션을 유지한다.
- `v0.7.43`: 테스트룸 인벤토리 도감의 아이템/룬/무기 상세 설명창에 테스트룸 전용 소환 버튼을 추가했다. `renderCodexTestRoomSpawnAction()`은 `state.mode === "playing"`, `game.runMode === "testRoom"`, `state.inventoryTab === "codex"`일 때만 버튼을 붙인다. 버튼은 `spawnSelectedCodexEntryForTestRoom()`를 호출하며, 아이템은 `BagItemDrop`, 룬은 `WeaponRunePickup`, 무기는 `WeaponPickup`으로 플레이어 전방 안전 위치에 생성한다.
- `v0.7.42`: `감전` 타겟팅 체인은 첫 적중 후 다음 전이를 `CONFIG.SYNERGY_SHOCK_CHAIN_TRANSFER_DELAY = 0.1`초 지연 큐로 처리한다. `CONFIG.SYNERGY_SHOCK_CHAIN_JUMP_RANGE`는 560으로 확대했고, 부동소수 누적으로 정확히 0.1초 프레임에서 전이가 밀리지 않도록 `updateTargetingChainTransfers()`의 타이머 판정에 epsilon을 적용했다. 신규 시너지 `칼날 세례`는 25번 아이콘을 사용하며 `bladeShowerOnDash` 보너스로 대시 성공 시 `bladeShard` 투사체를 부채꼴로 발사한다. 신규 무기 `불의 꽃`은 `createWeaponById("fireflower")`에 추가됐고, 기본공격은 `firePetal` 화염 꽃잎, 스킬 `꽃잎 강화`는 6.5초 강화와 즉시 10방향 강화 꽃잎을 제공한다. 도감/무기 정보/아이콘 렌더링까지 연결했다.
- `v0.7.41`: `감전` 자동 발동 실패 수정. `Player` 클래스에는 `alive` 속성이 없는데 `Game.tryTriggerSynergyShockChain()`과 `Game.updateSynergyShockChain(dt)`가 `this.player?.alive`를 검사해 항상 비활성으로 판단하던 것이 원인이다. `Game.isPlayerAlive()`를 추가해 `alive === false`만 제외하고 `hp > 0`이면 생존으로 판정하도록 바꿨다. 회귀 테스트는 실제 `Game.update()` 경로에서 `player.alive` 없이 HP만 있는 플레이어가 감전 시너지를 활성화했을 때 가까운 적에게 즉시 발동하고, 이후 5초 쿨타임마다 재발동하는지를 확인한다.
- `v0.7.40`: `감전` 시너지의 5초 자동 발동 타이머를 활성/비활성 전환 때 안정화했다. `Game.updateSynergyShockChain(dt)`가 비활성 상태의 오래된 타이머를 0으로 정리하고, 활성 상태에서는 쿨타임 감소 후 `tryTriggerSynergyShockChain()`을 호출한다. `타겟팅:체인`의 `synergyShockChainHits`는 첫 타격 후 전이 횟수 n으로 해석한다. 다음 대상 후보에서 현재 대상과 직전 대상을 제외해 A→B→A 즉시 되튐은 막고, A→B→C→A처럼 한 유닛을 거친 재적중은 허용한다.
- `v0.7.39`: 감전 시너지 5초 자동 발동 안정화. `CONFIG.SYNERGY_SHOCK_CHAIN_RANGE`를 1200, `CONFIG.SYNERGY_SHOCK_CHAIN_JUMP_RANGE`를 430으로 넓혀 큰 방/테스트룸에서 대상 탐색 실패를 줄였다. `Game.tryTriggerSynergyShockChain()`은 `applyTargetingChainDamage()`가 1회 이상 적중했을 때만 쿨타임을 소비한다. 로컬 데이터 검증으로 `번뜩이는 유리 파편 + 마나 회로` 배치 시 `synergyShockChain: 1`, `synergyShockChainCooldown: 5`, `synergyShockChainHits: 5`가 계산되는 것을 확인했다.
- `v0.7.38`: 감전 시너지의 실제 피해 전파를 `타겟팅:체인` 규칙에 맞게 수정했다. `Game.tryTriggerSynergyShockChain()`은 첫 대상을 잡고 `Game.applyTargetingChainDamage()`에 넘긴다. 체인 피해는 첫 대상에서 주변 적으로 번개가 튕기는 시각 효과와 함께 이어지며, 직전 대상에게 바로 되돌아가지 않도록 현재 대상과 직전 대상을 다음 대상 후보에서 제외한다. 한 유닛을 거친 뒤에는 같은 대상이 다시 피해를 받을 수 있다. 발동 조건은 `getStatBonusValue("synergyShockChain")` 기준으로 통일했다.
- `v0.7.37`: `잡동사니` 시너지 효과를 적용했다. 3/6/10중첩은 각각 `junkDamagePerItemRate` 0.005/0.01/0.03을 부여하고, `Game.getJunkDamageRate()`가 가방에 유효 배치된 물건 수를 읽어 전역 피해량에 더한다. 시너지 `감전`을 추가했다. 8번 아이콘을 사용하며 번개/전기/연쇄/체인 계열에 자동 부여된다. 2/4/7중첩은 `targetingChainDamageRate` +15%/+40%/+100%, `lightningDamageRate` +30%/+70%/+150%를 부여한다. `Game.tryTriggerSynergyShockChain()`은 쿨타임마다 가까운 적에게 연쇄 번개를 가하고 피해 태그는 `DAMAGE_TAGS.TARGETING_CHAIN`, `DAMAGE_TAGS.TARGETING`, `DAMAGE_TAGS.LIGHTNING`이다. `번뜩이는 유리 파편`과 `마나 회로`에 감전 시너지를 적용했다.
- `v0.7.36`: `녹아내리는 별`이 이름의 `별` 때문에 `berserk_star`를 자동 획득하지 않도록 `getSynergyTagsForItem()`에서 `melting_star`에 한해 `berserk_star`를 제외한다. 아이템 `빙하 파편`을 추가했다. `bonus`는 `magicDamageRate: 0.1`, `glacierShardOnDash: 1`, `synergyTags: ["magic", "frost"]`다. `Game.tryDodge()` 성공 직후 `triggerGlacierShardOnDash()`를 호출하며, 3개의 `Projectile`이 `DAMAGE_TAGS.PROJECTILE/MAGIC/FROST`와 `frostStacks: 1`로 발사된다.
- `v0.7.35`: `녹아내리는 별`의 인게임 설명에서 시너지 텍스트를 제거했다. `synergyTags`는 유지하므로 시너지는 기존 아이콘 UI로만 표시된다. 또한 `BAG_ITEM_GEOMETRY.melting_star`를 추가해 드랍/가방/상점 프리뷰가 기본 격자형이 아니라 녹아내리는 별 실루엣으로 렌더링된다.
- `v0.7.34`: 아이템 `녹아내리는 별` 추가. `assets/icons/synergy/synergy_plague.png`와 같은 역병 계열 시너지와 어울리는 가방 아이템으로, `plagueChaosProcChance = 0.1`을 부여한다. `Enemy.takeDamage()`가 `options.poison` 또는 `DAMAGE_TAGS.POISON` 피해를 받은 뒤 대상의 `chaosStacks > 0`이면 이 확률을 읽어 `applyChaos(1)`을 시도한다. 새 아이템은 `plague`와 `awakened` 시너지를 자동 부여하도록 `synergyTags`를 넣었다.
- `v0.7.33`: 시너지 `역병`의 4/7중첩을 추가했다. 4중첩은 `poisonDamageRate +0.7`, `plagueHomingDamageRate +0.4`, `plagueHomingTargetCountBonus +1`, 7중첩은 `poisonDamageRate +1.5`, `plagueHomingDamageRate +1`, `plagueHomingTargetCountBonus +2`, `plagueHomingChanceBonus +0.1`다. `Game.triggerPlagueHomingFromPoisonTick()`가 이 값을 읽어 독 틱마다 발사하는 유도탄의 피해/대상 수/발동 확률을 늘린다.
- `v0.7.32`: 시너지 `역병` 추가. 아이콘은 `assets/icons/synergy/synergy_plague.png`이며 맹독/중독/감염/독침 계열 아이템과 룬에 자동 부여된다. 2중첩에서 `poisonDamageRate +0.3`, `plagueHoming`이 활성화된다. 독 지속피해 틱은 `updatePoisonOnUnit()`에서 `Game.triggerPlagueHomingFromPoisonTick()`을 호출하며, 발동 확률은 `CONFIG.PLAGUE_HOMING_BASE_CHANCE + 행운 * CONFIG.PLAGUE_HOMING_LUCK_RATE`다. 피해는 `PlagueHomingProjectileEffect`가 처리하고 태그는 `맹독피해/마법피해/투사체/타겟팅`이다.
- `v0.7.31`: 대시공격의 전역 밸런스를 조정했다. `CONFIG.DASH_ATTACK_STAMINA_COST_MULTIPLIER = 0.5`, `CONFIG.DASH_ATTACK_DAMAGE_MULTIPLIER = 1.35`를 추가했고, `Game.getDashAttackStaminaCost()`, `Game.getDashAttackDamageMultiplier()`, `Game.getDashAttackBaseDamage()`를 통해 비용/피해를 계산한다. 신규 대시공격은 직접 `dashAttackDamage`에 배율을 곱하지 말고 이 헬퍼를 사용해야 룬/전역 밸런스가 빠지지 않는다.
- `v0.7.30`: 시너지 `폭풍` 추가. 18번 아이콘을 사용하며 바람/소용돌이/회전 계열 아이템과 룬에 자동 부여된다. 2/4/7중첩에서 바람속성피해 +30%/+70%/+150%, `범위:소용돌이` 피해 +10%/+30%/+60%, `범위:소용돌이` 공격 크기 +15%/+40%/+80%가 적용된다. 새 보너스 키는 `areaSpinDamageRate`, `areaSpinSizeRate`이며, `Game.getDamageTagMultiplier()`가 `DAMAGE_TAGS.AREA_SPIN`을 읽고 `Game.getAreaSpinSizeMultiplier()`가 소용돌이 크기 배율을 반환한다. 현재 회전 베기, 칼날폭풍 투사체, 특이점 블랙홀 반경에 크기 배율을 연결했다. 신규 `범위:소용돌이` 공격은 반드시 `DAMAGE_TAGS.AREA_SPIN` 태그를 붙이고 크기 계산에 `getAreaSpinSizeMultiplier()`를 곱한다.
- `v0.7.29`: 테스트룸 창에 플레이어 스탯 조절 패널을 추가했다. 테스트룸에서 최대 HP/마나/스테미나, 피해량, 방어력, 공격속도, 치명타, 속성/태그 피해, 소환수 관련 스탯을 즉시 증감/초기화할 수 있다.
- `v0.7.28`: 축소공방 NPC `챌런`과 상호작용해 대화를 시작할 때 DUNI 전용 음성 `assets/audio/duni-shrink-workshop.wav`가 1회 재생되도록 추가했다.
- `v0.7.27`: `공명` 활성 후 비기본공격 스킬 피해 치명타가 누락되던 문제 수정. `SKILL` 태그가 있고 `BASIC`/`CHARGED_BASIC` 태그가 없는 직접 피해(얼음 지팡이 빙결지대, 독안개, H99 섬멸빔, 로켓 포격, 투사체 부가 범위 등)가 `rollTaggedSkillDamage()`를 거쳐 치명타 피해와 `!` 표기를 적용한다.
- `v0.7.26`: 시너지 `공명` 추가. 31번 아이콘을 사용하며 치명타/스킬치명타 계열 아이템과 룬에 자동 부여된다. 2/4/7중첩에서 치명타확률 +8%/+20%/+40%, 7중첩에서 치명타피해 +50%가 적용된다. 활성화 시 스킬 피해도 치명타를 굴리며, 스킬치명타확률은 보유 치명타확률의 60%/70%/100%만큼 추가된다. 신규 보너스 키는 `skillCritEnabled`, `skillCritChanceFromCritRate`, `critDamagePerChaosStack`이다. 아이템 `마나 회로`는 `푸른 빛`/`공명` 시너지와 마나 +20, 쿨타임감소 +10%를 제공한다. 아이템 `금서`는 `깨어난자`/`공명` 시너지와 자신이 보유한 혼돈 스택당 치명타 피해 +5%를 제공한다.
- `v0.7.25`: 시너지 `특이점` 추가. 4번 아이콘을 사용하며 범위공격/블랙홀/소용돌이/장판 계열 아이템과 룬에 자동 부여된다. 2/4/7중첩에서 범위공격피해 +30%/+70%/+150%가 적용된다. 궁극기 사용 시 시전 방향으로 보라빛 투사체를 발사하며, 적중 시 블랙홀 장판으로 커져 주변 적을 조금씩 끌어당기고 `범위공격`, `범위:소용돌이`, `마법피해` 지속피해를 준다. 블랙홀은 2중첩 5초, 4중첩 7초와 지속피해 +30%, 7중첩 10초와 지속피해 +60%로 강화된다. 새 보너스 키는 `singularityBlackHole`, `singularityBlackHoleDamageRate`, `singularityBlackHoleDuration`이며 궁극기 훅은 `Game.triggerSingularityUltimate()`, 이펙트는 `SingularityProjectileEffect`/`SingularityBlackHoleEffect`에서 처리한다.
- `v0.7.24`: 시너지 `검의 궤적` 추가. 9번 아이콘을 사용하며 검/칼날/근접/물리 계열 아이템과 룬에 자동 부여된다. 2/4/7중첩에서 물리피해 +5%/+12%/+20%, 근접공격피해 +30%/+70%/+150%, 근접공격 시 전방 찌르기 발동 확률 10%/20%/50%가 적용된다. 새 보너스 키는 `meleeDamageRate`, `meleeThrustProcChance`이며, `Game.getDamageTagMultiplier()`에 `근접공격` 태그 배율을 연결했다. 발동 피해는 `Game.tryTriggerSwordPathThrust()`에서 처리하고 태그는 `근접:찌르기`, `근접공격`, `물리피해`다.
- `v0.7.23`: `피해량` 전역 배율이 무기 직접 피해뿐 아니라 화상/독/출혈/빙결/혼돈 폭발, 감염 오라, 얼음 장판, 불의 구 접촉 피해, 파워대시, 넉백 충돌 피해에도 적용되도록 누락 경로를 보정했다. `Game.getPersistentDamageMultiplier()`를 추가해 지속피해/패시브 피해에는 `기습자`의 다음 공격 1회 보너스가 섞이지 않게 분리했다. 신규 플레이어 발생 피해를 추가할 때는 이미 `getDamageMultiplier()`가 곱해진 값인지 확인하고, 지속/패시브 피해는 `getPersistentDamageMultiplier()`를 사용한다.
- `v0.7.22`: 아이템 `붉은 반지`와 시너지 `혈석` 추가. `혈석`은 5번 아이콘을 사용하며 1/3/7중첩에서 출혈 지속피해 혈석 드랍 확률 5%/7%/10%, 피격 시 혈석 회복량 5/7/9, 혈석 5스택당 피해량 +2%/+3%/+4%가 발동한다. 적 사망 시 혈석 시너지가 활성화되어 있으면 혈석을 100% 드랍한다. 혈석은 `RewardOrb` 타입으로 구현했고, 출혈 지속피해 경로 `updateBleedOnUnit()`, 적 사망 경로 `Enemy.takeDamage()`, 플레이어 피격 경로 `Player.takeDamage()`에 연결했다. `붉은 반지`는 혈석/고통 시너지를 가지며 혈석 회복이 발동할 때 20% 확률로 혈석을 소모하지 않는다.
- `v0.7.21`: 시너지 `고통` 추가. 14번 아이콘을 사용하고 출혈/고통/장미/가시 계열 아이템과 룬에 자동 부여된다. 2/4/7중첩에서 출혈속성피해 +30%/+70%/+100%와 잃은 HP 6/5/3당 피해량 +1%가 발동한다. 새 보너스 키는 `missingHpDamageUnit`이며 `Game.getDamageMultiplier()`에서 현재 잃은 HP를 읽어 전역 피해량 보너스로 적용한다. 사용자에게 보이는 출혈 피해 태그와 히유 탭 표기는 `출혈속성피해`로 통일했다.
- `v0.7.20`: 히유 탭의 전역 피해 증폭 스탯 라벨을 `피해량`으로 변경했다. `피해량`은 모든 피해에 적용되는 전역 증폭량을 뜻한다. `기습자` 시너지 설명의 이동속도 비례 증폭 문구도 `이동속도의 n%만큼 피해량 증가`로 통일했다.
- `v0.7.19`: 피해 태그와 히유 스탯 표기를 `얼음속성피해`로 통일했다. 내부 계산 키 `frostDamageRate`와 상태이상 변수명은 저장/계산 호환을 위해 유지하지만, 사용자에게 보이는 피해 태그 문자열 `DAMAGE_TAGS.FROST`는 `얼음속성피해`를 사용한다.
- `v0.7.18`: 전역 공격속도 스탯을 추가하고 히유 탭에 표시한다. 공격속도 보너스는 무기 룬, 음식 버프, 가방 시너지 보너스를 합산해 무기 발사 간격을 줄인다. 시너지 `속사`를 추가했으며 3번 아이콘을 사용하고 공격속도/속사/연사/난사 계열 아이템과 룬에 자동 부여된다. 2/4/7중첩에서 공격속도 +30%/+70%/+150%가 발동한다. 도감의 시너지 상세는 중첩 효과를 카드 형태로 정리하고, 해당 시너지를 가진 아이템/룬 목록을 실제 데이터에서 자동 수집해 표시한다.
- `v0.7.17`: 시너지 `기습자` 추가. 20번 아이콘을 사용하고 이동속도/대시/기동 계열 아이템과 룬에 자동 부여된다. 2/4/7중첩에서 이동속도 +40/+100/+180, 대시 후 다음 공격 피해 +50%/+100%/+200%, 이동속도 비례 피해 증가가 발동한다. 새 보너스 키는 `moveSpeedFlat`, `ambushNextAttackDamageRate`, `moveSpeedDamageRate`다.
- `v0.7.16`: 궁극기 피해를 구체당 120으로 상향하고, 테스트룸 `마나회복` 옆에 `궁극기회복` 버튼을 추가했다.
- `v0.7.15`: 기본 궁극기 시스템 추가. 우하단 초록색 궁극기 버튼과 PC `T` 키로 사용하며, 궁극기 게이지는 에너지 폭파 사용 시 소모 에너지 비례 최대 40%, 적 처치 시 5% 충전된다. 기본 궁극기는 초록빛 구체 3개를 소환해 주변 대상 최대 3명에게 발사하고 `스킬`/`마법피해`/`타겟팅`/최고 속성피해 태그를 사용한다.
- `v0.7.14`: 시너지 `푸른 빛` 추가. 12번 아이콘을 사용하고 마나/푸른/스킬 쿨타임 계열 아이템과 룬에 자동 부여된다. 2/4/6/8중첩에서 최대마나 +30/+70/+120/+190, 스킬 쿨타임감소 +10%/+15%/+25%/+40%가 발동한다. 기존 `skillCooldownRate`가 실제 무기 스킬 쿨타임에 적용되도록 연결했다.
- `v0.7.13`: 시너지 `레이져` 추가. 2번 아이콘을 사용하고 레이져/레이저/광선 계열 아이템과 룬에 자동 부여된다. 2/4/7중첩에서 레이져 피해 +30%/+70%/+150%, 4/7중첩에서 레이져 두께 +30%/+80%가 발동한다. 무기스킬 시 가까운 적에게 시너지 레이져를 발사하며 쿨타임은 10/7/3초다.
- `v0.7.12`: `소환술사` 중첩 효과 변경. 2중첩은 소환수 피해/체력 +30%, 4중첩은 소환수 피해/체력 +70%와 무기 소환수 생성 +1, 7중첩은 소환수 피해/체력 +150%와 무기 소환수 생성 +3이 발동한다. 히유 탭에 `폭발피해` 스탯 표시를 추가했다.
- `v0.7.11`: 시너지 `소환술사` 추가. 24번 아이콘을 사용하고 소환수 관련 아이템/룬에 자동 부여된다.
- `v0.7.10`: `광폭의 별` 시너지의 운석 낙하 효과 쿨타임을 15초로 조정하고, 시너지 설명에 15초 주기를 표시했다.
- `v0.7.9`: 시너지 `광폭의 별` 추가. 28번 아이콘을 사용하고 폭발/운석/별 계열 아이템에 자동 부여된다. 2중첩은 폭발피해 +40%와 15초마다 근처 적 위치 운석 낙하, 4중첩은 폭발피해 +100%와 운석피해 +70%, 7중첩은 폭발피해 +200%와 운석피해 +200%가 발동한다. 운석은 범위피해/폭발피해 태그를 가진다.
- `v0.7.8`: 가방 아이템 `불안정한 불씨` 추가. `화염술사`/`행운`/`광폭의 별` 시너지를 가지며 화염속성 피해 +15%를 제공한다. 적이 화염 디버프로 인한 피해를 받을 때 `(20+행운스탯 20%)%` 확률로 대상이 작게 폭발해 폭발피해/범위피해/화염속성피해 태그를 가진 추가 광역피해를 준다.
- `v0.7.7`: 시너지 `행운` 추가. 10번 아이콘을 사용하고 2/4/7중첩에서 행운 +20%/+50%/+120%를 적용한다. 기존 아이콘 이미지가 없는 시너지는 삭제했다. `낡은 행운 동전`에 `행운` 시너지를 추가하고, `녹지않는 눈덩이`는 기본공격시 `(10+행운스탯의 40%)%` 확률로 눈덩이를 발사하도록 변경했다.
- `v0.7.6`: 가방 아이템 `녹지않는 눈덩이` 추가. `마법서`/`서리` 시너지를 가지며, 기본공격 사용 시 시전방향으로 마법/얼음속성 피해 태그를 가진 눈덩이 투사체를 발사한다.
- `v0.7.5`: 시너지 `마법서`와 `서리` 갱신. `마법서`는 16번 아이콘을 사용하고 2/4/7/12중첩에서 마법피해 +20%/+50%/+120%/+250%를 적용한다. `서리`는 30번 아이콘을 사용하고 2/4/7/12중첩에서 얼음속성피해 +20%/+50%/+120%/+250%를 적용한다.
- `v0.7.4`: 가방 아이템 `작은 돌고래` 추가. 최대 MP +12와 이동속도 +3%를 제공하며, 마력 회로/기동 장비 시너지 태그는 기존 자동 추론 경로를 사용한다.
- 문서 최신화 2026-06-29: 새 Codex 세션에서 같은 방식으로 이어갈 수 있도록 새 시너지/아이템/보너스 키 추가 절차, 최소 검증 기준, 새 세션 첫 프롬프트 요약을 보강했다. 게임 코드는 변경하지 않아 빌드 버전은 유지한다.
- `v0.7.3`: 시너지 `깨어난자` 추가. 22번 아이콘을 사용하며 혼돈 관련 아이템과 룬에 자동 부여된다. 2중첩은 혼돈피해 +20%와 혼돈스택 폭발 피해 +30%, 4중첩은 혼돈피해 +50%와 혼돈스택 폭발 피해 +80%가 발동한다. 혼돈 폭발 피해는 `chaosExplosionDamageRate`를 통해 공용 상태이상 폭발 계산에 적용한다.
- `v0.7.2`: 아이템 `낡은 삽`, `낡은 곡괭이` 추가. 시너지 `잡동사니` 추가. 제공 아이콘 `assets/icons/synergy/synergy_junk.png`를 사용하며 열쇠, 낡은 삽, 낡은 곡괭이, 웃음 저주 아이템에 자동 부여된다. 3/6/10중첩 조건만 있고 효과는 미정이다.
- `v0.7.1`: 시너지 `금빛 열망` 효과 적용. 2중첩은 탐욕 +50%와 100골드당 피해 +8%, 4중첩은 탐욕 +120%와 90골드당 피해 +10%, 7중첩은 탐욕 +250%와 80골드당 피해 +15%가 발동한다. `goldDamageRate`와 `goldDamageUnit`을 통해 보유 골드 기반 전역 피해 배율을 계산한다.
- `v0.7.0`: 시너지 `금빛 열망` 추가. 15번 아이콘을 사용하고 골드/황금/탐욕/행운 계열 아이템과 룬에 자동 부여된다.
- `v0.6.9`: 히유 탭에서 활성 시너지 목록과 효과 표시를 제거했다. 히유 탭은 플레이어 스탯만 보여준다.
- `v0.6.8`: 시너지 `풍요` 추가. 26번 아이콘을 사용하고 음식/소모성 아이템에 자동 부여된다. 2/4/7중첩 조건만 있으며 효과는 미정이라 보너스는 아직 없다.
- `v0.6.7`: 히유/도감 등 인벤토리 탭을 보고 닫은 뒤 다시 열면 선택 탭 UI가 보이지 않던 문제 수정. 인벤토리 열기 상태를 먼저 설정한 뒤 렌더링하고, 닫을 때 탭 active 상태와 시너지 팝업을 정리한다.
- `v0.6.6`: 도감 내부에서는 시너지 설명 팝업이 뜨지 않도록 수정. 도감은 기존 오른쪽 설명 영역만 사용하고, 팝업은 일반 인벤토리 설명/가방 시너지창에서만 열린다.
- `v0.6.5`: 인벤토리/도감 아이템 및 룬 설명창과 바닥 드랍 설명창에 시너지를 아이콘+이름으로 표시. 시너지 아이콘, 가방 시너지 칸, 도감 시너지 항목 터치 시 시너지 설명 팝업이 열리고 닫기/외부 터치로 닫힌다.
- `v0.6.4`: 가방 탭의 가방창을 인벤토리 메뉴와 겹치지 않는 선에서 상단에 더 붙이고, 가방 공간 위 시너지 목록창을 가로 스크롤 UI로 정리. 시너지 칸은 아이콘, 이름, `현재/필요` 중첩을 표시하고, 조건 미달 시 흑백으로 보인다.
- `v0.6.3`: 도감/인벤토리 도감에 `시너지` 탭 추가. 시너지 바와 히유 탭은 저장 캐시가 비어도 현재 가방 상태에서 직접 시너지를 다시 계산해 표시하도록 수정. 시너지 도감 아이콘은 `SYNERGY_DEFS.icon` 이미지를 캔버스에 표시한다.
- `v0.6.2`: 기존 화염 시너지를 `화염술사`로 변경. 21번 시너지 아이콘을 사용하고, 2/4중첩 효과를 화염피해 +20%/+60%로 조정. 시너지 UI는 정의에 `icon`이 있으면 실제 이미지 아이콘을 표시한다.
- `v0.6.1`: 첨부 시너지 아이콘 시트를 `assets/icons/synergy_sheet.jpg`로 보관하고, 왼쪽 위부터 `assets/icons/synergy/synergy_01.png` ~ `synergy_32.png` 64x64 PNG로 분리 저장.
- `v0.6.0`: 가방창 위치를 상단으로 조정해 시너지 바 추가 후 가방 하단이 잘리지 않게 수정. 아이템 선택 정보에서 `레벨 n / 배치 가능` 문구를 제거하고, 물건 시너지를 아이콘+이름 형태로 표시.
- `v0.5.99`: 시너지 시스템을 스택형으로 정리. 아이템/룬당 시너지 0~3개 제한, 가방에 유효 배치된 물건만 중첩, 가방창 상단 가로 스크롤 시너지 아이콘 바 추가, 조건 만족 시 아이콘 색상 활성화와 `현재/조건` 숫자 표시.
- `v0.5.98`: 초기 시너지 시스템 추가. 가방에 유효 배치된 아이템/룬의 태그를 자동 추론해 2개/4개 단계 보너스를 적용하고, 히유 탭에 활성 시너지 목록을 표시한다.
- `v0.5.97`: 도감에 `피해 종류` 탭 추가. `DAMAGE_TAGS`를 자동으로 읽어 물리/마법, 속성 피해, 나머지 태그 순으로 표시한다. 인벤토리에도 메인 화면과 동일한 도감 탭을 추가했다.
- `v0.5.96`: `불의 구` 궤도 화염 구체가 일반 적에게 접촉 피해를 준 뒤 화염 스택을 정상 부여하도록 수정. 보호막 보유 적에게는 기존처럼 보호막이 먼저 반응한다.
- `v0.5.95`: 가방 아이템 `황금 칼날`, `푸른 부채`, `불의 구` 추가. 황금 칼날은 치명타 시 낮은 확률로 골드 오브를 만들고, 푸른 부채는 파동피해/파동 크기를 올리며, 불의 구는 플레이어 주변 궤도 화염 구체로 접촉 피해와 화염 스택을 준다.
- `v0.5.94`: 플레이어 스탯에 `교섭`, `행운`, `탐욕` 추가. 탐욕은 골드 오브 획득량에 적용.
- `v0.5.93`: 피해 계열 스탯 기본 100% 표기, 치명타피해 150% 표기. 물리/마법/투사체/검기/파동/범위/스킬 피해 스탯 추가와 피해 태그별 배율 적용.
- `v0.5.92`: 플레이어 스탯에 `넉백 힘` 추가. 플레이어/무기 넉백 보너스 합산 공식 적용, 충돌 피해 태그 `충돌피해` 추가, 넉백 충돌 피해량 버프.
- `v0.5.91`: 프리미엄 무 이름 오타를 `얼티밋`으로 수정.
- `v0.5.90`: 무 밭 이벤트 우측 끝 상품을 별도 아이템 `무(얼티밋 프리미엄 유기농 국산 100% 무 함유)`로 분리하고 초고가 판매로 고정.
- `v0.5.89`: 무 밭 이벤트 우측 끝에 초고가 `무(유기농)` 판매 상품 1개 추가.
- `v0.5.88`: 골드/마나 구슬 수집 파티클을 강화하고, 마나 소모량 표시에 `assets/icons/mana.png` 적용.
- `v0.5.87`: 골드 이미지를 새 파일로 교체하고, 마나 오브/마나 소모량 표시에 `assets/icons/mana.png` 적용.
- `v0.5.86`: 코인 이미지 `assets/icons/gold.png` 적용. 드랍 코인, HUD 코인, 상점 가격, 축소공방 비용의 `G` 텍스트를 이미지로 교체.
- `v0.5.85`: `DungGeunMo.woff2` 폰트 적용. DOM과 캔버스 텍스트 폰트 통일.
- `v0.5.84`: 패링 성공 후 0.5초 후속 피격 무시. 동시 다중 공격 방어, 에너지 지급은 1회로 제한.
- 최근: 히유 스프라이트 idle/walk 4프레임, 대화창 히유 좌측 초상화, NPC별 초상화, 무 밭/두비두밤/축소공방 이벤트, 화염 골램, 혼돈 지팡이/혼돈 기사, 가방 아이템 레벨 표시.

## 8. 다음 작업 우선순위

1순위:

- 신규 몬스터/보스 공격 패링 경로 통일.
- 전투 렉과 가방 렉 원인 분리.
- 룬 장착 해제 버그 추적.
- 모바일 실기에서 인벤토리/도감/테스트룸 스크롤 확인.

2순위:

- 이벤트방 정식 이벤트 추가.
- 상점/보상/웨이브 밸런스.
- 보스 패턴과 경고 표시 정리.
- 도감 정보 자동화 강화.

3순위:

- `Game` 분리 리팩토링.
- 아이템 이미지 알파 히트박스 도입.
- 사운드, 저장, 메타 성장.

## 9. 새 세션에서 절대 하면 안 되는 것

- 파일 구조를 무시하고 다시 단일 HTML로 합치지 말 것.
- 정상 작동하는 전투/인벤토리/입력 시스템을 통째로 재작성하지 말 것.
- 새 몬스터 공격을 직접 HP 감소 방식으로 만들지 말 것.
- 상점/도감/테스트룸 등록을 빼먹지 말 것.
- 새 파일을 만들고 `index.html` 로드 순서를 갱신하지 않는 실수를 하지 말 것.
- 큰 변경 전에는 어떤 파일을 왜 바꾸는지 먼저 짧게 설명할 것.

## 10. 새 세션 첫 프롬프트용 요약

아래 내용을 새 Codex 세션 첫 메시지에 붙여넣으면 된다.

```text
프로젝트 경로: /root/Documents/Codex/2026-05-23/His dungeon

HIU DUNGEON은 HTML/CSS/JS 정적 브라우저 게임이며 현재 분리 파일 구조입니다. 절대 단일 HTML로 합치지 마세요. 최신 기준 문서는 Hiu_Dungeon_기획서.md, 인수인계는 Hiu_Dungeon_인수인계_기획서.md, 작업 규칙은 CODEX_WORKFLOW.md입니다. 현재 빌드는 v0.7.48입니다.

작업 전 CODEX_WORKFLOW.md를 따르세요. 요청과 관련된 파일만 읽고, 수정한 JS만 node --check 하며, 게임 실행물이 바뀌면 버전을 올리고 Hiu_Dungeon_(수정버전).zip을 재생성합니다. 문서만 수정하면 zip은 생략합니다.

중요 구조:
- 설정/DOM/상태: js/00-config-state-dom.js
- 플레이어/패링: js/entities/05-player.js
- 무기/투사체: js/entities/06-weapons-projectiles.js
- 적 AI: js/entities/07-enemies.js
- 소환수/드랍/NPC/상점: js/entities/08-summons-pickups-shop.js
- 이펙트/오브젝트: js/entities/09-effects-objects.js
- Game 본체: js/core/11-game.js
- HUD/인벤토리/도감: js/13-ui-hud-inventory-codex.js

새 몬스터를 추가할 때는 모든 공격이 Player.takeDamage, EnemyProjectile, game.damageHostileTargetsInCircle, game.damageHostileTargetsOnSegment 중 하나를 통해 들어가게 하세요. 그래야 패링, 0.5초 무적, 피해 태그, 방어, 상태이상, 거울장막, 바람 오라, 근접 투사체 파괴가 자연스럽게 작동합니다. 막혀야 하는 공격에는 parryBlocksHit: true와 damageTags를 붙이세요. 새 몬스터는 createEnemyByKind, 테스트룸 소환 목록, 던전 enemyPool, CODEX_STATIC_ENTRIES.enemies까지 연결하세요.

새 무기는 createWeaponById와 CODEX_STATIC_ENTRIES.weapons에 추가하고, 피해 태그/무기 정보창/도감/상점/보상 풀/룬 적용을 확인하세요. 새 아이템/룬/이벤트는 자동 풀에 들어가도록 데이터 정의를 우선 사용하세요.

새 아이템은 js/data/01-bag-items.js의 RUNE_DEFS와 BAG_ITEM_GEOMETRY를 함께 확인하세요. 새 시너지는 js/data/05-synergies.js의 SYNERGY_DEFS, SYNERGY_TAG_PRIORITY, getSynergyTagsForItem()을 함께 갱신하세요. 새 보너스 키를 만들면 js/13-ui-hud-inventory-codex.js의 createEmptyRuneBonuses()에 기본값을 넣고, 실제 효과를 쓰는 Game/상태이상/무기 계산 경로까지 연결하세요. 시너지 효과는 현재 만족하는 가장 높은 중첩 단계 하나만 적용됩니다.
```
