728x90
반응형

이번에는 Yagudo Avatar와 Kirin의 Astral Flow 구조를 다시 정리하는 작업을 진행했다.

처음에는 Yagudos_Avatar 쪽이 제대로 동작하지 않는다고 판단해서 DB와 Lua를 이것저것 크게 건드렸는데, 결론적으로는 공용 구조를 잘못 이해한 상태에서 괜히 삽질한 부분이 많았다.

특히 가장 크게 헷갈렸던 부분은 이 구조였다.

  • Yagudo_Avatar = 본체 NM
  • Yagudos_Avatar = Astral Flow 전용 임시 소환수
  • Tzee_Xicu_the_Manifest = 소환사 타입 HNM 본체
  • Kirins_Avatar = Kirin의 AF 전용 아바타

처음에는 각 소환수마다 개별 skill_list를 만들어야 하는 줄 알고, Yagudos_Avatar에 별도의 30004 skill_list를 만들어서 아바타 필살기를 직접 등록하는 방향으로 테스트를 진행했다.

하지만 실제 LSB 구조를 다시 추적해보니 핵심은 DB가 아니라 공용 Lua mixin 구조였다.

실제 동작 흐름은 다음과 같았다.

mob:useMobAbility(734) -- Astral Flow

scripts/actions/mobskills/astral_flow.lua

mob:getID() + ASTRAL_PET_OFFSET

scripts/mixins/families/avatar.lua

즉, 아바타 모델 선택과 필살기 사용은 이미 공용 avatar mixin 안에서 처리되고 있었다.

결국 내가 만들었던 30004 skill_list는 필요 없는 테스트 데이터였고, 실제 적용도 되지 않는 상태였다.

확인 결과 원래 정상 DB 구조는 다음과 같았다.

Yagudo_Avatar      skill_list_id = 270
Yagudos_Avatar     skill_list_id = 34
Tzee_Xicu          skill_list_id = 360
Kirins_Avatar      skill_list_id = 34

특히 이번 작업에서 가장 허탈했던 부분은 Kirin이었다.

기린은 IDs.lua에 별도 pet ID 상수를 추가하지 않았는데도 Astral Flow가 정상 동작하고 있었는데, 이유는 단순했다.

mob:setMobMod(xi.mobMod.ASTRAL_PET_OFFSET, 5)

이 한 줄로:

Kirin 본체 + 5 = Kirins_Avatar

를 직접 계산하고 있었기 때문이다.

즉, 애초에 IDs.lua에 추가할 필요도 없는 구조였다.

결국 이번 작업의 결론은 이렇다.

  • 괜히 DB를 크게 건드릴 필요가 없었다.
  • 공용 families/avatar.lua 구조를 제대로 이해하는 게 우선이었다.
  • LSB는 이미 공용 구조를 만들어놨는데, 문제는 그 구조를 이해하기 어렵다는 점이다.
  • 특히 Astral Flow 관련은 DB보다 Lua 흐름 추적이 훨씬 중요했다.

솔직히 이번 작업은 결과보다도 “왜 이렇게 만들어놨는지 이해하는 시간”이 훨씬 오래 걸렸다.

공용 파일로 처리할 거였으면 최소한 구조라도 좀 더 명확했으면 좋았을 텐데, 결국 하루 종일 로그 찍고 DB 확인하고 테스트만 반복했다.

 

확인된 것:
- DB 30004 방식은 불필요했다.
- Yagudo_Avatar / Yagudos_Avatar / Tzee DB는 정상화했다.
- Kirin처럼 공용 avatar mixin 구조로 AF 자체는 동작한다.
- 문제는 “Yagudos_Avatar만 트러스트까지 데미지가 안 들어가는 원인”은 끝내 확정 못했다.

보류:
- avatar mixin / mobskill AoE / trust 대상 판정 차이
반응형
Posted by siguma
,