﻿JimSSng - 디버프 표시 통합팩
Data Mod 설치 및 수동 병합 안내
작성 기준: 2026-07-26 / 설정.zip 최종 기본 설정

이 문서는 Data Mod 배포본을 다른 Data Mod와 함께 사용할 때 필요한 수동 병합 방법을 설명합니다.
D2RMM 버전에는 적용하지 않습니다.

참고 자료
- 제네식스님: https://www.inven.co.kr/board/diablo2/5842/7869
- 비둘기9구9님: https://www.inven.co.kr/board/diablo2/5842/7874
- 즐겁고님: https://www.inven.co.kr/board/diablo2/5842/7919
- 달찌님: https://www.inven.co.kr/board/diablo2/5842/7533

============================================================
1. 이 모드만 단독으로 사용할 때
============================================================

압축파일 안의 data 폴더를 현재 사용하는 모드 폴더에 그대로 복사합니다.
기존 파일 덮어쓰기 전에 현재 data 폴더 전체를 백업하십시오.

이 배포본은 설정.zip의 현재 config.json 값을 고정 적용한 MPQ/Data Mod용 결과물입니다.
D2RMM 설정 UI는 포함되지 않으며, 압축을 복사한 뒤 옵션을 바꿀 수 없습니다.

고정 기본 설정

- 강타 붉은 번개 효과: ON
- 저주/함성 계열 무자막: OFF
- 저주/함성 계열 자막위치 올림: OFF
- 자막위치 올림 Y 오프셋: 0 (자막위치 올림이 OFF이므로 미적용)
- 저주/함성/인장 최종 Y 오프셋: +1
- 저주 10종 및 그림자 망토 표식: ON
- 저주 기본 Y 좌표 10.5, 최종 Y 좌표 11.5
- 도발 및 전투의 함성 표식: ON
- 함성 기본 Y 좌표 10.5, 최종 Y 좌표 11.5
- 광견병 표식: 멍! 형식
- 광견병 Y 좌표: 3.2, 4, 4.8
- 악마술사 인장 3종 표식: ON
- 인장 기본 Y 좌표 8, 최종 Y 좌표 9
- 죽음의 징표 조준선: ON, Y 좌표 4
- 죽음의 징표 빛줄기: ON
- 죽음의 징표 부가 VFX: 죽음의 징표 VFX 2개 추가

중요: 위의 11.5와 9는 공통 최종 오프셋 +1까지 이미 계산된 최종값입니다.
수동 병합할 때 +1을 다시 더하지 마십시오.
공통 최종 오프셋은 죽음의 징표와 광견병에는 적용되지 않습니다.

============================================================
2. 경로 표기와 인코딩 원칙
============================================================

이 안내문의 복사 대상 파일 경로는 Windows 파일 경로이므로 역슬래시(\)로 적습니다.
예: data\hd\overlays\common\taunt.json

JSON 내부의 path와 filename 값은 게임 리소스 경로이므로 슬래시(/)를 그대로 사용합니다.
예: data/hd/status_markers/particles/taunt.particles

JSON 내부 경로를 역슬래시로 바꾸거나, 대소문자와 파일명을 임의로 고치지 마십시오.
특히 decrepify, lifetap, lowerresist 등 실제 파일명을 안내문과 배포본 그대로 사용하십시오.

수동병합안내.txt는 UTF-8 BOM 및 CRLF 줄바꿈으로 저장되어 있습니다.
overlay.txt와 states.txt는 기존 배포본의 인코딩과 탭 구분 구조를 유지하십시오.

============================================================
3. 다른 Data Mod와 함께 사용할 때의 원칙
============================================================

Data Mod는 같은 경로의 파일을 파일 단위로 덮어씁니다.
따라서 다른 모드도 동일한 TXT 또는 JSON을 수정한다면 어느 한쪽 파일을 통째로 덮어쓰지 말고 변경 부분만 병합해야 합니다.

- 새로 추가되는 전용 에셋과 전용 JSON은 그대로 복사합니다.
- 바닐라에도 존재하는 JSON은 이 모드가 추가한 dependency와 Entity만 병합합니다.
- overlay.txt는 taunt/battlecry 높이값과 신규 오버레이 4개 행만 병합합니다.
- states.txt는 신규 오버레이 4개 연결만 병합합니다.
- 기존 Entity, dependency, TXT 값은 임의로 삭제하지 않습니다.
- 이 문서에 없는 새로운 기능이나 위치 조정은 적용하지 않습니다.

