public void UseItem(string datas) { if (Client.State.OnMove == true) { Client.NClient.Send("BN"); return; } var allDatas = datas.Split('|'); var itemID = int.Parse(allDatas[0]); var charID = Client.ID; var cellID = Client.MapCell; if (allDatas.Length > 2) { charID = int.Parse(allDatas[1]); cellID = int.Parse(allDatas[2]); } if (!ItemsList.Any(x => x.ID == itemID)) { Client.NClient.Send("OUE"); return; } var item = ItemsList.First(x => x.ID == itemID); if (item.Model.isUsable == false) { Client.NClient.Send("BN"); return; } var usable = Entities.Requests.ItemsRequests.UsablesList.First(x => x.Base == item.Model.ID); var character = SunDofus.Entities.Requests.CharactersRequests.CharactersList.First(x => x.ID == charID); if (!ItemsHandler.ConditionsAvaliable(item.Model, Client)) { Client.NClient.Send("Im119|44"); return; } usable.ParseEffect(character); if (usable.MustDelete == true) { DeleteItem(item.ID, 1); } }
public void MoveItem(int id, int pos, int quantity) { if (!ItemsList.Any(x => x.ID == id)) { return; } var item = ItemsList.First(x => x.ID == id); if (ItemsHandler.PositionAvaliable(item.Model.Type, item.Model.isUsable, pos) == false || pos == 1 && item.Model.isTwoHands == true && isOccuptedPos(15) || pos == 15 && isOccuptedPos(1)) { Client.NClient.Send("BN"); return; } if (!ItemsHandler.ConditionsAvaliable(item.Model, Client)) { Client.NClient.Send("Im119|44"); return; } if (IsEquippablePos(pos) & HasTemplateEquipped(item.Model.ID)) { Client.NClient.Send("OAEA"); return; } if (item.Model.Type == 23 && pos != -1) { if (!ItemsList.Any(x => x.Model.ID == item.Model.ID && x.Position != -1 && x.Model.Type == 23)) { Client.NClient.Send("OAEA"); return; } } if (item.Model.Level > Client.Level) { Client.NClient.Send("OAEL"); return; } var lastpos = item.Position; item.Position = pos; if (item.Position == -1) { if (ItemsList.Any(x => x.EffectsInfos() == item.EffectsInfos() && x.Model.ID == item.Model.ID && x.Position == item.Position && x.ID != item.ID)) { var item2 = ItemsList.First(x => x.EffectsInfos() == item.EffectsInfos() && x.Model.ID == item.Model.ID && x.Position == item.Position && x.ID != item.ID); item2.Quantity += item.Quantity; Client.Pods += (item.Model.Pods * item.Quantity); RefreshBonus(); Client.NClient.Send(string.Format("OQ{0}|{1}", item2.ID, item2.Quantity)); DeleteItem(item.ID, item.Quantity); if (Client.State.Party != null && IsEquippablePos(lastpos)) { Client.State.Party.UpdateMembers(); } return; } } else { if (item.Quantity > 1) { if (item.Model.Type == 12 || item.Model.Type == 13 || item.Model.Type == 14 || item.Model.Type == 28 || item.Model.Type == 33 || item.Model.Type == 37 || item.Model.Type == 42 || item.Model.Type == 49 || item.Model.Type == 69 || item.Model.Type == 87) { if (quantity <= 0) { return; } var Copy = item.Copy(); Copy.Quantity -= quantity; if (item.Quantity == quantity) { Copy.Position = pos; } else { Copy.Position = -1; } item.Quantity = quantity; AddItem(Copy, false); } else { var Copy = item.Copy(); Copy.Quantity -= 1; Copy.Position = -1; item.Quantity = 1; AddItem(Copy, false); } Client.NClient.Send(string.Format("OQ{0}|{1}", item.ID, item.Quantity)); } } if (Client.State.Party != null && IsEquippablePos(pos)) { Client.State.Party.UpdateMembers(); } Client.NClient.Send(string.Format("OM{0}|{1}", item.ID, (item.Position != -1 ? item.Position.ToString() : ""))); Client.GetMap().Send(string.Format("Oa{0}|{1}", Client.ID, Client.GetItemsPos())); RefreshBonus(); }