이걸 기반으로 수도사의 scanDispel을 수정하면 다음과 같습니다.
elseif class == "MONK" then
function scanDispel()
lib.tranquilize = nil
lib.harm = nil
wipe(lib.help)
lib.help.Poison = (IsPlayerSpell(388874) or IsPlayerSpell(115310) or IsPlayerSpell(388615)) and true or nil
lib.help.Disease = lib.help.Poison
lib.help.Magic = (IsPlayerSpell(115450) or IsPlayerSpell(388874) or IsPlayerSpell(115310)) and true or nil-- 115450 bug
end
lib.help.Poison, lib.help.Disease, lib.help.Magic이 순서대로 독, 질병, 마법 해제이고
IsPlayerSpell은 시전자가 해당 스킬을 배웠는지 확인하는 함수입니다.
※ 원래는 IsSpellKnown 함수가 사용되어 있었는데, 구글링을 해 보니
특성으로 배운 passive 즉, 지속 효과 스킬은 체크되지 않는다는 내용이 있어서
문제 없이 다 체크 가능하다는 IsPlayerSpell로 변경했습니다.
정리하자면, lib.help.Poison은 시전자가 해독 연마 혹은 재활 혹은 회복 스킬을 배웠다면
독 해제가 가능한 것으로 간주한다는 뜻입니다.
※ lib.help.Magic에 115450 bug라는 주석이 있는데, 어떤 버그인지는 정확히 모르겠지만
IsSpellKnown을 IsPlayerSpell로 바꾸면서 해결이 된 것 같은데, 혹시 아니라면 댓글 부탁드립니다.
하나 더 예를 들어 보면, 현재 주술사 해제 스킬은 다음과 같습니다.
스킬명 / 효과 / 스킬 ID
영혼 정화 / 마법 해제 / 77130 -- 기본 스킬
영혼 정화 연마 / 마법, 저주 해제 / 383016 -- 공용 특성
독 정화 토템 / 독 해제 / 383013 -- 공용 특성
여기에 적 마법 효과 제거 스킬이 있습니다.
스킬명 / 효과 / 스킬 ID
정화 / 마법 효과 1개 제거 / 370 -- 공용 특성
상급 정화 / 마법 효과 2개 제거 / 378773 -- 공용 특성
이걸 기반으로 주술사의 scanDispel을 수정하면 다음과 같습니다.
elseif class == "SHAMAN" then
function scanDispel()
lib.tranquilize = nil
lib.harm = (IsPlayerSpell(370) or IsPlayerSpell(378773)) and true or nil
wipe(lib.help)
lib.help.Poison = IsPlayerSpell(383013) and true or nil
lib.help.Curse = IsPlayerSpell(383016) and true or nil
lib.help.Magic = (IsPlayerSpell(77130) or IsPlayerSpell(383016)) and true or nil
end
같은 문제가 있으신 분들은 먼저 본인 직업과 특성에서 디버프 해제가 가능한 스킬 ID와
각 스킬이 해제할 수 있는 디버프 종류를 먼저 확인하신 뒤
LibRealDispel-1.0 파일 내용을 수정해 보세요.
수정 내용을 댓글로 공유해 주시면 다른 분들께 많은 도움이 되리라 생각합니다.