Пример #1
0
        public static void HandleMimicryObjectFreeAndAssociateRequest(MimicryObjectFeedAndAssociateRequestMessage message, WorldClient client)
        {
            var mimicryUsable = client.Character.Inventory.GetFirstItem(14485, 1);

            if (mimicryUsable == null)
            {
                return;
            }

            CharacterItemRecord hostItem = client.Character.Inventory.GetItem(message.hostUID);
            CharacterItemRecord foodItem = client.Character.Inventory.GetItem(message.foodUID);

            if (hostItem == null || foodItem == null)
            {
                return;
            }
            if (hostItem.Template.TypeEnum == ItemTypeEnum.FAMILIER || foodItem.Template.TypeEnum == ItemTypeEnum.FAMILIER)
            {
                client.Character.ReplyError("Les Familiers ne peuvent pas êtres Mimibiotiers");
                return;
            }
            if (hostItem.IsAssociated || foodItem.IsAssociated)
            {
                client.Character.ReplyError("Les objets associés ne peuvent pas être mimibioté.");
                return;
            }
            if (hostItem.GId == foodItem.GId)
            {
                client.Character.ReplyError("Les Objets que vous voulez Mimibioter sont les mêmes");
                return;
            }

            if (hostItem.Template.Level < foodItem.Template.Level)
            {
                client.Character.ReplyError("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, foodItem.AppearanceId);

            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.RemoveItem(mimicryUsable, 1);
                client.Character.Inventory.AddItem(mimicry);
                mimicry.UpdateElement();
                client.Send(new MimicryObjectAssociatedMessage(mimicry.UId));
            }
        }