Project_WL/AgentScripts/WL894_Probe.cs

84 lines
4.5 KiB
C#

// 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(); }
/// <summary>#895 — 낀 무기의 능력치 계산식(일반 = 효과 없음) · 장비 공격 합 · 무기 스킬 칸(주력 희귀 · 각성 불멸).</summary>
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;
}
}