public static bool HandleEffects(WorldClient client, CharacterItemRecord item) { bool remove = false; if (!ConditionProvider.ParseAndEvaluate(client, item.GetTemplate().Criteria)) { client.Character.Reply("Vous ne possédez pas les critères nécessaires pour utiliser cet objet."); return(remove); } var effects = item.GetEffects(); foreach (var effect in effects) { var function = Functions.ToList().Find(x => x.Key == (EffectsEnum)effect.actionId); if (function.Value != null) { try { if (function.Value(client, effect, item.UID)) { remove = true; } } catch (Exception ex) { client.Character.NotificationError(ex.Message); } } else { client.Character.NotificationError((EffectsEnum)effect.actionId + " is not handled"); } } return(remove); }
public static bool HandleEffects(WorldClient client, CharacterItemRecord item) { bool remove = false; if (!ConditionProvider.ParseAndEvaluate(client,item.GetTemplate().Criteria)) { client.Character.Reply("Vous ne possédez pas les critères nécessaires pour utiliser cet objet."); return remove; } var effects = item.GetEffects(); foreach (var effect in effects) { var function = Functions.ToList().Find(x => x.Key == (EffectsEnum)effect.actionId); if (function.Value != null) { try { if (function.Value(client, effect, item.UID)) remove = true; } catch (Exception ex) { client.Character.NotificationError(ex.Message); } } else { client.Character.NotificationError((EffectsEnum)effect.actionId + " is not handled"); } } return remove; }
public static void HandleFeedAndAssociate(MimicryObjectFeedAndAssociateRequestMessage message, WorldClient client) { CharacterItemRecord hostItem = client.Character.Inventory.GetItem(message.hostUID); CharacterItemRecord foodItem = client.Character.Inventory.GetItem(message.foodUID); if (hostItem.GetTemplate().Type == ItemTypeEnum.PET || foodItem.GetTemplate().Type == ItemTypeEnum.PET) { client.Character.Reply("Impossible de mimibioter les familiers."); return; } if (hostItem.ContainEffect(EffectsEnum.Eff_Mimicry) || foodItem.ContainEffect(EffectsEnum.Eff_Mimicry)) { client.Character.Reply("Impossible d'associer ces objets car l'un d'eux possède déja un mimibiote."); return; } if (hostItem.GID == foodItem.GID) { client.Character.Reply("Impossible d'associer ces objets car ce sont les mêmes..."); return; } if (hostItem.GetTemplate().Type != foodItem.GetTemplate().Type) { client.Character.Reply("Impossible d'associer ces objets car ils ne sont pas du même types"); return; } if (hostItem.GetTemplate().Level < foodItem.GetTemplate().Level) { client.Character.Reply("Impossible d'associer ces objets car le niveau de l'item d'appearence est inferieur au niveau de l'item de base."); return; } CharacterItemRecord mimicry = hostItem.ToMimicry(foodItem.GID); if (message.preview) { client.Send(new MimicryObjectPreviewMessage(mimicry.GetObjectItem())); } else { client.Character.Inventory.RemoveItem(message.hostUID, 1); client.Character.Inventory.RemoveItem(message.foodUID, 1); client.Character.Inventory.RemoveItem(message.symbioteUID, 1); client.Character.Inventory.Add(mimicry); client.Send(new MimicryObjectAssociatedMessage(mimicry.UID)); } }
public static void HandleMimicryObjectErase(MimicryObjectEraseRequestMessage message, WorldClient client) { CharacterItemRecord item = client.Character.Inventory.GetItem(message.hostUID); if (message.hostPos != 63) { client.Character.Inventory.UnequipItem(item, 63, item.GetTemplate(), item.Quantity); client.Character.RefreshOnMapInstance(); client.Character.RefreshStats(); } item.RemoveAllEffect(EffectsEnum.Eff_Mimicry); var newItem = item.CloneAndGetNewUID(); client.Character.Inventory.RemoveItem(item.UID, item.Quantity, false); client.Character.Inventory.Add(newItem); }