promotional bannermobile promotional banner

IberisCraftCost

Profession levelling cost calculator for TBC Classic: 1-375 routes with recipes and reagents per skill range, priced from the auction house.
Back to Files

v1.00-bcc

File nameIberisCraftCost-v1.00-bcc.zip
Uploaded
Sep 17, 2026
Downloads
2
Size
201.4 KB
Flavors
Classic TBC
File ID
8904052
Type
R
Release
Supported game versions
  • 2.5.6

What's new

IberisCraftCost

v1.00 (2026-09-17)

Full Changelog Previous Releases

  • chore: 커스포지 프로젝트 ID 추가, 설명의 버그 리포트 안내를 디스코드·인벤으로 (댓글 끔)
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
  • docs: 커스포지 설명(영문 먼저)·인벤·티스토리 포스트, 시리즈 링크
  • 버전 v1.00 으로 통일 (이베리스 시리즈 공통, IberisUI 표기 방식)
  • 영문 로케일 추가, LICENSE, 커스포지 패키징 준비
    • Locale 파일(한글 키 → 영문, koKR 이면 한글 그대로) + 사용자 노출 문자열 L[] 감싸기. 데이터·명령어·패턴은 한글 유지
    • 조사(Josa) 헬퍼는 한국어 클라가 아니면 낱말만 반환
    • LICENSE(All Rights Reserved + 출처·서드파티 고지), TOC X-License
    • .pkgmeta, .github/workflows/release.yml(BigWigs packager, 시크릿 CF_API_KEY), CURSEFORGE_DESCRIPTION.md(한/영)
      Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
  • 데이터 브로커 표시 이름을 ICC 로 (애드온 이름은 그대로)
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
    Claude-Session: https://claude.ai/code/session\_01NU39r3GxcgNEpYZdKBSJYj
  • 대기열: 다음 레시피는 클릭('다음 제작')으로만 제작 — ADDON_ACTION_BLOCKED 수정
    • DoTradeSkill 은 하드웨어 입력 안에서만 허락된다. 앞 레시피가 끝난 뒤 타이머, 제작창이 뜬 이벤트에서 부르면 막힘
    • 클릭이 아니면 준비만: 단추가 '다음 제작'으로 바뀌고 화면 가운데 알림, 누르면 이어서 제작
    • 마진 탭 갯수제작·전부제작은 클릭 안이라 바로 제작
    • 테스트 [2][5] 흐름 갱신, [14] 두 번째 레시피 회귀 추가
      Co-Authored-By: Claude Opus 5 noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session_01FsbLkHt3V3VtgqetF24E2s
  • 올리기 경로: 재료를 만들 수 있는지를 그 구간 숙련도로 판정 (전 전문기술)
    • 기계공학 300 에서 아다만타이트 형틀(기술전문가 325)을 못 만든다고 봐서, 경매에 12개뿐인데 14개 구매로 나왔다
    • Source.Best 에 at={line, rank, source} — 같은 전문기술 레시피는 그 구간에서 배울 수 있으면(Optimize.Allowed 와 같은 규칙) 만들기 후보
    • 대기열은 지금 숙련도 기준 그대로
    • 안 배운 레시피로 만드는 재료에 '(325+15에 기술전문가에게 배움)' / '(…부터, 도면 필요)' 표시
    • 테스트: 회귀 [12] 추가, 스텁에 GetLocale (폰트 수정 뒤 깨졌던 것)
      Co-Authored-By: Claude Opus 5 noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_01FsbLkHt3V3VtgqetF24E2s
  • 올리기 경로: 현재·목표 칸을 탭 제목처럼 '300+15' 로 표시
  • 폰트: 한/중 클라에서 좁은 글꼴(ARIALN)을 기본 글꼴로 — 파티 제목 등 한글 □ 깨짐
    ARIALN.TTF 는 라틴 전용이라 원본 클라 폰트를 쓰는 사람에게 head/tiny/num 글꼴의 한글이 두부로 나왔다.
    Co-Authored-By: Claude Opus 5 noreply@anthropic.com
    Claude-Session: https://claude.ai/code/session\_01FsbLkHt3V3VtgqetF24E2s
  • 대기열 정지: SpellStopCasting 호출 제거
    불성에서 보호 함수라 애드온이 부르면 ADDON_ACTION_FORBIDDEN 이 쌓였다.
    정지는 다음 레시피로 넘어가지 않기까지만 하고, 진행 중인 반복은
    움직이거나 ESC 로 끊도록 안내한다.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
    Claude-Session: https://claude.ai/code/session\_01NU39r3GxcgNEpYZdKBSJYj
  • 자동 전체검색은 ICC 창이 열려 있을 때만, 설정창 슬라이더 정렬
  • 제작 대기열 대폭 보강: 스킬렛식 전단계 자동 예약, 사기/만들기 규칙, 종족 보너스·만숙 반영
    대기열·제작
    • 스킬렛이 숨긴 제작창도 열린 것으로 인식 (TRADE_SKILL_SHOW/CLOSE 이벤트)
    • 줄마다 [제작] 단추, 실패·중단 이유를 채팅 진단 + 가운데 경고로 ("모루 필요" 등)
    • 만들어서 대기로 정한 재료는 그 제작을 소비 줄 앞에 자동 예약 (스킬렛 queueAppendReagent 방식)
    • 뒤 예약이 쓸 중간 재료가 가방에 있으면 앞 예약을 줄임
    • 전문화 퀘스트 줄: 퀘스트 물건을 재료로 취급, 다 모이거나 전문화를 배우면 대기열에서 빠짐
    • 제작 줄 이름을 제작창 실제 난이도 색으로, /icc 재료 진단 명령
      사기 vs 만들기
    • 가방·은행 밑재료로 만들 수 있으면 제작 (대기열에 그 제작이 있으면 배운 기록 없어도)
    • 밑재료가 경매에 모자라면 완성품 구매, 완성품이 모자라면 제작 (자동)
    • 채광이 있으면 제련 비교 (제련술 시전), 드랍 전용 도면은 오늘 경매장에 있을 때만 대체 후보
    • 경매장 열면 1시간 넘은 전체검색 자동 실행 (설정), 오래되면 창 상단 안내
      숙련도·경로
    • 배운 레시피를 채팅 문구·기술전문가 창에서 바로 반영
    • 종족 보너스(노움 기계공학 +15 등)를 뺀 숙련도로 색·확률·경로 계산, 표시는 300+15
    • 목표는 배운 만숙까지만 계산 (입력칸 값은 유지)
    • 구간 횟수를 숙련 확률 평균으로 (가이드가 넉넉하면 줄이고 뒤 구간 재료 몫은 남김)
    • 올리기 경로 색을 스킬렛처럼 지금 숙련도 기준, 노랑 경계 숫자에서는 주황
      tools/test_queue.py 13항목, tools/test_smelting.py 11항목 추가
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_01NU39r3GxcgNEpYZdKBSJYj
  • 전문화 선택, 목표에서 잘린 뒤 구간 몫 빼기, 미미한 절약 무시
    • 전문기술 단추 우클릭으로 전문화 선택 (기계공학·대장기술·가죽세공·재봉술·연금술)
      • 전문화 전용 레시피는 고른 전문화일 때만 최저가 후보
      • 아직 안 배웠으면 전문화 퀘스트 물건을 요구 숙련도 구간 앞에 경로 지출로 넣음
      • 자료: cMaNGOS tbc-db (기술전문가·퀘스트), 이름은 게임 데이터·Questie 한글
        (tools/specs.py -> Data/Recipes.lua ns.specs / ns.recipeSpec)
      • 기술명 줄 위 조작 안내, /icc 전문화 확인 명령
    • 목표 숙련도가 뒤 구간을 잘라내면 그 구간 재료로 미리 만들던 횟수를 뺀다
      (기계공학 목표 355: 아다만타이트 형틀 50 -> 29회)
    • 최저가 대체는 1골드 이상 싸질 때만
      Co-Authored-By: Claude Opus 5 noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 목록 스크롤 위치 유지, 이름 뒤 조사 자동 선택, 특성명 정정
    • 가방·시세·숙련도 갱신으로 목록을 다시 채울 때 스크롤을 맨 위로 올리지 않는다
      (전문기술·보기가 바뀔 때만 초기화)
    • ns.Josa: 받침에 맞춰 을/를·이/가·은/는·과/와·으로/로 선택
      ("채광와 함께" -> "채광과 함께", "(으)로"·"을(를)" 표기 제거)
    • 도면 툴팁 문장 정리 ("몇 개인지 모름였습니다")
    • 추천 탭 특성명 대체값을 게임 데이터(TalentTab koKR)에 맞춤: 정기·고양·회복
      Co-Authored-By: Claude Opus 5 noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 숙련 확률 공식 적용, 도면 출처 필터, 경매장전체검색·와우헤드 링크
    • 숙련 확률을 클래식 공식((회색-숙련)/(회색-노랑))으로 계산하고, 가이드 횟수가
      기대값보다 적으면 늘려 잡는다 (늘린 줄은 주황 표시)
    • 배운 레시피는 지금 숙련도 이상 구간에서만 쓸 수 있게 (7개 전문기술 전수조사)
    • 최저가 대체 후보 도면은 경매장 시세가 있거나 Questie 불성 DB 에 출처가 있는 것만
    • 옥셔네이터 시세 갱신(구매 탭 새로고침 포함)을 받아 경로·대기열 재계산,
      하단에 최종 검색 시간 표시
    • 올리기 경로 탭에 '경매장전체검색' 단추
    • 목록 줄 Ctrl+클릭: 와우헤드 링크 창, Shift+클릭: 채팅창에 링크
    • tools/audit_full.py: 전문기술 전체 경로 감사
      Co-Authored-By: Claude Opus 5 noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 재료 조달을 "사기 vs 만들기"로, 최저가 판정을 색 우선으로
    올리기 경로가 실제로 만들 수 있고 실제로 싼 길을 고르도록 여러 군데를 고쳤다.
    게임에서 확인하며 하나씩 드러난 것들이다.
    최저가 판정
    • 색을 가격보다 먼저 본다. 주황이 있으면 노랑·초록은 보지 않는다. 초록은
      다섯 번 만들어 한 점 오르는 수준이라, 싸다고 고르면 돈을 다 써도 목표
      숙련도에 못 닿는다. 대체는 주황·노랑으로만 한다.
    • 구간 일부만 남았을 때 제작 횟수가 이중으로 깎이던 것을 고쳤다 (156-185 구간을
      180 에서 보면 5회여야 하는데 1회로 나왔다).
    • 아직 안 배운 레시피는 도면 값도 구간 비용에 넣는다. 75금짜리 주문식이
      필요한 레시피가 "재료 16금이라 제일 싸다"고 뽑히던 문제.
    • 도구 구간(마법막대·스패너)은 대체 대상에서 뺀다. 선택지(alt) 구간은 대체
      대상에 넣는다.
      요구 숙련도
    • 기술전문가 레시피의 요구 숙련도는 게임 데이터에 없다(서버만 안다). 기술전문가
      창을 열면 읽어서 계정 단위로 저장한다. 어림짐작(노랑 - 25)은 틀렸다 --
      마력 깃든 가죽은 노랑과 요구치가 같고 상급 마술봉은 9 이상 낮다.
      시세
    • 마지막 전체검색 값을 쓴다. "그날 최저가"를 쓰면 이미 팔린 값이라 제작비가
      절반으로 잡힌다. 같은 날 최저가의 20배를 넘는 값만 이상 매물로 걸러 낸다.
    • 경매장 수량은 전체검색이 넘겨주는 값을 가로채 저장한다. 옥셔네이터의 a 는
      그날 최대치라 지금 살 수 있는 수량을 알 수 없다.
      재료 조달 (ICCSource.lua)
    • 재료마다 "사는 것"과 "더 싼 재료로 만드는 것" 중 싼 쪽을 고른다.
      상급 황천의 정수 7금 vs 하급 3개 6금 같은 경우.
    • 변환 21종을 데이터에 추가했다. SkillLineAbility 에 없어 빠져 있었다.
      개수는 SpellReagents + 대상 1개다 (정수 3개, 근원 10개 -- 게임과 일치).
    • ItemEffect TriggerType 0 이면 아이템 사용 변환이라 직업·숙련도가 필요 없다.
    • 총액·장바구니·대기열·경매장 검색이 모두 밑재료 기준으로 움직인다. 우편 추적도
      밑재료로 내려가서, 하급을 사 오면 개수가 줄어든다.
    • 밑재료가 경매장에 모자라면 경고만 하고, 바꿀지는 사용자가 줄을 눌러 정한다.
      그 밖에
    • 레시피 이름을 제작창 난이도 색으로 칠한다.
    • 도면 줄에 귀속·한정·시세·매물 수량을 보여 준다. 획득시 귀속이면 경매장에서
      살 수 없다고 적는다.
    • 인벤 가이드 메모 중 오리지널 기준으로 남아 있던 구입처를 지웠다. 생성기가
      DBC 와 대조해 다시 생기지 않게 한다.
    • "남는 결과물" 표시 제거. 회수액처럼 보이지만 이상 매물 하나에 흔들린다.
    • tools/audit_route.py 추가 (전문기술 7종 대체 점검).
    • test_optimize 에 회귀 검사 4개 추가.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 구매할 재료를 경로에서 먼저 쓰는 순서로
    비싼 것부터 늘어놓고 있어서 상급 재료가 위로 왔다. 경로에서 처음 쓰는 구간
    순서로 바꾸니 숙련도가 낮은 구간의 재료가 위로 와, 하급 재료부터 보인다 --
    사러 다니는 순서와도 같다. 같은 구간에서 쓰는 것끼리는 비싼 쪽을 위로 둔다.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
    Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 최저가 경로를 '가이드 + 구간 대체'로 바꿈
    처음엔 바닥부터 새 경로를 짰는데, 가이드가 사람이 검증한 정본이라는 점을
    살리는 쪽이 맞았다. 이제 가이드를 뼈대로 두고 더 싸게 되는 구간만 바꾼다.
    • 구간 하나만 떼어 견주면 틀린다. 앞 구간이 만든 물건을 뒤 구간이 쓰는
      경우가 있어(수은 아다만타이트 -> 무거운 아다만타이트 반지) 그 구간만 싸
      보여도 총액이 오른다. 실제로 보석세공에서 148 -> 160금으로 늘어났다.
      그래서 바꿔 본 뒤 전체 총액이 내려갈 때만 남긴다.
    • 후보 기본값을 '전부'로 두었다. 도면은 한정 판매라도 대체로 구할 수 있다는
      사용자 판단에 따른 것이고, 필요한 도면은 구간에 적어 준다.
    • 바뀐 구간에 '대체' 표시와 툴팁(원래 레시피, 절약액)을 붙였다.
      지금 시세 기준(300->375): 마법부여 3362 -> 2577금, 연금술 330 -> 236금,
      보석세공 148 -> 141금. tools/test_optimize.py 가 "총액이 절대 늘지 않는다"를
      전 전문기술에서 확인한다.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 시세 기준 최저가 올리기 경로 추가
    인벤 가이드가 정본이지만 시세는 서버·시점마다 달라서, 지금 시세로 더 싼 길이
    있으면 보여 준다. 숙련 1점당 기대비용(1회 재료비 / 숙련이 오를 확률)이 제일
    싼 레시피를 구간마다 고르고, 색이 바뀌는 경계마다 다시 고른다.
    • 재사용 대기시간이 있는 레시피는 뺀다. 그래서 SpellCooldowns 를 받아
      Data/Recipes.lua 에 cd 로 실었다 (변환 20시간, 태초의 달빛 옷감 92시간 등
      30개). 안 빼면 연금술 경로가 변환으로 채워진다.
    • 후보 범위를 고를 수 있다: 아는 것만 / 조련사 포함 / 전부. 도면을 따로
      구해야 하는 레시피는 구간에 도면 이름을 적고 몇 종 필요한지 알려 준다 --
      구하기 어렵거나 한정 판매인 도면을 피할 수 있게.
    • 조련사에게 배우는 레시피는 요구 숙련이 게임 데이터에 없어서, 노랑부터
      만들 수 있다고 보수적으로 본다. 못 만드는 걸 권하느니 더 싼 길을 놓친다.
      실제 시세로 재보면(이 서버 한 시점) 마법부여 3362->1816금, 기계공학
      2012->1412금, 연금술 330->152금은 최저가 쪽이 싸고, 대장기술·가죽세공·
      보석세공은 가이드가 싸다. tools/test_optimize.py 로 확인한다.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 제작 대기열에 숙련도 막대 추가
    지금 만들 전문기술의 숙련도(현재/최대)를 대기열 맨 위에 띄우고, 그 아래
    얇은 띠에 그 레시피의 난이도 구간(주황·노랑·초록·회색)을 칠한다. 제작하면서
    숙련이 오르는 게 보이고, 지금 숙련도에서 아직 오르는지도 한눈에 보인다.
    구간은 현재 등급 상한(GetSkillLineInfo 의 maxRank)에 맞춰 자른다. 예를 들어
    마법부여 38/75 에서 '손목보호구 - 최하급 생명력'(노랑 70)은 거의 전부 주황에
    오른쪽 끝만 노랑으로 나온다.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
    Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 마법부여: 보안 단추 대신 진짜 매크로를 만들어 준다
    애드온이 보안 단추에 macrotext 를 심는 방식은 통하지 않았다. 애드온이 쓴
    값은 오염(taint)돼서 결국 DoCraft 에서 막힌다 -- 스킬렛이 이 기능을 포기한
    것도 같은 이유다. 사용자가 직접 만든 매크로는 되는데, 매크로 글은 게임이
    보관하므로 실행할 때 깨끗해서다.
    • 보안 단추를 걷어내고, 'ICC마법부여' 매크로를 만들어(있으면 갱신하고)
      커서에 올려 주는 단추로 바꿨다. 행동 단축바에 놓고 누르면 된다.
    • 대상 아이템을 바꾸면 단추를 한 번 더 눌러 매크로를 갱신한다.
    • 안 쓰게 된 T.SecureButton / T.SetMacro 는 지웠다.
      참고로 진단에서 확인된 것: 이 클라는 /click, /use 도 등록돼 있어 한글 여부는
      문제가 아니었다. 그리고 스킬렛을 쓰면 블리자드 CraftFrame 을 숨기므로
      '제작창 닫힘'으로 보이는데, 매크로의 /click 은 그래도 통한다.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 매크로 슬래시 명령을 클라 언어에 맞추고, 대기열을 저장
    • 마법부여 매크로에 /click, /use 를 박아 두고 있었다. 한국 클라는 /클릭,
      /사용 이라 아무 일도 일어나지 않았다. 게임에 실제로 등록된 명령
      (SLASH_CLICK*, SLASH_USE*)을 찾아 쓴다.
    • /icc macro 로 들어간 매크로 글과 Craft 창·단추 상태를 찍어 볼 수 있게.
    • 대기열을 캐릭터별로 저장해 /reload 나 재접속 뒤에도 남긴다. 지우는 건
      '비우기' 로만.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 경매장에서 산 재료를 우편함에 들르기 전에도 셈
    경매장 구매는 우편으로 오는데 게임은 가방과 은행만 알려 주므로, 사고도
    부족 개수가 그대로였다.
    • 우편함을 열면(MAIL_SHOW / MAIL_INBOX_UPDATE) 내용을 캐릭터별로 기억한다
    • 그것만으로는 우편함에 들르기 전을 못 메우므로, PlaceAuctionBid 를 지켜봐
      즉시구매한 것을 그 자리에서 적어 둔다. 옥셔네이터도 이 함수를 쓰므로
      어느 쪽으로 사든 잡힌다
    • 입찰은 낙찰될지 알 수 없어 세지 않는다
    • 우편함을 열면 적어 둔 추측을 버리고 실제 목록으로 맞춘다 (스스로 교정)
    • 재료 줄에 (우편 N) 으로 표시하고 툴팁에서 갈라 보여 준다
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 대기열에 재료 내역과 경매장 검색을 붙임
    • 경매장 검색 단추를 올리기 경로 탭에서 제작 대기열 탭으로 옮기고, 검색
      대상을 대기열에 모자란 재료로 바꿨다.
    • 예약 줄 아래에 그 제작이 먹는 재료를 필요 개수와 부족 개수로 같이 보여
      준다. 부족분은 가방·은행을 다시 세어 내므로 사 오면 저절로 줄어든다.
      (BAG_UPDATE_DELAYED 로 이미 다시 그리고 있었다.)
    • 대기열 재료 계산을 Queue.Requirements 한 곳으로 모으고 상인 쪽이 그걸
      쓰게 했다. 예약별 내역과 합계를 같은 규칙으로 낸다.
    • 머리말에 모자란 재료 종수를 같이 적는다.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 마법부여를 매크로 보안 단추로 제작
    게임이 애드온의 DoCraft 를 막아 두었지만 매크로는 통한다 -- 매크로는 게임이
    직접 돌리는 보안 경로라서다. 사용자가 쓰던 매크로를 그대로 심은 보안 단추를
    대기열 탭에 붙였다.
    /click CraftCreateButton
    /use <대상 아이템>
    /click StaticPopup1Button1
    • 대상 아이템은 가방에서 집어 누르거나 끌어다 놓아 정한다 (우클릭 지우기).
      안 정하면 /use 줄이 빠지고 커서로 직접 고르면 된다.
    • 매크로 글은 전투 중에 못 바꾸고, 보안 단추는 전투 중에 보이기/숨기기도
      막혀 있어 그때는 건드리지 않는다.
    • 앞서 넣었던 CraftFrame_SetSelection 자동 선택을 뺐다. 애드온이 쓴 값은
      오염돼서 정작 매크로의 DoCraft 까지 막는다 -- 도와주려다 유일하게 되는
      길을 끊는 셈이었다. 레시피는 사용자가 창에서 고른다.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 직접 만든 것도 대기열에서 빠지게
    제작 완료를 우리가 시킨 제작에서만 세고 있었다. 그래서 제작창에서 직접
    누른 것은 만들어도 예약에 그대로 남았고, 자동 제작이 막힌 마법부여는
    아예 줄어들 길이 없었다.
    • UNIT_SPELLCAST_SUCCEEDED 를 진행 중이 아닐 때도 계속 듣는다
    • 완료 처리를 Q.Complete 로 분리하고, 대기열 맨 앞이 아니라 그 레시피를
      찾아서 뺀다 (중간 것을 직접 만들어도 맞게 빠진다)
    • 예약에 없는 주문은 무시한다
    • CRAFT_CLOSE 도 제작창 닫힘으로 본다
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 마법부여가 다른 제작창(Craft)을 쓰는 것을 반영
    '진행'이 안 먹던 진짜 이유. 불성에서 마법부여는 TradeSkill 창이 아니라
    Craft 창을 쓴다. 그래서 GetTradeSkillLine 은 nil 을 주고, 제작창이 열려
    있어도 우리 코드는 닫힌 것으로 봤다.
    • 열린 창을 볼 때 CraftFrame/GetCraftName 도 같이 본다
    • Craft 쪽 레시피는 숫자 ID 가 없어 이름(GetSpellInfo)으로 찾는다
    • 만들 수 있는 횟수도 GetCraftInfo 에서 읽는다
    • CRAFT_SHOW/UPDATE/CLOSE 를 받아 스캔·자동 열기·이어서 시작에 반영
    • DoCraft 는 블리자드 UI 전용으로 막혀 있어 애드온이 대신 만들 수 없다
      (스킬렛도 같은 제약). 창에서 그 레시피를 골라 주고, 직접 누르라고 알린다
      테스트를 짜다 같이 고친 것: 대기열을 비워도 진행 상태가 남아 다음 '진행'이
      정지로 먹던 문제.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 제작 대기열 탭을 두 번째로, 진행 단추가 제작창까지 열고 실행
    • 탭 순서: 올리기 경로 / 제작 대기열 / 추천 / 마진
    • '진행'은 제작창이 닫혀 있으면 그 전문기술 주문을 시전해 창을 연 뒤,
      창이 뜨면(TRADE_SKILL_SHOW) 이어서 제작을 시작한다. 다른 전문기술 창이
      열려 있으면 맞는 창으로 바꿔 연다.
    • 전문기술을 바꿔 열 때는 옛 창이 닫히는 TRADE_SKILL_CLOSE 가 먼저 오는데,
      거기서 대기 표시를 지우고 있어 새 창이 떠도 시작하지 못했다. 지우지 않고
      10초 시간 제한으로 거르게 바꿨다.
    • 분류가 접혀 있으면 레시피가 제작창 목록에 아예 안 나온다. 못 찾으면 한 번
      펴고 다시 찾는다. 사용자가 걸어 둔 이름 검색은 건드리지 않는다.
      tools/test_queue.py 로 진행 -> 창 열기 -> DoTradeSkill -> 제작 완료마다 예약
      감소 -> 전문기술 전환까지 게임 밖에서 따라가 확인한다.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 상인 단추: 한정 판매도 구매, 자리 옮기기 가능
    스크린샷으로 확인해 보니 단추는 잘 뜨고 있었고, 상인 창 바로 위라 화면
    최상단 기본 UI 와 겹쳐 눈에 안 띄었던 것이었다.
    • 기본 자리를 상인 창 오른쪽 바깥으로 옮기고, 끌어서 옮기면 그 자리를
      기억한다. 설정의 '창 위치 초기화'가 이 자리도 되돌린다.
    • 한정 판매 물건을 건너뛰던 것을 고쳤다. 전문기술 용품 상인은 정수·가루를
      한정 수량으로 파는 일이 많아서 건너뛰면 정작 필요한 걸 못 산다.
      파는 만큼으로 줄여 사고, 모자라면 툴팁에 얼마가 모자란지 적는다.
    • 테스트도 새 동작에 맞춰 갱신 (재고 3개뿐일 때 6개 요구를 3개로 줄이고,
      스택 크기로 잘라 20 + 15 + 3 으로 부르는 것까지 확인).
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 상인 구매 결과를 채팅에 남기고, 단추 위치를 화면 밖으로 안 나가게
    진단으로 단추가 보이는 것은 확인됐으니 남은 문제는 두 가지였다.
    • 살 것이 한두 개면 눌러도 티가 안 난다. 상태줄은 애드온 창에만 뜨므로,
      스킬렛처럼 구매 내역을 채팅에도 남긴다.
    • 단추를 상인 창 위에 붙이는데 창이 화면 상단에 붙어 있으면 잘린다.
      그 경우 아래쪽으로 내린다.
    • /icc merchant 가 살 목록과 단추 위치까지 찍는다.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 상인 단추가 안 뜨던 문제 수정
    MERCHANT_SHOW 는 블리자드가 상인 창을 띄우기 전에 오는 경우가 있어서,
    그 순간 MerchantFrame:IsShown() 이 false 였고 단추를 숨기고 끝났다.
    • 창이 떠 있는지를 IsShown 대신 MERCHANT_SHOW ~ MERCHANT_CLOSED 로 직접
      추적하고, 창의 OnHide 도 같이 물린다
    • 품목은 MERCHANT_SHOW 직후에 채워지므로 갱신을 한 프레임 뒤로 미룬다
    • strata 를 DIALOG 로 올려 상인 창에 가리지 않게 한다
    • /icc merchant 로 대기열·필요 재료·상인 품목·단추 상태를 찍어 볼 수 있게
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 상인에서 대기열 재료 한 번에 구매
    스킬렛과 같은 기능. 대기열에 예약이 있는 상태로 상인을 열면 그 상인이 파는
    재료를 한 번에 사는 단추가 상인 창 위에 뜬다.
    • 대기열이 중간 재료를 만드는 예약을 같이 들고 있으면 그건 사지 않는다
      (두루마리를 만들 예정이면 두루마리를 사지 않는다)
    • 가방·은행에 있는 만큼은 빼고 센다
    • 한정 판매 물건(numAvailable ~= -1)은 건드리지 않는다. 수량이 정해져 있어
      원하는 만큼 못 사면 산 것과 셈이 어긋난다
    • BuyMerchantItem 은 한 번에 한 스택까지만 받으므로 스택 크기로 잘라 부르고,
      한 번에 80회까지만 불러 큰 주문은 나눠 누르게 한다
      tools/test_merchant.py 로 네 가지를 게임 밖에서 검증한다: 중간 재료 제외,
      보유량 차감, 묶음 판매 구매 횟수 올림, 스택 단위 호출 분할.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 구간 단위 예약, 좌클릭 제작창 열기, 보유 재료 차감
    • 목록 줄이 우클릭을 받도록 하고, 구간 줄 우클릭은 그 구간만, 만들 것 줄
      우클릭은 그 레시피만 대기열에 넣는다. 마진 탭도 같은 규칙으로 맞췄다.
    • 좌클릭하면 그 전문기술 제작창을 연다. 게임은 전문기술 주문을 시전해야
      제작창이 열리므로 클릭 핸들러에서만 부르고, 이름은 게임이 쓰는 이름을
      그대로 기억해 두고 쓴다. (레시피를 창에서 직접 선택하는 API 는 2.5 에
      없어서 창을 여는 데까지만 한다.)
    • 시작 숙련도를 현재 숙련도에 맞춰 따라가는 '자동' 상태를 기본으로 두고,
      숙련도가 오르면(CHAT_MSG_SKILL) 다시 계산한다. 구간을 완료하면 남은
      구간과 구매할 재료가 저절로 줄어든다.
    • 가방·은행에 있는 재료를 구매 목록에서 뺀다. 재료를 대는 순서는 앞 구간
      제작분 -> 보유분 -> 구매이고, 각 갈래를 풀에서 깎아 써서 여러 구간에
      걸쳐도 이중으로 세지 않는다. 설정에서 끌 수 있다.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 돈 표기를 동전 아이콘으로, 구간별 재료 줄 아이콘 겹침 수정
    • 금·은·동 글자 대신 동전 아이콘을 붙인다. ElvUI 가 켜져 있으면 ElvUI 의
      동전 시트를 그대로 쓰고, 없으면 게임 기본 동전 아이콘으로 떨어진다.
      ElvUI 를 필수로 만들지 않으려고 텍스처를 복사해 오지 않았다.
    • "남는 결과물 N 어치" -> "남는 결과물 N 정도"
    • 구간별 재료 목록에서 아이콘이 이름과 겹치던 문제: 재료 줄이 아이콘을
      안쪽으로 밀어 놓는데, 스크롤로 그 줄이 다른 종류로 재사용될 때 위치를
      되돌리지 않아 생겼다. 매번 기본 자리로 초기화하고 시작한다.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 애드온 안 문구를 설명톤으로 통일
    사용자에게 보이는 문구가 반말이라 애드온 말투로 맞지 않았다. 상태 메시지·
    툴팁·설정 설명·추천 사유를 합니다체로 바꾸고, 줄임말도 정식 용어로 통일했다
    (기공 -> 기계공학, 보세 -> 보석세공, 마부 -> 마법부여, 공대 -> 공격대,
    공속 -> 공격 속도).
    라벨(마진, 진행, 빼기 등)은 명사 그대로 두었다. 코드 주석은 원래 평서체라
    건드리지 않았다.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
    Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 특성 읽는 자리를 클라 반환 형식에 맞춤
    GetTalentTabInfo 가 이 클라에서는 (id, 이름, 설명, 아이콘, 점수) 를 주는데
    (이름, 아이콘, 점수) 로 읽고 있었다. 설명 문자열에 산술을 해서 창을 열 때
    바로 터졌다.
    첫 값이 숫자인지로 두 형식을 갈라 읽고, 점수를 못 읽으면 터지는 대신
    "특성 전체 보기"로 물러난다. 표시할 특성 이름도 우리 자료 대신 게임이
    알려 준 이름을 쓴다.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
    Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 직업·특성별 추천 전문기술 추가
    캐릭터의 직업과 주 특성(특성창 탭 중 점수가 제일 많은 쪽 -- 불성엔
    GetSpecialization 이 없다)을 보고 권장 조합과 이유, 375 까지 드는 비용을
    보여 주는 '추천' 탭. 전문기술 줄에도 별표로 표시한다.
    자료는 Wowhead / NotTooLateForClassic / NoobToBoss 의 불성 전문기술 공략을
    추린 편집 자료라, 자동 생성 데이터와 구분해 Data/Recommend.lua 에 두고
    출처와 "참고용"임을 화면에도 적었다.
    조사 중 확인한 것: 대장기술의 팔목·장갑 소켓 추가는 리치왕 기능이라
    불성 설명에서 뺐다. 불성 대장기술의 자기 몫은 전문화 착용 귀속 제작품이다.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
    Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 전문기술 표가 생성 데이터에서 빠져 있던 것 수정
    build_data.py 에 ns.skillLines / ns.order 를 넣는 패치가 조용히 안 먹어서
    Data/Recipes.lua 에 그 두 표가 없었다. 애드온은 이 표로만 캐릭터가 배운
    전문기술을 알아내므로, 전문기술 인식이 통째로 안 되고 UI.line 이 nil 로
    남아 "내 숙련도" 를 누르면 table index is nil 로 터졌다.
  • 설정 열 때 나던 오류 수정
    Settings.RegisterCanvasLayoutCategory 가 돌려준 category 의 ID 를 애드온
    이름으로 덮어쓰고 있었다. OpenToCategory 는 그 ID 를 숫자로 받으므로
    "설정"을 누르는 순간 C_SettingsUtil.OpenSettingsPanel 에서 터졌다.
    ID 를 건드리지 않고, 열 때도 GetID() 를 우선 쓰고 pcall 로 감싼 뒤
    예전 API -> 설정 창 띄우기 순으로 물러나게 했다.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
    Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 미니맵 버튼과 설정 화면 추가
    • 미니맵 버튼: LibDataBroker + LibDBIcon (HidingBar 등에 잡히도록).
      왼쪽 클릭 창, 오른쪽 클릭 설정. 툴팁에 숙련도·대기열 상태.
    • 설정 > 애드온 에 설정판 등록. Blizzard 위젯 대신 애드온 테마 위젯으로
      그려서 본 창과 생김새가 같다. Settings / InterfaceOptions 양쪽 지원.
    • 설정 항목: 미니맵 버튼, 가격 기준(싼 쪽/경매장/상점), 재료 여유분,
      창 배율, 제작창 열면 같이 열기, 마진 탭 기본값. 창 위치 초기화와
      숙련도 다시 읽기 단추도.
    • 여유분은 재료가 아니라 제작 횟수를 늘린다 -- 재료만 늘리면 결과물·재사용
      계산과 어긋난다.
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • 선택지 상태를 전문기술별로 분리
    구간 번호는 전문기술마다 다른 구간을 가리키는데 선택 상태를 한 테이블에
    몰아 둬서, 전문기술을 바꾸면 남의 선택이 엉뚱한 구간에 먹었다.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
    Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E
  • IberisCraftCost 1.0.0: 전문기술 올리기 비용 계산 애드온
    불성 7개 전문기술 1-375 올리기 경로를 숙련도 구간별 재료 목록과 함께
    보여주고, 옥셔네이터 시세로 총액을 낸다.
    • 재료/숙련 구간은 클라 DBC(2.5.6.69546)에서 생성, 올리는 순서는 인벤 가이드
    • 앞 구간 결과물이 뒷 구간 재료면 만든 걸 먼저 쓴다 (이중 구매 방지)
    • 가격은 경매장/상점 중 싼 쪽 (상점 무한판매 재료의 경매장 되팔이 값 회피)
    • 스킬렛식 예약/제작 단추와 옥셔네이터 쇼핑목록 검색 연동
    • UI 는 ShamanPower 설정창 룩앤필 (Blizzard 템플릿 미사용)
      Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
      Claude-Session: https://claude.ai/code/session\_017q9yyHQao2ca2AfN1Pra4E

This mod has no additional files