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); }
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)); }