static bool PrefixOcPlcheckAct_Put(OcPlEquipCtrl ____EquipCtrl) { try { OcItem itemData = ____EquipCtrl.getWpMain()?.Item; if (itemData != null) { var id = itemData.Id; var registry = RegistryManager.Inst.GetRegistry <Item>(); var item = registry.GetElementById(id); var result = item?.PutHandler?.IsPuttable(); return(!result.HasValue || result.Value); } } catch (Exception e) { Logger.Inst.LogException(e); } return(true); }
// 装備品一覧の取得 internal static HashSet <OcPlEquip> GetPlEquips(OcPlEquipCtrl plEquipCtrl) { if (plEquipCtrlCorrespondedplEquips.TryGetValue(plEquipCtrl, out var plEquips)) { return(plEquips); } else { // OcPlEquipCtrlがDestoryされるタイミングがわからないので、新規追加のタイミングでDictionary中のOcPlEquipCtrlの存在チェックを実施する foreach (var destroyedPlEquipCtrl in plEquipCtrlCorrespondedplEquips.Keys.Where(key => key == null).ToArray()) { plEquipCtrlCorrespondedplEquips.Remove(destroyedPlEquipCtrl); } foreach (var destroyedPlEquipCtrl in originalParentTransform.Keys.Where(key => key == null).ToArray()) { originalParentTransform.Remove(destroyedPlEquipCtrl); } var newPlEquips = new HashSet <OcPlEquip>(); plEquipCtrlCorrespondedplEquips.Add(plEquipCtrl, newPlEquips); return(newPlEquips); } }
// 装備変更のタイミングで装備品リストを更新(追加) static void Postfix(OcPlEquipCtrl __instance, OcEquipSlot __state) { EquipAdjustPos_OcPlEquipCtrl_lateMove.GetPlEquips(__instance).Add(__instance.getEquip(__state)); }
static bool Prefix(OcPlEquipCtrl __instance, OcItem item, OcEquipSlot equipSlot, out OcEquipSlot __state) { __state = equipSlot; return(true); }