============================================================
4. 그대로 복사하는 전용 에셋
============================================================

다음 폴더는 폴더째 복사합니다.

 data\hd\status_markers\particles\
 data\hd\status_markers\textures\

이 고정 배포본은 무자막과 자막위치 올림이 모두 OFF인 일반 자막 에셋을 사용합니다.
D2RMM용 *_notext 및 *_up 선택 에셋은 이 MPQ 고정 설정의 호출 대상이 아닙니다.

광견병이 실제로 호출하는 파일은 다음 두 개입니다.

 data\hd\status_markers\particles\rabies.particles
 data\hd\status_markers\textures\rabies.texture

rabies_m과 rabies_w는 참고용 variant입니다.
기본 배포본의 rabies는 rabies_m과 같은 "멍!" 텍스처를 사용합니다.
rabiesplague.json에는 rabies_m 또는 rabies_w 경로를 직접 연결하지 마십시오.

============================================================
5. 그대로 복사하는 신규 오버레이 JSON
============================================================

다음 네 파일은 이 모드가 새로 추가한 전용 오버레이입니다.
같은 파일이 없다면 그대로 복사합니다.

 data\hd\overlays\common\statusmarker_cloakofshadows.json
 data\hd\overlays\common\statusmarker_sigil_rancor.json
 data\hd\overlays\common\statusmarker_sigil_lethargy.json
 data\hd\overlays\common\statusmarker_sigil_death.json

전용 JSON의 최종 표식 위치

- statusmarker_cloakofshadows.json: x=0, y=11.5, z=0
- statusmarker_sigil_rancor.json: x=0, y=9, z=0
- statusmarker_sigil_lethargy.json: x=0, y=9, z=0
- statusmarker_sigil_death.json: x=0, y=9, z=0

============================================================
6. 다른 모드와 겹치면 병합하는 기존 JSON
============================================================

다음 파일들은 바닐라에도 존재합니다.
다른 모드가 수정하지 않았다면 이 배포본 파일로 교체해도 됩니다.
이미 다른 모드가 수정했다면 기존 파일을 기준으로 이 모드가 추가한 항목만 병합합니다.

 data\hd\overlays\common\bash.json
 data\hd\overlays\common\battlecry.json
 data\hd\overlays\common\curseamplifydamage.json
 data\hd\overlays\common\curseattract.json
 data\hd\overlays\common\curseconfuse.json
 data\hd\overlays\common\cursedecrepify.json
 data\hd\overlays\common\cursedimvision.json
 data\hd\overlays\common\curseironmaiden.json
 data\hd\overlays\common\curselowerresist.json
 data\hd\overlays\common\cursereversevampire.json
 data\hd\overlays\common\curseterror.json
 data\hd\overlays\common\curseweaken.json
 data\hd\overlays\common\rabiesplague.json
 data\hd\overlays\common\taunt.json
 data\hd\overlays\warlock\death_mark.json

병합 방법

1) 배포본 JSON에서 data/hd/status_markers/particles/ 경로를 사용하는 particle dependency를 찾습니다.
2) 그 dependency가 대상 JSON에 없다면 dependencies.particles 배열에 추가합니다.
3) 배포본 JSON에서 status_marker_ 또는 jimssng_로 시작하는 추가 Entity를 찾습니다.
4) 해당 Entity를 components와 transform을 포함하여 통째로 대상 JSON의 entities 배열에 추가합니다.
5) 같은 이름과 같은 particle 경로의 Entity가 이미 있다면 중복 추가하지 않습니다.
6) Entity id가 대상 파일의 기존 id와 충돌할 때만 추가 Entity의 최상위 id를 사용하지 않는 다른 양의 정수로 변경합니다.
7) position, orientation, scale, filename, component name은 변경하지 않습니다.

배포본에 이미 반영된 최종 position 값

- 저주 10종의 status_marker_* Entity: x=0, y=11.5, z=0
- taunt.json의 status_marker_taunt_0: x=0, y=11.5, z=0
- battlecry.json의 status_marker_battlecry_0: x=0, y=11.5, z=0
- rabiesplague.json의 status_marker_rabies_0: x=-2, y=3.2, z=-1
- rabiesplague.json의 status_marker_rabies_1: x=2, y=4, z=1
- rabiesplague.json의 status_marker_rabies_2: x=-1, y=4.8, z=1

