Exemple #1
0
        public static UnravelInfo GetUnravelInfo(Mobile from, Item item)
        {
            int intensity = GetUnravelWeight(from, item);

            if (intensity > 0)
            {
                for (int i = m_UnravelTable.Length - 1; i >= 0; i--)
                {
                    UnravelInfo info = m_UnravelTable[i];

                    if (intensity >= info.MinIntensity)
                    {
                        return(info);
                    }
                }
            }

            return(null);
        }
Exemple #2
0
        public static bool Unravel(Mobile from, Item toUnravel)
        {
            UnravelInfo info = GetUnravelInfo(from, toUnravel);

            if (info == null)
            {
                // You cannot magically unravel this item. It appears to possess little or no magic.
                from.SendLocalizedMessage(1080437);

                return(false);
            }
            else
            {
                double imbuing = from.Skills[SkillName.Imbuing].Value;

                if (imbuing < info.MinSkill)
                {
                    // Your Imbuing skill is not high enough to magically unravel this item.
                    from.SendLocalizedMessage(1080434);

                    return(false);
                }
                else
                {
                    bool plus = from.CheckSkill(SkillName.Imbuing, info.MinSkill, info.MinSkill + 70.0);

                    toUnravel.Delete();

                    Item resource = Activator.CreateInstance(info.Resource) as Item;
                    resource.Amount = plus ? info.MaxResource : info.MinResource;

                    from.AddToBackpack(resource);

                    from.SendLocalizedMessage(1080429);                       // You magically unravel the item!
                    from.SendLocalizedMessage(1072223);                       // An item has been placed in your backpack.

                    Effects.SendPacket(from, from.Map, new GraphicalEffect(EffectType.FixedFrom, from.Serial, Serial.Zero, 0x375A, from.Location, from.Location, 1, 17, true, false));
                    from.PlaySound(0x1EB);

                    return(true);
                }
            }
        }