/// <summary> /// Warning !! this method is experimental, there is known issues dues to architectural problems: /// the Item wont be initialize by ItemGenerationProvider. /// </summary> /// <param name="character"></param> /// <param name="item"></param> /// <param name="quantity"></param> public static void AddQuietCharacterItem(CharacterRecord character, CharacterItemRecord item) { lock (CharactersItems) { bool isOnline = WorldServer.Instance.IsOnline(character.Id); if (isOnline) { Logger.Write <CharacterItemRecord>("Cannot attribute " + item.Template.Name + " to " + character.Name + " , the character is online!", ConsoleColor.Red); } else { item.CharacterId = character.Id; var items = CharacterItemRecord.GetCharacterItems(character.Id); var same = items.FirstOrDefault(x => x.GId == item.GId && x.PositionEnum == CharacterInventoryPositionEnum.INVENTORY_POSITION_NOT_EQUIPED && Inventory.SameEffects(x.Effects, item.Effects)); if (same != null) { same.Quantity += item.Quantity; same.UpdateElement(); } else { item.UId = ItemUIdPopper.PopUID(); item.AddElement(); } } } }
public static CharacterMountRecord New(CharacterItemRecord item) { MountRecord template = MountRecord.GetMount(item.GId); long uid = CharactersMounts.DynamicPop(x => x.UId); return(new CharacterMountRecord(uid, item.CharacterId, false, true, false, false, template.Id, DefaultMountName, template.Effects.ConvertAll <EffectInteger>(x => x.GenerateEffect() as EffectInteger), false, false)); }
public CharacterItemRecord ToMimicry(int newskinid, ushort appearanceId) { CharacterItemRecord newItem = (CharacterItemRecord)this.CloneWithoutUID(); newItem.AddEffectInteger(EffectsEnum.Effect_ChangeAppearence1151, (ushort)newskinid); newItem.Quantity = 1; newItem.AppearanceId = appearanceId; return(newItem); }
public CharacterItemRecord Cut(uint quantity, CharacterInventoryPositionEnum newItempos) { CharacterItemRecord newItem = (CharacterItemRecord)this.CloneWithoutUID(); this.PositionEnum = newItempos; this.Quantity = quantity; newItem.Quantity -= quantity; this.UpdateElement(); return(newItem); }