public void onMoveItem(InventoryItemModel Item) { lock (this.ItemSetEffects) { if (Item.Template.ItemSetID != -1) { if (ItemSetTable.getItemSet(Item.Template.ItemSetID) == null) { return; } var countByItemSet = CountItemByItemSet(Item.Template.ItemSetID); var Stat = ItemSetTable.getItemSet(Item.Template.ItemSetID).getBonusStatByItemCount(countByItemSet); if (!this.ItemSetEffects.Keys.Contains(Item.Template.ItemSetID)) { if (countByItemSet > 1) { this.ItemSetEffects.Add(Item.Template.ItemSetID, Stat); this.Player.myStats.Merge(Stat); this.Player.Life += Stat.GetTotal(EffectEnum.AddVitalite); } } else { if (countByItemSet <= 1) { this.Player.myStats.UnMerge(this.ItemSetEffects[Item.Template.ItemSetID]); this.Player.Life -= this.ItemSetEffects[Item.Template.ItemSetID].GetTotal(EffectEnum.AddVitalite); this.ItemSetEffects.Remove(Item.Template.ItemSetID); } else if (this.ItemSetEffects[Item.Template.ItemSetID] != Stat) { this.Player.myStats.UnMerge(this.ItemSetEffects[Item.Template.ItemSetID]); this.Player.Life -= this.ItemSetEffects[Item.Template.ItemSetID].GetTotal(EffectEnum.AddVitalite); this.ItemSetEffects[Item.Template.ItemSetID] = Stat; this.Player.myStats.Merge(Stat); this.Player.Life += Stat.GetTotal(EffectEnum.AddVitalite); } } Player.BeginCachedBuffer(); Player.Send(new ItemSetAppearMessage(Player, Item.Template.ItemSetID)); Player.Send(new AccountStatsMessage(Player)); Player.EndCachedBuffer(); } } }
public void RefreshSet() { lock (ItemsCache) { foreach (var Item in this.ItemsCache.Values.Where(x => x != null && x.Template.ItemSetID != -1 && ItemSetTable.getItemSet(x.Template.ItemSetID) != null && x.Slot > ItemSlotEnum.SLOT_INVENTAIRE && x.Slot <= ItemSlotEnum.SLOT_BOUCLIER)) { if (!this.ItemSetEffects.Keys.Contains(Item.Template.ItemSetID)) { if (CountItemByItemSet(Item.Template.ItemSetID) > 1) { this.ItemSetEffects.Add(Item.Template.ItemSetID, ItemSetTable.getItemSet(Item.Template.ItemSetID).getBonusStatByItemCount(CountItemByItemSet(Item.Template.ItemSetID))); this.Player.myStats.Merge(ItemSetTable.getItemSet(Item.Template.ItemSetID).getBonusStatByItemCount(CountItemByItemSet(Item.Template.ItemSetID))); this.Player.Life += ItemSetTable.getItemSet(Item.Template.ItemSetID).getBonusStatByItemCount(CountItemByItemSet(Item.Template.ItemSetID)).GetTotal(EffectEnum.AddVitalite); } Player.Send(new ItemSetAppearMessage(Player, Item.Template.ItemSetID)); } } } }
public override string Compile() { StringBuilder Packet = new StringBuilder("OS"); int num = Character.InventoryCache.CountItemByItemSet(Pano); if (num <= 0) { Packet.Append("-").Append(Pano); } else { Packet.Append("+").Append(Pano).Append("|"); var ItemSet = ItemSetTable.getItemSet(Pano); if (ItemSet != null) { StringBuilder Items = new StringBuilder(); foreach (var Item in ItemSet.Items) { if (Character.InventoryCache.HasTemplateEquiped(Item.ID)) { if (Items.Length > 0) { Items.Append(";"); } Items.Append(Item.ID); } } var stat = ItemSet.getBonusStatByItemCount(num).ToItemStats(); if (stat.StartsWith(",")) { stat = stat.Substring(1); } Packet.Append(Items.ToString()).Append("|").Append(stat); } } return(Packet.ToString()); }