private void ApplyItemSetEffects(ItemSetRecord itemSet, int count, bool equiped) { if (equiped) { if (count >= 2) { if (count >= 3) { ItemEffectsProvider.RemoveEffects(Character, itemSet.GetSetEffects(count - 2)); } ItemEffectsProvider.AddEffects(Character, itemSet.GetSetEffects(count - 1)); OnSetUpdated(itemSet, count - 1); } } else { if (count >= 1) { if (count >= 2) { ItemEffectsProvider.AddEffects(Character, itemSet.GetSetEffects(count - 1)); } ItemEffectsProvider.RemoveEffects(Character, itemSet.GetSetEffects(count)); OnSetUpdated(itemSet, count); } } }
public void ToggleMount() { var mount = Mount; if (mount != null) { if (!mount.Toggled) { Unequip(CharacterInventoryPositionEnum.ACCESSORY_POSITION_PETS); Character.Look = Character.Look.GetMountLook(mount.Template.Look); ItemEffectsProvider.AddEffects(Character, mount.Effects.ToList <Effect>()); } else { Character.Look = Character.Look.GetMountDriverLook(); Character.Look.SetBones(1); ItemEffectsProvider.RemoveEffects(Character, mount.Effects.ToList <Effect>()); } mount.Toggled = !mount.Toggled; mount.UpdateElement(); Character.Client.Send(new MountRidingMessage(mount.Toggled)); Character.RefreshStats(); Character.RefreshActorOnMap(); } }
/// <summary> /// Appelée lorsque la position d'un item a été modifié /// </summary> /// <param name="item"></param> /// <param name="lastPosition"></param> private void OnItemMoved(CharacterItemRecord item, CharacterInventoryPositionEnum lastPosition) { bool flag = lastPosition != CharacterInventoryPositionEnum.INVENTORY_POSITION_NOT_EQUIPED; bool flag2 = item.IsEquiped(); if (flag2 && !flag) { ItemEffectsProvider.AddEffects(Character, item.Effects); } if (!flag2 && flag) { ItemEffectsProvider.RemoveEffects(Character, item.Effects); } if (item.AppearanceId != 0) { UpdateLook(item, flag2); } if (item.Template.HasSet) // Si il y a une panoplie { int num = CountItemSetEquiped(item.Template.ItemSet); if (flag2) //Si on vient d'équiper l'objet { ApplyItemSetEffects(item.Template.ItemSet, num, flag2); } else { ApplyItemSetEffects(item.Template.ItemSet, num, flag2); } } }
public void EquipItem(CharacterItemRecord item, ItemRecord template, byte newposition, uint quantity) { if (!ConditionProvider.ParseAndEvaluate(Character.Client, template.Criteria)) { Character.Reply("Vous n'avez pas les critères nessessaire pour équiper cet objet"); return; } if (CheckRingStacks(item, newposition)) { Character.Reply("Vous avez déja équipé cet anneau!"); return; } if (CheckDofusStacks(item, newposition)) { Character.Reply("Vous avez déja équipé ce dofus"); return; } if (DOFUS_POSITIONS.Contains((CharacterInventoryPositionEnum)item.Position) && DOFUS_POSITIONS.Contains((CharacterInventoryPositionEnum)newposition)) { return; } if ((CharacterInventoryPositionEnum)newposition == CharacterInventoryPositionEnum.ACCESSORY_POSITION_SHIELD) { var weapon = GetEquipedWeapon(); if (weapon != null) { if (WeaponRecord.GetWeapon(weapon.GID).TwoHanded) { Character.Reply("Vous devez deséquiper votre arme pour équiper le bouclier."); return; } } } if ((CharacterInventoryPositionEnum)newposition == CharacterInventoryPositionEnum.ACCESSORY_POSITION_WEAPON) { var shield = GetItemByPosition(CharacterInventoryPositionEnum.ACCESSORY_POSITION_SHIELD); if (WeaponRecord.GetWeapon(item.GID).TwoHanded) { Character.Reply("Vous devez enlevé votre bouclier pour équiper votre arme."); return; } } var equiped = EquipedItem(newposition); if (equiped != null) { UnequipItem(equiped, 63, equiped.GetTemplate(), quantity); SaveTask.UpdateElement(equiped); } if (item.Quantity == 1) { item.Position = newposition; SaveTask.UpdateElement(item); AddItemSkin(item, template); ItemEffectsProvider.AddEffects(Character.Client, item.GetEffects()); } else { var items = ItemCut.Cut(item, quantity, newposition); Add(items.newItem); ItemEffectsProvider.AddEffects(Character.Client, items.BaseItem.GetEffects()); AddItemSkin(item, template); } Character.RefreshGroupInformations(); }