위의 저주·함성 Y=11.5는 공통 최종 오프셋 +1까지 반영된 값입니다.
추가 계산 없이 배포본 Entity의 값을 그대로 병합하십시오.

특히 death_mark.json은 다음 Entity를 그대로 유지해야 합니다.

- status_marker_deathmark_0: position x=0, y=4, z=0
- jimssng_deathmark_light_0: position x=0, y=-23, z=0 / scale x=1, y=0.1, z=1
- jimssng_deathmark_extra_0: position x=0, y=2, z=0
- jimssng_deathmark_extra_1: position x=0, y=4, z=0

죽음의 징표 표시 위치가 달라지지 않도록 이 transform을 그대로 병합하십시오.
death_mark의 overlay.txt PreDraw 값은 이 모드가 수정하지 않으므로 수동 병합 대상이 아닙니다.

============================================================
7. overlay.txt 병합
============================================================

대상 파일

 data\global\excel\overlay.txt

다른 모드까지 적용된 현재 overlay.txt를 기준으로 아래 항목만 병합합니다.

먼저 기존 행의 높이값을 확인합니다.

 overlay = taunt
 - Height1 = 14
 - Height2 = 0
 - Height3 = -14
 - Height4 = -60

 overlay = battlecry
 - Height1 = 14
 - Height2 = 0
 - Height3 = -14
 - Height4 = -60

battlecry가 이미 같은 값이면 다시 수정할 필요가 없습니다.
이 높이값은 JSON Entity의 Y 좌표와 별개이며, 이 배포본의 도발 및 전투의 함성 표식 연결에 필요합니다.
이번 설정 변경의 공통 최종 Y 오프셋 +1은 JSON Entity position에만 반영되므로 overlay.txt의 Height 값은 바뀌지 않습니다.

그다음 배포본의 다음 네 행을 추가합니다.
행 일부를 새로 작성하지 말고 배포본 overlay.txt에서 해당 행 전체를 복사하는 것이 안전합니다.

 statusmarker_cloakofshadows
 statusmarker_sigil_rancor
 statusmarker_sigil_lethargy
 statusmarker_sigil_death

배포본의 기본 *ID는 334, 335, 336, 337입니다.
대상 overlay.txt에서 같은 *ID를 이미 사용하고 있다면 네 신규 행에만 사용하지 않는 다른 *ID를 부여합니다.
overlay 이름은 변경하지 않습니다.

신규 네 행의 높이값은 다음과 같습니다.

 Height1 = 14
 Height2 = 0
 Height3 = -14
 Height4 = -60

death_mark 행은 수정하지 않습니다.
death_mark의 PreDraw도 변경하지 않습니다.

============================================================
8. states.txt 병합
============================================================

대상 파일

 data\global\excel\states.txt

다음 네 state에 대응하는 overlay 이름을 추가합니다.

 cloaked
 - overlay2 = statusmarker_cloakofshadows

 sigilrancor
 - overlay1 = statusmarker_sigil_rancor

 sigillethargy
 - overlay1 = statusmarker_sigil_lethargy

 sigildeath
 - overlay1 = statusmarker_sigil_death

대상 파일에서 안내된 칸이 이미 다른 값으로 사용 중이라면 기존 값을 덮어쓰지 않습니다.
overlay1부터 overlay4 중 비어 있는 다른 칸에 같은 overlay 이름을 넣습니다.
네 칸이 모두 사용 중이면 기존 값을 삭제하지 말고 충돌 상태로 판단하십시오.

============================================================
9. TXT 저장 시 주의 사항
============================================================

overlay.txt와 states.txt는 탭으로 구분된 TSV 형식입니다.

- 쉼표 구분 CSV로 저장하지 않습니다.
- 탭과 빈 칸의 열 구조를 유지합니다.
- 가능하면 탭 구분 형식을 보존하는 텍스트 편집기나 TSV 편집기를 사용합니다.
- Excel을 사용했다면 저장 형식과 열 수가 원본과 동일한지 다시 확인합니다.
- 파일 경로 문자열이나 JSON 내용을 overlay.txt 또는 states.txt에 붙여넣지 않습니다.