// WL894_Probe.cs — PD 지시 #894 시험(Play 중 · 섬) // Kit : 시작 지급 결과(무기 · 시너지 짝 장갑 · 신발) · 인벤토리 장갑/신발 · 낀 장비 · 파츠 스킬 구성(무기 시너지 성립 · 발동 수) // Cheat(t) : 숫자 키와 같은 함수(WLWeaponGradeCheat.Apply) → 낀 장비 · 파츠 스킬 구성 // EquipGroup : 그 그룹 아이템을 인벤토리에서 찾아 장착(시험용) using System.Text; using UnityEngine; using WL.Equip; public static class WL894_Probe { static string Equipped() { var sb = new StringBuilder(); for (int t = (int)eFREquipmentType.Weapon; t < (int)eFREquipmentType.Max; t++) { var e = WLInventory.EquippedInSlot((eFREquipmentType)t); if (e == null || e.itemJson == null) continue; sb.Append((eFREquipmentType)t).Append('=').Append(e.itemJson.Item_name).Append('(').Append(e.itemJson.GroupNo).Append(' ').Append(WLEquipGrades.Label(e.itemJson, false)).Append(") "); } return sb.ToString(); } static string Syn() { var L = WL.PartSkill.WLPartSkillState.Current; string s = L != null ? L.summary : "-"; var run = WL.PartSkill.WLPartSkillRunner.Instance; if (run != null) foreach (var k in run.Skills) if (k != null && k.def != null && k.def.kind == WL.PartSkill.WLPartKind.WeaponSyn) s += " | " + k.def.key + " 성립=" + k.syn + " 발동=" + k.casts; return s; } public static object Kit() { WLInventory.EnsureLoaded(); var sb = new StringBuilder(); sb.Append("지급 ").Append(WL.Combat.Weapon.WLStarterKit.Granted).Append(" · 짝 ").Append(WL.Combat.Weapon.WLStarterKit.PartnersGranted) .Append(" · 짝 장착 ").Append(WL.Combat.Weapon.WLStarterKit.PartnersEquipped).Append('\n').Append(WL.Combat.Weapon.WLStarterKit.LastLog).Append('\n'); int gl = 0, sh = 0; foreach (var it in WLInventory.SortedItems()) { if (it == null || it.itemJson == null) continue; if (it.itemJson.EquipmentType == eFREquipmentType.Glove) { gl++; sb.Append("장갑 ").Append(it.itemJson.Item_name).Append('(').Append(it.itemJson.GroupNo).Append(") "); } if (it.itemJson.EquipmentType == eFREquipmentType.Shose) { sh++; sb.Append("신발 ").Append(it.itemJson.Item_name).Append('(').Append(it.itemJson.GroupNo).Append(") "); } } sb.Append("\n장갑 ").Append(gl).Append(" · 신발 ").Append(sh).Append("\n낀 장비: ").Append(Equipped()).Append("\n파츠: ").Append(Syn()); return sb.ToString(); } public static object Cheat(int tier) { var r = WL.Combat.Weapon.WLWeaponGradeCheat.Apply(tier); return r + "\n낀 장비: " + Equipped() + "\n파츠: " + Syn(); } public static object State() { return "낀 장비: " + Equipped() + "\n파츠: " + Syn(); } /// #895 — 낀 무기의 능력치 계산식(일반 = 효과 없음) · 장비 공격 합 · 무기 스킬 칸(주력 희귀 · 각성 불멸). public static object WeaponInfo() { var w = WLInventory.EquippedInSlot(eFREquipmentType.Weapon); var sb = new StringBuilder(); if (w != null && w.itemJson != null) sb.Append(w.itemJson.Item_name).Append(' ').Append(WLEquipGrades.Label(w.itemJson, false)).Append(" · 효과 없음=").Append(WLEquipGrades.NoEffect(w.itemJson)) .Append('\n').Append(WLEquipStats.FormulaText(w)).Append('\n'); sb.Append("장비 공격 합 ").Append(WLEquipStats.LastEquipAttack.ToString("0.#")).Append('\n'); var slots = WL.Combat.Weapon.WLWeaponSkillSlots.LastSlots; sb.Append("무기 스킬 칸 [").Append(slots != null ? string.Join(",", System.Array.ConvertAll(slots, x => x.ToString())) : "-").Append("] 등급 ").Append(WL.Combat.Weapon.WLWeaponSkillSlots.LastTier) .Append(" | 명중 연결 ").Append(WL.Combat.Weapon.WLSkillChain.Triggered).Append('/').Append(WL.Combat.Weapon.WLSkillChain.Cast); return sb.ToString(); } public static object EquipGroup(int groupNo) { if (!WLInventory.EnsureLoaded()) return "인벤토리 로드 실패"; foreach (var it in WLInventory.SortedItems()) if (it != null && it.itemJson != null && it.itemJson.GroupNo == groupNo) return "장착 " + groupNo + " " + it.itemJson.Item_name + " → " + WLInventory.Equip(it.rawItem._id); return "인벤토리에 없음 " + groupNo; } }