public void EquipItem(S.EquipItem p) { MirItemCell fromCell; MirItemCell toCell = EquipmentCells[p.To]; switch (p.Grid) { case MirGridType.Inventory: fromCell = GetCell(Inventory.Cells, p.UniqueID) ?? GetCell(BeltCells, p.UniqueID); break; /*case MirGridType.Storage: * fromCell = StorageDialog.GetCell(p.UniqueID) ?? BeltDialog.GetCell(p.UniqueID); * break;*/ default: return; } if (toCell == null || fromCell == null) { return; } toCell.Locked = false; fromCell.Locked = false; if (!p.Success) { return; } UserItem i = fromCell.Item; fromCell.Item = toCell.Item; toCell.Item = i; User.RefreshStats(); }
public static void EquipItem(S.EquipItem p) { GameManager.GameScene.EquipItem(p); }
public void EquipItem(MirGridType grid, ulong id, int to) { S.EquipItem p = new S.EquipItem { Grid = grid, UniqueID = id, To = to, Success = false }; if (Fishing) { Enqueue(p); return; } if (to < 0 || to >= Info.Equipment.Length) { Enqueue(p); return; } UserItem[] array; switch (grid) { case MirGridType.Inventory: array = Info.Inventory; break; case MirGridType.Storage: if (NPCPage == null || !String.Equals(NPCPage.Key, NPCObject.StorageKey, StringComparison.CurrentCultureIgnoreCase)) { Enqueue(p); return; } NPCObject ob = null; for (int i = 0; i < CurrentMap.NPCs.Count; i++) { if (CurrentMap.NPCs[i].ObjectID != NPCID) continue; ob = CurrentMap.NPCs[i]; break; } if (ob == null || !Functions.InRange(ob.CurrentLocation, CurrentLocation, Globals.DataRange)) { Enqueue(p); return; } array = Account.Storage; break; default: Enqueue(p); return; } int index = -1; UserItem temp = null; for (int i = 0; i < array.Length; i++) { temp = array[i]; if (temp == null || temp.UniqueID != id) continue; index = i; break; } if (temp == null || index == -1) { Enqueue(p); return; } if ((Info.Equipment[to] != null) && (Info.Equipment[to].Cursed) && (!UnlockCurse)) { Enqueue(p); return; } if ((temp.SoulBoundId != -1) && (temp.SoulBoundId != Info.Index)) { Enqueue(p); return; } if (Info.Equipment[to] != null) if (Info.Equipment[to].WeddingRing != -1) { Enqueue(p); return; } if (CanEquipItem(temp, to)) { if (temp.Info.NeedIdentify && !temp.Identified) { temp.Identified = true; Enqueue(new S.RefreshItem { Item = temp }); } if ((temp.Info.Bind.HasFlag(BindMode.BindOnEquip)) && (temp.SoulBoundId == -1)) { temp.SoulBoundId = Info.Index; Enqueue(new S.RefreshItem { Item = temp }); } if ((Info.Equipment[to] != null) && (Info.Equipment[to].Cursed) && (UnlockCurse)) UnlockCurse = false; array[index] = Info.Equipment[to]; Report.ItemMoved("RemoveItem", temp, MirGridType.Equipment, grid, to, index); Info.Equipment[to] = temp; Report.ItemMoved("EquipItem", temp, grid, MirGridType.Equipment, index, to); p.Success = true; Enqueue(p); RefreshStats(); //Broadcast(GetUpdateInfo()); return; } Enqueue(p); }
public void EquipItem(MirGridType grid, ulong id, int to) { S.EquipItem p = new S.EquipItem { Grid = grid, UniqueID = id, To = to, Success = false }; if (to < 0 || to >= Info.Equipment.Length) { Enqueue(p); return; } UserItem[] array; switch (grid) { case MirGridType.Inventory: array = Info.Inventory; break; case MirGridType.Storage: if (NPCPage == null || NPCPage.Key != NPCObject.StorageKey) { Enqueue(p); return; } NPCObject ob = null; for (int i = 0; i < CurrentMap.NPCs.Count; i++) { if (CurrentMap.NPCs[i].ObjectID != NPCID) continue; ob = CurrentMap.NPCs[i]; break; } if (ob == null || !Functions.InRange(ob.CurrentLocation, CurrentLocation, Globals.DataRange)) { Enqueue(p); return; } array = Account.Storage; break; default: Enqueue(p); return; } int index = -1; UserItem temp = null; for (int i = 0; i < array.Length; i++) { temp = array[i]; if (temp == null || temp.UniqueID != id) continue; index = i; break; } if (temp == null || index == -1) { Enqueue(p); return; } if (CanEquipItem(temp, to)) { array[index] = Info.Equipment[to]; Info.Equipment[to] = temp; p.Success = true; Enqueue(p); RefreshStats(); Broadcast(GetUpdateInfo()); return; } Enqueue(p); }