Ejemplo n.º 1
0
        public IGem CreateGem(string input)
        {
            IGem gem = null;

            string[] gemParams = input.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            string gemClarity = gemParams[0];
            string getType    = gemParams[1];

            Clarity clarity;

            bool isValidGemClarity = System.Enum.TryParse(gemClarity, out clarity);

            if (!isValidGemClarity)
            {
                throw new ArgumentException("Invalid gem clarity!");
            }

            Gems theGem;

            bool isValidGem = System.Enum.TryParse(getType, out theGem);

            if (!isValidGem)
            {
                throw new ArgumentException("Invalid gem type!");
            }

            if (theGem == Gems.Ruby)
            {
                switch (clarity)
                {
                case Clarity.Chipped:
                    gem = new ChippedRuby();
                    break;

                case Clarity.Regular:
                    gem = new RegularRuby();
                    break;

                case Clarity.Perfect:
                    gem = new PerfectRubby();
                    break;

                case Clarity.Flawless:
                    gem = new FlawlessRuby();
                    break;
                }
            }
            else if (theGem == Gems.Emerald)
            {
                switch (clarity)
                {
                case Clarity.Chipped:
                    gem = new ChippedEmerald();
                    break;

                case Clarity.Regular:
                    gem = new RegularEmerald();
                    break;

                case Clarity.Perfect:
                    gem = new PerfectEmerald();
                    break;

                case Clarity.Flawless:
                    gem = new FlawlessEmerald();
                    break;
                }
            }
            else if (theGem == Gems.Amethyst)
            {
                switch (clarity)
                {
                case Clarity.Chipped:
                    gem = new ChippedAmethyst();
                    break;

                case Clarity.Regular:
                    gem = new RegularAmethyst();
                    break;

                case Clarity.Perfect:
                    gem = new PerfectAmethyst();
                    break;

                case Clarity.Flawless:
                    gem = new FlawlessAmethyst();
                    break;
                }
            }
            return(gem);
        }
Ejemplo n.º 2
0
        public override bool Give(Mobile m, Item item, bool placeAtFeet)
        {
            if (m.Skills.Mining.Value >= 100)
            {
                double chance = 0.006;

                if (Utility.RandomDouble() < chance)
                {
                    Item sitem   = null;
                    int  message = 0;

                    switch (Utility.Random(6))
                    {
                    case 0:
                        sitem   = new PerfectEmerald();
                        message = 1072566;                                 // You have found a perfect emerald!
                        break;

                    case 1:
                        sitem   = new DarkSapphire();
                        message = 1072567;                                 // You have found a dark sapphire!
                        break;

                    case 2:
                        sitem   = new Turquoise();
                        message = 1072568;                                 // You have found a turquoise!
                        break;

                    case 3:
                        sitem   = new EcruCitrine();
                        message = 1072570;                                 // You have found an Ecru Citrine!
                        break;

                    case 4:
                        sitem   = new FireRuby();
                        message = 1072564;                                 // You have found a fire ruby!
                        break;

                    case 5:
                        sitem   = new BlueDiamond();
                        message = 1072562;                                 // You have found a flawless diamond!
                        break;
                    }

                    if (!m.PlaceInBackpack(sitem))
                    {
                        if (placeAtFeet)
                        {
                            List <Item> atFeet = new List <Item>();

                            foreach (Item obj in m.GetItemsInRange(0))
                            {
                                atFeet.Add(obj);
                            }

                            for (int i = 0; i < atFeet.Count; ++i)
                            {
                                Item check = atFeet[i];

                                if (check.StackWith(m, sitem, false))
                                {
                                    m.SendLocalizedMessage(message);
                                    return(base.Give(m, item, placeAtFeet));
                                }
                            }

                            sitem.MoveToWorld(m.Location, m.Map);
                            m.SendLocalizedMessage(message);
                        }
                        else
                        {
                            sitem.Delete();
                        }
                    }
                    else
                    {
                        m.SendLocalizedMessage(message);
                    }
                }
            }

            return(base.Give(m, item, placeAtFeet));
        }