Exemplo n.º 1
0
        public override void OnDoubleClick(Mobile m)
        {
            if (m.InRange(this.GetWorldLocation(), 2))
            {
                if (0.1 > Utility.RandomDouble())
                {
                    m.BAC = Math.Min(60, m.BAC + 10);
                    m.PlaySound(Utility.RandomList(0x30, 0x2D6));
                    BaseBeverage.CheckHeaveTimer(m);

                    m.PrivateOverheadMessage(MessageType.Regular, 0x3B2, 1156270, m.NetState);                     // *You ready the bottle to throw but it's enchanting label persuades you to drink it instead!*

                    Delete();
                }
                else
                {
                    m.SendLocalizedMessage(1010086);                     // What do you want to use this on?
                    m.BeginTarget(10, false, Server.Targeting.TargetFlags.None, (from, targeted) =>
                    {
                        if (0.25 > Utility.RandomDouble() && m.BAC > 0)
                        {
                            AOS.Damage(m, Utility.RandomMinMax(25, 50), 100, 0, 0, 0, 0);
                            m.PrivateOverheadMessage(MessageType.Regular, 0x3B2, 1156271, m.NetState);                             // *You wind up to throw but in your inebriated state you manage to hit yourself!*
                            m.FixedParticles(0x3728, 20, 10, 5044, EffectLayer.Head);

                            Delete();
                        }
                        else if (targeted is ShadowguardPirate)
                        {
                            ShadowguardPirate pirate = targeted as ShadowguardPirate;

                            m.DoHarmful(pirate);
                            m.MovingParticles(pirate, 0x99B, 10, 0, false, true, 0, 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0);

                            Timer.DelayCall(TimeSpan.FromSeconds(.5), () =>
                            {
                                if (pirate.Alive)
                                {
                                    // this is gay, but can't figure out a better way to do!
                                    pirate.BlockReflect = true;
                                    AOS.Damage(pirate, m, 300, 0, 0, 0, 0, 0, 0, 100);
                                    pirate.BlockReflect = false;
                                    pirate.FixedParticles(0x3728, 20, 10, 5044, EffectLayer.Head);

                                    pirate.PlaySound(Utility.Random(0x3E, 3));
                                }
                            });

                            Delete();
                        }
                        else
                        {
                            m.SendLocalizedMessage(1156211);                             // You cannot throw this there!
                        }
                    });
                }
            }
        }
Exemplo n.º 2
0
        public int GetSellPriceFor(Item item)
        {
            int price = 0;

            m_Table.TryGetValue(item.GetType(), out price);

            if (item is BaseBeverage)
            {
                int price1 = price, price2 = price;

                if (item is Pitcher)
                {
                    price1 = 1;
                    price2 = 1;
                }

                else if (item is BeverageBottle)
                {
                    price1 = 1;
                    price2 = 1;
                }

                else if (item is Jug)
                {
                    price1 = 1;
                    price2 = 1;
                }

                BaseBeverage bev = (BaseBeverage)item;

                if (bev.IsEmpty || bev.Content == BeverageType.Milk)
                {
                    price = price1;
                }

                else
                {
                    price = price2;
                }
            }

            double basePrice   = (double)price;
            double priceScalar = item.GetSellValueScalar();

            price = (int)Math.Floor(basePrice * priceScalar);

            if (price < 1)
            {
                price = 1;
            }

            return(price);
        }
Exemplo n.º 3
0
        public void CheckWaterSource(Mobile from, BaseBeverage beverage)
        {
            if (IsLockedDown)
            {
                beverage.Content  = BeverageType.Water;
                beverage.Poison   = null;
                beverage.Poisoner = null;

                beverage.Quantity = beverage.MaxQuantity;

                from.SendLocalizedMessage(1010089); // You fill the container with water.
            }
            else
            {
                from.SendLocalizedMessage(1114298); // This must be locked down in order to use it.
            }
        }
Exemplo n.º 4
0
        public int GetSellPriceFor(Item item)
        {
            int price = (int)m_Table[item.GetType()];

            if ((item is BaseWeapon && ((BaseWeapon)item).Exceptional) || (item is BaseArmor && ((BaseArmor)item).Exceptional))
            {
                price = (int)(price * 1.25);
            }

            if (item is BaseBeverage)
            {
                int price1 = price, price2 = price;

                if (item is Pitcher)
                {
                    price1 = 3;
                    price2 = 5;
                }
                else if (item is BeverageBottle)
                {
                    price1 = 3;
                    price2 = 3;
                }
                else if (item is Jug)
                {
                    price1 = 6;
                    price2 = 6;
                }

                BaseBeverage bev = (BaseBeverage)item;

                if (bev.IsEmpty || bev.Content == BeverageType.Milk)
                {
                    price = price1;
                }
                else
                {
                    price = price2;
                }
            }

            return(price);
        }
Exemplo n.º 5
0
        public int GetSellPriceFor(Item item)
        {
            int price = (int)m_Table[item.GetType()];

            if (item is BaseArmor)
            {
                BaseArmor armor = (BaseArmor)item;

                if (armor.Quality == ArmorQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (armor.Quality == ArmorQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                /* Lines added to make Colored Armor and Weapons Sell at different prices */
                switch (armor.Resource)
                {
                case CraftResource.DullCopper: price = (int)(price * 2.5); break;

                case CraftResource.ShadowIron: price = (int)(price * 3); break;

                case CraftResource.Copper: price = (int)(price * 3.5); break;

                case CraftResource.Bronze: price = (int)(price * 4); break;

                case CraftResource.Gold: price = (int)(price * 4.5); break;

                case CraftResource.Agapite: price = (int)(price * 5); break;

                case CraftResource.Verite: price = (int)(price * 5.5); break;

                case CraftResource.Valorite: price = (int)(price * 6); break;

                case CraftResource.Silver: price = (int)(price * 6.5); break;

                case CraftResource.Platinum: price = (int)(price * 7); break;

                case CraftResource.Mythril: price = (int)(price * 7.5); break;

                case CraftResource.Obsidian: price = (int)(price * 8); break;

                case CraftResource.Jade: price = (int)(price * 8.5); break;

                case CraftResource.Moonstone: price = (int)(price * 9); break;

                case CraftResource.Sunstone: price = (int)(price * 9.5); break;

                case CraftResource.Bloodstone: price = (int)(price * 10); break;
                }
                /* End of Changes */

                price += 100 * (int)armor.Durability;

                price += 100 * (int)armor.ProtectionLevel;

                if (price < 1)
                {
                    price = 1;
                }
            }

            else if (item is BaseWeapon)
            {
                BaseWeapon weapon = (BaseWeapon)item;

                if (weapon.Quality == WeaponQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (weapon.Quality == WeaponQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                /* Lines added to make Colored Armor and Weapons Sell at different prices */
                switch (weapon.Resource)
                {
                case CraftResource.DullCopper: price = (int)(price * 2.5); break;

                case CraftResource.ShadowIron: price = (int)(price * 3); break;

                case CraftResource.Copper: price = (int)(price * 3.5); break;

                case CraftResource.Bronze: price = (int)(price * 4); break;

                case CraftResource.Gold: price = (int)(price * 4.5); break;

                case CraftResource.Agapite: price = (int)(price * 5); break;

                case CraftResource.Verite: price = (int)(price * 5.5); break;

                case CraftResource.Valorite: price = (int)(price * 6); break;

                case CraftResource.Silver: price = (int)(price * 6.5); break;

                case CraftResource.Platinum: price = (int)(price * 7); break;

                case CraftResource.Mythril: price = (int)(price * 7.5); break;

                case CraftResource.Obsidian: price = (int)(price * 8); break;

                case CraftResource.Jade: price = (int)(price * 8.5); break;

                case CraftResource.Moonstone: price = (int)(price * 9); break;

                case CraftResource.Sunstone: price = (int)(price * 9.5); break;

                case CraftResource.Bloodstone: price = (int)(price * 10); break;
                }
                /* End of Changes */

                price += 100 * (int)weapon.DurabilityLevel;

                price += 100 * (int)weapon.DamageLevel;

                if (price < 1)
                {
                    price = 1;
                }
            }
            else if (item is BaseBeverage)
            {
                int price1 = price, price2 = price;

                if (item is Pitcher)
                {
                    price1 = 3; price2 = 5;
                }
                else if (item is BeverageBottle)
                {
                    price1 = 3; price2 = 3;
                }
                else if (item is Jug)
                {
                    price1 = 6; price2 = 6;
                }

                BaseBeverage bev = (BaseBeverage)item;

                if (bev.IsEmpty || bev.Content == BeverageType.Milk)
                {
                    price = price1;
                }
                else
                {
                    price = price2;
                }
            }

            return(price);
        }
Exemplo n.º 6
0
 public Whip(BaseBeverage beverage)
 {
     this.beverage = beverage;
 }
Exemplo n.º 7
0
 public Milk(BaseBeverage beverage)
 {
     this.beverage = beverage;
 }
Exemplo n.º 8
0
        private static int GetPriceFor(Item item)
        {
            int price = 0;

            if (item is Gold)
            {
                price = item.Amount;
            }
            else if (item is BaseArmor)
            {
                BaseArmor armor = (BaseArmor)item;

                if (armor.Quality == CraftQuality.Low)
                {
                    price = (int)(price * 0.75);
                }
                else if (armor.Quality == CraftQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                price += 100 * (int)armor.Durability;

                price += 100 * (int)armor.ProtectionLevel;
            }
            else if (item is BaseWeapon)
            {
                BaseWeapon weapon = (BaseWeapon)item;

                if (weapon.Quality == CraftQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (weapon.Quality == CraftQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                price += 100 * (int)weapon.DurabilityLevel;

                price += 100 * (int)weapon.DamageLevel;
            }
            else if (item is BaseBeverage)
            {
                int price1 = price, price2 = price;

                if (item is Pitcher)
                {
                    price1 = 3; price2 = 5;
                }
                else if (item is BeverageBottle)
                {
                    price1 = 3; price2 = 3;
                }
                else if (item is Jug)
                {
                    price1 = 6; price2 = 6;
                }

                BaseBeverage bev = (BaseBeverage)item;

                if (bev.IsEmpty || bev.Content == BeverageType.Milk)
                {
                    price = price1;
                }
                else
                {
                    price = price2;
                }
            }
            else
            {
                price = Utility.RandomMinMax(10, 50);
            }

            if (price < 1)
            {
                price = 1;
            }

            return(price);
        }
Exemplo n.º 9
0
 public Mocha(BaseBeverage beverage)
 {
     this.beverage = beverage;
 }
Exemplo n.º 10
0
 public BeverageEntry(Mobile from, BaseBeverage beverage)
     : base(10176, 1)
 {
     m_From     = from;
     m_Beverage = beverage;
 }
Exemplo n.º 11
0
        public int GetSellPriceFor(Item item, BaseVendor vendor)
        {
            int price = 0;

            m_Table.TryGetValue(item.GetType(), out price);

            if (vendor != null && BaseVendor.UseVendorEconomy)
            {
                IBuyItemInfo buyInfo = vendor.GetBuyInfo().OfType <GenericBuyInfo>().FirstOrDefault(info => info.EconomyItem && info.Type == item.GetType());

                if (buyInfo != null)
                {
                    int sold = buyInfo.TotalSold;
                    price = (int)(buyInfo.Price * .75);

                    return(Math.Max(1, price));
                }
            }

            if (item is BaseArmor)
            {
                BaseArmor armor = (BaseArmor)item;

                if (armor.Quality == ItemQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (armor.Quality == ItemQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                price += 100 * (int)armor.Durability;

                price += 100 * (int)armor.ProtectionLevel;

                if (price < 1)
                {
                    price = 1;
                }
            }
            else if (item is BaseWeapon)
            {
                BaseWeapon weapon = (BaseWeapon)item;

                if (weapon.Quality == ItemQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (weapon.Quality == ItemQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                price += 100 * (int)weapon.DurabilityLevel;

                price += 100 * (int)weapon.DamageLevel;

                if (price < 1)
                {
                    price = 1;
                }
            }
            else if (item is BaseBeverage)
            {
                int price1 = price, price2 = price;

                if (item is Pitcher)
                {
                    price1 = 3;
                    price2 = 5;
                }
                else if (item is BeverageBottle)
                {
                    price1 = 3;
                    price2 = 3;
                }
                else if (item is Jug)
                {
                    price1 = 6;
                    price2 = 6;
                }

                BaseBeverage bev = (BaseBeverage)item;

                if (bev.IsEmpty || bev.Content == BeverageType.Milk)
                {
                    price = price1;
                }
                else
                {
                    price = price2;
                }
            }

            return(price);
        }
Exemplo n.º 12
0
        public void Pour(Mobile from, Item item)
        {
            if (m_PlantStatus >= PlantStatus.DeadTwigs)
            {
                return;
            }

            if (m_PlantStatus == PlantStatus.DecorativePlant)
            {
                LabelTo(from, 1053049);                   // This is a decorative plant, it does not need watering!
                return;
            }

            if (!IsUsableBy(from))
            {
                LabelTo(from, 1061856);                   // You must have the item in your backpack or locked down in order to use it.
                return;
            }

            if (item is BaseBeverage)
            {
                BaseBeverage beverage = (BaseBeverage)item;

                if (beverage.IsEmpty || !beverage.Pourable || beverage.Content != BeverageType.Water)
                {
                    LabelTo(from, 1053069);                       // You can't use that on a plant!
                    return;
                }

                if (!beverage.ValidateUse(from, true))
                {
                    return;
                }

                /*beverage.Quantity--;
                 * m_PlantSystem.Water++;
                 *
                 * from.PlaySound( 0x4E );
                 * LabelTo( from, 1061858 ); // You soften the dirt with water.
                 *
                 * //OS-Edit: Endless Decanter of Water
                 * if ( beverage is EndlessDecanterOfWater )
                 * {
                 *      EndlessDecanterOfWater edw = beverage as EndlessDecanterOfWater;
                 *      EndlessDecanterOfWater.Refill( from, edw );
                 * }
                 * //END EDIT*/
            }
            else if (item is BasePotion)
            {
                BasePotion potion = (BasePotion)item;

                int message;
                if (ApplyPotion(potion.PotionEffect, false, out message))
                {
                    potion.Consume();
                    from.PlaySound(0x240);
                    from.AddToBackpack(new Bottle());
                }
                LabelTo(from, message);
            }
            else if (item is PotionKeg)
            {
                PotionKeg keg = (PotionKeg)item;

                if (keg.Held <= 0)
                {
                    LabelTo(from, 1053069);                       // You can't use that on a plant!
                    return;
                }

                int message;
                if (ApplyPotion(keg.Type, false, out message))
                {
                    keg.Held--;
                    from.PlaySound(0x240);
                }
                LabelTo(from, message);
            }
            else
            {
                LabelTo(from, 1053069);                   // You can't use that on a plant!
            }
        }
Exemplo n.º 13
0
 public Soy(BaseBeverage beverage)
 {
     this.beverage = beverage;
 }
Exemplo n.º 14
0
        public int GetSellPriceFor(Item item, int barter)
        {
            int price = 0;

            m_Table.TryGetValue(item.GetType(), out price);

            if (item is BaseArmor)
            {
                BaseArmor armor = (BaseArmor)item;

                if (armor.Quality == ArmorQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (armor.Quality == ArmorQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                switch (armor.Resource)
                {
                case CraftResource.DullCopper: price = (int)(price * 1.25); break;

                case CraftResource.ShadowIron: price = (int)(price * 1.5); break;

                case CraftResource.Copper: price = (int)(price * 1.75); break;

                case CraftResource.Bronze: price = (int)(price * 2); break;

                case CraftResource.Gold: price = (int)(price * 2.25); break;

                case CraftResource.Agapite: price = (int)(price * 2.50); break;

                case CraftResource.Verite: price = (int)(price * 2.75); break;

                case CraftResource.Valorite: price = (int)(price * 3); break;

                case CraftResource.Nepturite: price = (int)(price * 3.10); break;

                case CraftResource.Obsidian: price = (int)(price * 3.10); break;

                case CraftResource.Steel: price = (int)(price * 3.25); break;

                case CraftResource.Brass: price = (int)(price * 3.5); break;

                case CraftResource.Mithril: price = (int)(price * 3.75); break;

                case CraftResource.Xormite: price = (int)(price * 3.75); break;

                case CraftResource.Dwarven: price = (int)(price * 7.50); break;

                case CraftResource.SpinedLeather: price = (int)(price * 1.5); break;

                case CraftResource.HornedLeather: price = (int)(price * 1.75); break;

                case CraftResource.BarbedLeather: price = (int)(price * 2.0); break;

                case CraftResource.NecroticLeather: price = (int)(price * 2.25); break;

                case CraftResource.VolcanicLeather: price = (int)(price * 2.5); break;

                case CraftResource.FrozenLeather: price = (int)(price * 2.75); break;

                case CraftResource.GoliathLeather: price = (int)(price * 3.0); break;

                case CraftResource.DraconicLeather: price = (int)(price * 3.25); break;

                case CraftResource.HellishLeather: price = (int)(price * 3.5); break;

                case CraftResource.DinosaurLeather: price = (int)(price * 3.75); break;

                case CraftResource.AlienLeather: price = (int)(price * 3.75); break;

                case CraftResource.RedScales: price = (int)(price * 1.25); break;

                case CraftResource.YellowScales: price = (int)(price * 1.25); break;

                case CraftResource.BlackScales: price = (int)(price * 1.5); break;

                case CraftResource.GreenScales: price = (int)(price * 1.5); break;

                case CraftResource.WhiteScales: price = (int)(price * 1.5); break;

                case CraftResource.BlueScales: price = (int)(price * 1.5); break;

                case CraftResource.AshTree: price = (int)(price * 1.25); break;

                case CraftResource.CherryTree: price = (int)(price * 1.45); break;

                case CraftResource.EbonyTree: price = (int)(price * 1.65); break;

                case CraftResource.GoldenOakTree: price = (int)(price * 1.85); break;

                case CraftResource.HickoryTree: price = (int)(price * 2.05); break;

                case CraftResource.MahoganyTree: price = (int)(price * 2.25); break;

                case CraftResource.DriftwoodTree: price = (int)(price * 2.25); break;

                case CraftResource.OakTree: price = (int)(price * 2.45); break;

                case CraftResource.PineTree: price = (int)(price * 2.65); break;

                case CraftResource.GhostTree: price = (int)(price * 2.65); break;

                case CraftResource.RosewoodTree: price = (int)(price * 2.85); break;

                case CraftResource.WalnutTree: price = (int)(price * 3); break;

                case CraftResource.ElvenTree: price = (int)(price * 6); break;

                case CraftResource.PetrifiedTree: price = (int)(price * 3.25); break;
                }
                /* End of Changes */

                price += 100 * (int)armor.Durability;

                price += 100 * (int)armor.ProtectionLevel;

                if (price < 1)
                {
                    price = 1;
                }
            }
            else if (item is BaseWeapon)
            {
                BaseWeapon weapon = (BaseWeapon)item;

                if (weapon.Quality == WeaponQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (weapon.Quality == WeaponQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                switch (weapon.Resource)
                {
                case CraftResource.DullCopper: price = (int)(price * 1.25); break;

                case CraftResource.ShadowIron: price = (int)(price * 1.5); break;

                case CraftResource.Copper: price = (int)(price * 1.75); break;

                case CraftResource.Bronze: price = (int)(price * 2); break;

                case CraftResource.Gold: price = (int)(price * 2.25); break;

                case CraftResource.Agapite: price = (int)(price * 2.50); break;

                case CraftResource.Verite: price = (int)(price * 2.75); break;

                case CraftResource.Valorite: price = (int)(price * 3); break;

                case CraftResource.Obsidian: price = (int)(price * 3); break;

                case CraftResource.Nepturite: price = (int)(price * 3); break;

                case CraftResource.Steel: price = (int)(price * 3.25); break;

                case CraftResource.Brass: price = (int)(price * 3.5); break;

                case CraftResource.Mithril: price = (int)(price * 3.75); break;

                case CraftResource.Xormite: price = (int)(price * 3.75); break;

                case CraftResource.Dwarven: price = (int)(price * 7.50); break;
                }
                /* End of Changes */

                price += 100 * (int)weapon.DurabilityLevel;

                price += 100 * (int)weapon.DamageLevel;

                if (price < 1)
                {
                    price = 1;
                }
            }
            else if (item is BaseBeverage)
            {
                int price1 = price, price2 = price;

                if (item is Pitcher)
                {
                    price1 = 3; price2 = 5;
                }
                else if (item is BeverageBottle)
                {
                    price1 = 3; price2 = 3;
                }
                else if (item is Jug)
                {
                    price1 = 6; price2 = 6;
                }

                BaseBeverage bev = (BaseBeverage)item;

                if (bev.IsEmpty || bev.Content == BeverageType.Milk)
                {
                    price = price1;
                }
                else
                {
                    price = price2;
                }
            }

            price = (int)(price / 2);
            if (barter > 0)
            {
                if (barter > 100)
                {
                    barter = 100;
                }
                double nId = 1 + (barter * 0.03);
                price = (int)(price * nId);
            }
            if (price < 1)
            {
                price = 1;
            }

            return(price);
        }
Exemplo n.º 15
0
        public int GetSellPriceFor(Item item)
        {
            int price = (int)m_Table[item.GetType()];

            if (price == -1)             // shouldn't ever be asking for this anyway, but for sanity
            {
                return((int)ResourcePool.GetWholesalePrice(item.GetType()));
            }

            if (item is BaseArmor)
            {
                BaseArmor armor = (BaseArmor)item;

                if (armor.Quality == ArmorQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (armor.Quality == ArmorQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                price += 100 * (int)armor.Durability;

                price += 100 * (int)armor.ProtectionLevel;

                if (price < 1)
                {
                    price = 1;
                }
            }

            else if (item is BaseWeapon)
            {
                BaseWeapon weapon = (BaseWeapon)item;

                if (weapon.Quality == WeaponQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (weapon.Quality == WeaponQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                price += 100 * (int)weapon.DurabilityLevel;

                price += 100 * (int)weapon.DamageLevel;

                if (price < 1)
                {
                    price = 1;
                }
            }
            else if (item is BaseBeverage)
            {
                int price1 = price, price2 = price;

                if (item is Pitcher)
                {
                    price1 = 3; price2 = 5;
                }
                else if (item is BeverageBottle)
                {
                    price1 = 3; price2 = 3;
                }
                else if (item is Jug)
                {
                    price1 = 6; price2 = 6;
                }

                BaseBeverage bev = (BaseBeverage)item;

                if (bev.IsEmpty || bev.Content == BeverageType.Milk)
                {
                    price = price1;
                }
                else
                {
                    price = price2;
                }
            }

            return(price);
        }
Exemplo n.º 16
0
        public static void Trick(BaseCreature creature, PlayerMobile player)
        {
            if (creature == null || player == null)
            {
                return;
            }

            int trickTextHue = 0x22;

            creature.PublicOverheadMessage(MessageType.Regular, trickTextHue, false, "Trick it is then!");
            creature.PlaySound(0x246);

            double damageAmount = 0;
            int    duration     = 0;

            switch (Utility.RandomMinMax(1, 15))
            {
            case 1:
                SpecialAbilities.BacklashSpecialAbility(1.0, null, player, .75, 60, -1, true, "", "");

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "Ack! A curse! Causing your spellcasting proficiency to suffer!", player.NetState);
                }
                break;

            case 2:
                double bleedAmount = (double)player.HitsMax * .66;

                for (int a = 0; a < 5; a++)
                {
                    Point3D newLocation = new Point3D(player.Location.X + Utility.RandomList(-1, 1), player.Location.Y + Utility.RandomList(-1, 1), player.Location.Z);

                    new Blood().MoveToWorld(newLocation, player.Map);
                }

                SpecialAbilities.BleedSpecialAbility(1.0, null, player, bleedAmount, 8, -1, true, "", "", "-1");

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "Curses! A dagger hidden in an apple!", player.NetState);
                }
                break;

            case 3:
                Point3D creatureLocation = creature.Location;
                Point3D playerLocation   = player.Location;

                int projectiles   = 15;
                int particleSpeed = 8;

                for (int a = 0; a < projectiles; a++)
                {
                    Point3D newLocation = new Point3D(player.X + Utility.RandomList(-5, -4, -3, -2, -1, 1, 2, 3, 4, 5), player.Y + Utility.RandomList(-5, -4, -3, -2, -1, 1, 2, 3, 4, 5), player.Z);
                    SpellHelper.AdjustField(ref newLocation, player.Map, 12, false);

                    IEntity effectStartLocation = new Entity(Serial.Zero, new Point3D(newLocation.X, newLocation.Y, newLocation.Z + 10), player.Map);
                    IEntity effectEndLocation   = new Entity(Serial.Zero, new Point3D(player.X, player.Y, player.Z + 10), player.Map);

                    Effects.SendMovingParticles(effectStartLocation, effectEndLocation, 0x3818, particleSpeed, 0, false, false, 2603, 0, 9501, 0, 0, 0x100);
                }

                player.FixedParticles(0x3967, 10, 40, 5036, 2603, 0, EffectLayer.CenterFeet);

                int damage = (int)(Math.Round((double)player.HitsMax * .33));

                duration = 5;

                SpecialAbilities.HinderSpecialAbility(1.0, null, player, 1.0, duration, false, -1, false, "", "", "-1");

                new Blood().MoveToWorld(player.Location, player.Map);
                AOS.Damage(player, damage, 0, 100, 0, 0, 0);

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "Electric candy! What an age we live in!", player.NetState);
                }
                break;

            case 4:
                SpecialAbilities.DiseaseSpecialAbility(1.0, null, player, 3, 60, -1, true, "", "");

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "Blast! Expired candy!", player.NetState);
                }
                break;

            case 5:
                TimedStatic glue = new TimedStatic(4650, 30);
                glue.Name = "glue";
                glue.Hue  = 2067;
                glue.MoveToWorld(player.Location, player.Map);

                SpecialAbilities.EntangleSpecialAbility(1.0, null, player, 1.0, 30, -1, true, "", "", "-1");

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "Your feet have been glued to the floor!", player.NetState);
                }
                break;

            case 6:
                damageAmount = (double)player.HitsMax * .5;
                SpecialAbilities.FlamestrikeSpecialAbility(1.0, null, player, damageAmount, 1, -1, true, "", "Spicy candy! So hot!");

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "Spicy candy! So hot!", player.NetState);
                }
                break;

            case 7:
                damageAmount = (double)player.HitsMax * .5;

                Direction direction = Utility.GetDirection(creature.Location, player.Location);

                int windItemId = 8099;

                switch (direction)
                {
                case Direction.North: windItemId = 8099; break;

                case Direction.Right: windItemId = 8099; break;

                case Direction.West: windItemId = 8104; break;

                case Direction.Up: windItemId = 8104; break;

                case Direction.East: windItemId = 8109; break;

                case Direction.Down: windItemId = 8109; break;

                case Direction.South: windItemId = 8114; break;

                case Direction.Left: windItemId = 8114; break;
                }

                creature.MovingEffect(player, windItemId, 5, 1, false, false, 0, 0);
                player.PlaySound(0x64C);

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "This candy totally blows...", player.NetState);
                }

                SpecialAbilities.KnockbackSpecialAbility(1.0, creature.Location, null, player, damageAmount, 20, -1, "", "");
                break;

            case 8:
                SpecialAbilities.PetrifySpecialAbility(1.0, null, player, 1.0, 15, -1, true, "", "", "-1");

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "Rock candy!", player.NetState);
                }
                break;

            case 9:
                if (player.Poison == null)
                {
                    Poison poison = Poison.GetPoison(2);
                    player.ApplyPoison(null, poison);
                }

                player.FixedEffect(0x372A, 10, 30, 2208, 0);
                Effects.PlaySound(player.Location, player.Map, 0x22F);

                int residueCount = Utility.RandomMinMax(3, 4);

                for (int a = 0; a < residueCount; a++)
                {
                    Point3D poisonPoint = new Point3D(player.Location.X + Utility.RandomList(-1, 1), player.Location.Y + Utility.RandomList(-1, 1), player.Location.Z);
                    SpellHelper.AdjustField(ref poisonPoint, player.Map, 12, false);

                    TimedStatic poisonResidue = new TimedStatic(Utility.RandomList(0x1645, 0x122A, 0x122B, 0x122C, 0x122D, 0x122E, 0x122F), 5);
                    poisonResidue.Hue  = 2208;
                    poisonResidue.Name = "poison residue";
                    poisonResidue.MoveToWorld(poisonPoint, player.Map);
                }

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "Poisoned candy! Who would do such a thing!", player.NetState);
                }
                break;

            case 10:
                bool canPolymorph = true;

                if (!player.CanBeginAction(typeof(PolymorphSpell)))
                {
                    canPolymorph = false;
                }

                if (!player.CanBeginAction(typeof(PolymorphPotion)))
                {
                    canPolymorph = false;
                }

                if (!player.CanBeginAction(typeof(IncognitoSpell)) || player.IsBodyMod)
                {
                    canPolymorph = false;
                }

                if (DisguiseTimers.IsDisguised(player))
                {
                    canPolymorph = false;
                }

                if (KinPaint.IsWearingKinPaint(player))
                {
                    canPolymorph = false;
                }

                if (!canPolymorph)
                {
                    player.SendMessage("Hmm...Nothing seems to have happened. Or did it?");
                    return;
                }

                player.FixedParticles(0x373A, 10, 15, 5036, EffectLayer.Head);

                List <int> m_PossibleBodyValues = new List <int>();

                m_PossibleBodyValues.Add(3);     //Zombie
                m_PossibleBodyValues.Add(50);    //Skeleton
                m_PossibleBodyValues.Add(56);    //Skeleton
                m_PossibleBodyValues.Add(153);   //Ghoul
                m_PossibleBodyValues.Add(302);   //Skeletal Critter
                m_PossibleBodyValues.Add(309);   //Patchwork Skeleton
                m_PossibleBodyValues.Add(148);   //Necromancer
                m_PossibleBodyValues.Add(793);   //Skeletal Horse
                m_PossibleBodyValues.Add(317);   //Giant Bat
                m_PossibleBodyValues.Add(252);   //Corpse Bride
                m_PossibleBodyValues.Add(57);    //Skeletal Knight
                m_PossibleBodyValues.Add(116);   //Nightmare
                m_PossibleBodyValues.Add(24);    //Lich
                m_PossibleBodyValues.Add(154);   //Mummy
                m_PossibleBodyValues.Add(104);   //Skeletal Drake
                m_PossibleBodyValues.Add(740);   //Skeletal Drake
                m_PossibleBodyValues.Add(308);   //Giant Skeleton

                player.BodyMod = m_PossibleBodyValues[Utility.RandomMinMax(0, m_PossibleBodyValues.Count - 1)];
                player.HueMod  = 0;

                player.PlaySound(0x3BD);

                BaseArmor.ValidateMobile(player);

                duration = 120;

                player.BeginAction(typeof(PolymorphPotion));
                Timer.DelayCall(TimeSpan.FromSeconds(duration), delegate
                {
                    if (player == null)
                    {
                        return;
                    }

                    player.EndAction(typeof(PolymorphPotion));
                });

                player.BeginAction(typeof(PolymorphSpell));
                Timer.DelayCall(TimeSpan.FromSeconds(duration), delegate
                {
                    if (player == null)
                    {
                        return;
                    }

                    player.BodyMod = 0;
                    player.HueMod  = -1;
                    player.EndAction(typeof(PolymorphSpell));

                    BaseArmor.ValidateMobile(player);
                });

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "Hmm, something tastes odd about this candy.", player.NetState);
                }
                break;

            case 11:
                Item innerLegs = player.FindItemOnLayer(Layer.InnerLegs);
                Item outerLegs = player.FindItemOnLayer(Layer.OuterLegs);
                Item pants     = player.FindItemOnLayer(Layer.Pants);

                int layersFound = 0;

                if (innerLegs != null)
                {
                    player.Backpack.DropItem(innerLegs);
                    layersFound++;
                }

                if (outerLegs != null)
                {
                    player.Backpack.DropItem(outerLegs);
                    layersFound++;
                }

                if (pants != null)
                {
                    player.Backpack.DropItem(pants);
                    layersFound++;
                }

                if (layersFound > 0)
                {
                    player.PlaySound(0x503);

                    if (player.NetState != null)
                    {
                        player.PrivateOverheadMessage(MessageType.Regular, 0, false, "Your pants appear to have fallen down. How embarrassing!", player.NetState);
                    }
                }

                else
                {
                    player.SendMessage("Nothing seems to have happened. Or did it?...");
                }
                break;

            case 12:

                player.FixedParticles(0x374A, 10, 15, 5028, 2604, 0, EffectLayer.Waist);
                player.PlaySound(0x5DA);

                player.Animate(22, 6, 1, true, false, 0);     //Fall Forward

                player.Stam = 0;

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "You feel drowsy and fall on your face!", player.NetState);
                }
                break;

            case 13:
                player.BAC = 60;
                player.PlaySound(0x5A9);

                BaseBeverage.CheckHeaveTimer(player);

                player.Animate(34, 5, 1, true, false, 0);

                if (player.NetState != null)
                {
                    player.PrivateOverheadMessage(MessageType.Regular, 0, false, "What was in that candy??? *hic*", player.NetState);
                }
                break;

            case 14:
                Warp(creature, player);
                break;

            case 15:
                Warp(creature, player);
                break;
            }
        }
Exemplo n.º 17
0
 public PlayerDrinkingEventArgs(Player player, BaseBeverage bvgItem)
     : base(player)
 {
     BeverageItem = bvgItem;
 }
Exemplo n.º 18
0
        public int GetSellPriceFor(Item item)
        {
            int price = 0;

            this.m_Table.TryGetValue(item.GetType(), out price);

            if (item is BaseArmor)
            {
                BaseArmor armor = (BaseArmor)item;

                if (armor.Quality == ArmorQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (armor.Quality == ArmorQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                price += 100 * (int)armor.Durability;

                price += 100 * (int)armor.ProtectionLevel;

                //daat99 OWLTR start - resources cost more
                if (OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.RESOURCE_COST))
                {
                    double d_Mult = (int)armor.Resource;
                    if (d_Mult > 1 && d_Mult < 101)
                    {
                        d_Mult = 10 + (d_Mult - 1);
                    }
                    else if (d_Mult > 101 && d_Mult < 201)
                    {
                        d_Mult = 10 + (d_Mult - 101);
                    }
                    else if (d_Mult > 201 && d_Mult < 300)
                    {
                        d_Mult = 10 + (d_Mult - 201);
                    }
                    else
                    {
                        d_Mult = 10;
                    }
                    price = (int)((d_Mult * price) / 10);
                }
                //daat99 OWLTR end - resources cost more
                if (price < 1)
                {
                    price = 1;
                }
            }
            else if (item is BaseWeapon)
            {
                BaseWeapon weapon = (BaseWeapon)item;

                if (weapon.Quality == WeaponQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (weapon.Quality == WeaponQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                price += 100 * (int)weapon.DurabilityLevel;

                //daat99 OWLTR start - resources cost more
                if (OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.RESOURCE_COST))
                {
                    double d_Mult = (int)weapon.Resource;
                    if (d_Mult > 1 && d_Mult < 101)
                    {
                        d_Mult = 10 + (d_Mult - 1);
                    }
                    else if (d_Mult > 300 && d_Mult < 400)
                    {
                        d_Mult = 10 + (d_Mult - 300);
                    }
                    else
                    {
                        d_Mult = 10;
                    }
                    price = (int)((d_Mult * price) / 10);
                }
                //daat99 OWLTR end - resources cost more

                if (price < 1)
                {
                    price = 1;
                }
            }
            else if (item is BaseBeverage)
            {
                int price1 = price, price2 = price;

                if (item is Pitcher)
                {
                    price1 = 3;
                    price2 = 5;
                }
                else if (item is BeverageBottle)
                {
                    price1 = 3;
                    price2 = 3;
                }
                else if (item is Jug)
                {
                    price1 = 6;
                    price2 = 6;
                }

                BaseBeverage bev = (BaseBeverage)item;

                if (bev.IsEmpty || bev.Content == BeverageType.Milk)
                {
                    price = price1;
                }
                else
                {
                    price = price2;
                }
            }

            return(price);
        }
Exemplo n.º 19
0
        public int GetSellPriceFor(Item item)
        {
            int price = (int)m_Table[item.GetType()];

            if (item is BaseArmor)
            {
                BaseArmor armor = (BaseArmor)item;

                /*if ( armor.Quality == CraftQuality.Low )
                 *      price = (int)( price * 0.60 );
                 * else if ( armor.Quality == CraftQuality.Exceptional )
                 *      price = (int)( price * 1.25 );*/

                // quality: -30% to +20%
                if (armor.InitMaxHits > 0)
                {
                    price = (int)(price * ((armor.MaxHitPoints / ((double)armor.InitMaxHits)) * 0.5 + 0.70));
                }

                // condition: -10% to +2.5%
                if (armor.MaxHitPoints > 0)
                {
                    price = (int)(price * ((armor.HitPoints / ((double)armor.MaxHitPoints)) * 0.125 + 0.9));
                }

                price += 100 * (int)armor.Durability;
                price += 100 * (int)armor.ProtectionLevel;
            }
            else if (item is BaseWeapon)
            {
                BaseWeapon weapon = (BaseWeapon)item;

                /*if ( weapon.Quality == CraftQuality.Low )
                 *      price = (int)( price * 0.60 );
                 * else if ( weapon.Quality == CraftQuality.Exceptional )
                 *      price = (int)( price * 1.25 );*/

                // quality: -30% to +20%
                if (weapon.InitMaxHits > 0)
                {
                    price = (int)(price * ((weapon.MaxHits / ((double)weapon.InitMaxHits)) * 0.5 + 0.70));
                }

                // condition: -10% to +2.5%
                if (weapon.MaxHits > 0)
                {
                    price = (int)(price * ((weapon.Hits / ((double)weapon.MaxHits)) * 0.125 + 0.9));
                }

                price += 100 * (int)weapon.DurabilityLevel;
                price += 100 * (int)weapon.DamageLevel;
            }
            else if (item is BaseBeverage)
            {
                int price1 = price, price2 = price;

                if (item is Pitcher)
                {
                    price1 = 3; price2 = 5;
                }
                else if (item is BeverageBottle)
                {
                    price1 = 3; price2 = 3;
                }
                else if (item is Jug)
                {
                    price1 = 6; price2 = 6;
                }

                BaseBeverage bev = (BaseBeverage)item;

                if (bev.IsEmpty || bev.Content == BeverageType.Milk)
                {
                    price = price1;
                }
                else
                {
                    price = price2;
                }
            }
            else if (item is ISellPrice)
            {
                price = ((ISellPrice)item).GetSellPrice();
            }

            if (price < 1)
            {
                price = 1;
            }

            return(price);
        }
Exemplo n.º 20
0
        public int GetSellPriceFor(Item item)
        {
            if (m_Table == null)
            {
                return(0);
            }

            int price = (int)m_Table[item.GetType()];

            if (item is BaseArmor)
            {
                BaseArmor armor = (BaseArmor)item;

                if (armor.Quality == ArmorQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (armor.Quality == ArmorQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                price += 100 * (int)armor.Durability;

                price += 100 * (int)armor.ProtectionLevel;

                if (price < 1)
                {
                    price = 1;
                }
            }

            else if (item is BaseWeapon)
            {
                BaseWeapon weapon = (BaseWeapon)item;

                if (weapon.Quality == WeaponQuality.Low)
                {
                    price = (int)(price * 0.60);
                }
                else if (weapon.Quality == WeaponQuality.Exceptional)
                {
                    price = (int)(price * 1.25);
                }

                price += 100 * (int)weapon.DurabilityLevel;

                price += 100 * (int)weapon.DamageLevel;

                if (price < 1)
                {
                    price = 1;
                }
            }
            else if (item is BaseBeverage)
            {
                int price1 = price, price2 = price;

                if (item is Pitcher)
                {
                    price1 = 3; price2 = 5;
                }
                else if (item is BeverageBottle)
                {
                    price1 = 3; price2 = 3;
                }
                else if (item is Jug)
                {
                    price1 = 6; price2 = 6;
                }

                BaseBeverage bev = (BaseBeverage)item;

                if (bev.IsEmpty || bev.Content == BeverageType.Milk)
                {
                    price = price1;
                }
                else
                {
                    price = price2;
                }
            }

            return(price);
        }
Exemplo n.º 21
0
        public void Pour(Mobile from, Item item)
        {
            if (m_PlantStatus >= PlantStatus.DeadTwigs)
            {
                return;
            }

            if (m_PlantStatus == PlantStatus.DecorativePlant)
            {
                LabelTo(from, 1053049); // This is a decorative plant, it does not need watering!
                return;
            }

            if (!RequiresUpkeep)
            {
                LabelTo(from, 1150619); // You don't need to water it.
                return;
            }

            if (!IsUsableBy(from))
            {
                LabelTo(from, 1061856); // You must have the item in your backpack or locked down in order to use it.
                return;
            }

            if (item is BaseBeverage)
            {
                BaseBeverage beverage = (BaseBeverage)item;

                if (beverage.IsEmpty || !beverage.Pourable || beverage.Content != BeverageType.Water)
                {
                    LabelTo(from, 1053069); // You can't use that on a plant!
                    return;
                }

                if (!beverage.ValidateUse(from, true))
                {
                    return;
                }

                beverage.Quantity--;
                m_PlantSystem.Water++;

                from.PlaySound(0x4E);
                LabelTo(from, 1061858); // You soften the dirt with water.

                m_PlantSystem.NextGrowth = DateTime.UtcNow + PlantSystem.CheckDelay;
            }
            else if (item is BasePotion)
            {
                BasePotion potion = (BasePotion)item;

                int message;
                if (ApplyPotion(potion.PotionEffect, false, out message))
                {
                    potion.Consume();
                    from.PlaySound(0x240);
                    from.AddToBackpack(new Bottle());

                    m_PlantSystem.NextGrowth = DateTime.UtcNow + PlantSystem.CheckDelay;
                }
                LabelTo(from, message);
            }
            else if (item is PotionKeg)
            {
                PotionKeg keg = (PotionKeg)item;

                if (keg.Held <= 0)
                {
                    LabelTo(from, 1053069); // You can't use that on a plant!
                    return;
                }

                int message;
                if (ApplyPotion(keg.Type, false, out message))
                {
                    keg.Held--;
                    from.PlaySound(0x240);

                    m_PlantSystem.NextGrowth = DateTime.UtcNow + PlantSystem.CheckDelay;
                }
                LabelTo(from, message);
            }
            else
            {
                LabelTo(from, 1053069); // You can't use that on a plant!
            }
        }
Exemplo n.º 22
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (info.ButtonID == 0 || m_Plant.Deleted || m_Plant.PlantStatus >= PlantStatus.DecorativePlant)
            {
                return;
            }

            if (((info.ButtonID >= 6 && info.ButtonID <= 10) || info.ButtonID == 12) && !from.InRange(m_Plant.GetWorldLocation(), 3))
            {
                from.LocalOverheadMessage(MessageType.Regular, 0x3E9, 500446); // That is too far away.
                return;
            }

            if (!m_Plant.IsUsableBy(from))
            {
                m_Plant.LabelTo(from, 1061856); // You must have the item in your backpack or locked down in order to use it.
                return;
            }

            switch (info.ButtonID)
            {
            case 1:     // Reproduction menu
            {
                if (m_Plant.PlantStatus > PlantStatus.BowlOfDirt)
                {
                    from.SendGump(new ReproductionGump(m_Plant));
                }
                else
                {
                    from.SendLocalizedMessage(1061885);         // You need to plant a seed in the bowl first.

                    from.SendGump(new MainPlantGump(m_Plant));
                }

                break;
            }

            case 2:                                        // Infestation
            {
                from.Send(new DisplayHelpTopic(54, true)); // INFESTATION LEVEL

                from.SendGump(new MainPlantGump(m_Plant));

                break;
            }

            case 3:                                        // Fungus
            {
                from.Send(new DisplayHelpTopic(56, true)); // FUNGUS LEVEL

                from.SendGump(new MainPlantGump(m_Plant));

                break;
            }

            case 4:                                        // Poison
            {
                from.Send(new DisplayHelpTopic(58, true)); // POISON LEVEL

                from.SendGump(new MainPlantGump(m_Plant));

                break;
            }

            case 5:                                        // Disease
            {
                from.Send(new DisplayHelpTopic(60, true)); // DISEASE LEVEL

                from.SendGump(new MainPlantGump(m_Plant));

                break;
            }

            case 6:     // Water
            {
                Item[] item = from.Backpack.FindItemsByType(typeof(BaseBeverage));

                bool foundUsableWater = false;

                if (item != null && item.Length > 0)
                {
                    for (int i = 0; i < item.Length; ++i)
                    {
                        BaseBeverage beverage = (BaseBeverage)item[i];

                        if (!beverage.IsEmpty && beverage.Pourable && beverage.Content == BeverageType.Water)
                        {
                            foundUsableWater = true;
                            m_Plant.Pour(from, beverage);
                            break;
                        }
                    }
                }

                if (!foundUsableWater)
                {
                    from.Target = new PlantPourTarget(m_Plant);
                    from.SendLocalizedMessage(1060808, "#" + m_Plant.GetLocalizedPlantStatus().ToString());         // Target the container you wish to use to water the ~1_val~.
                }

                from.SendGump(new MainPlantGump(m_Plant));

                break;
            }

            case 7:     // Poison potion
            {
                AddPotion(from, PotionEffect.PoisonGreater, PotionEffect.PoisonDeadly);

                break;
            }

            case 8:     // Cure potion
            {
                AddPotion(from, PotionEffect.CureGreater);

                break;
            }

            case 9:     // Heal potion
            {
                AddPotion(from, PotionEffect.HealGreater);

                break;
            }

            case 10:     // Strength potion
            {
                AddPotion(from, PotionEffect.StrengthGreater);

                break;
            }

            case 11:                                       // Help
            {
                from.Send(new DisplayHelpTopic(48, true)); // PLANT GROWING

                from.SendGump(new MainPlantGump(m_Plant));

                break;
            }

            case 12:     // Empty the bowl
            {
                from.SendGump(new EmptyTheBowlGump(m_Plant));

                break;
            }
            }
        }
Exemplo n.º 23
0
            protected override void OnTarget(Mobile from, object targeted)
            {
                if (targeted is Mobile)
                {
                    from.SendMessage("Une telle action serait inappropriée...");                       // You feel that such an action would be inappropriate.
                    return;
                }
                if (targeted is CookableCheese)
                {
                    Food food = (Food)targeted;

                    if (from.CheckTargetSkill(SkillName.TasteID, food, 0, 100))
                    {
                        if (food.Poison != null)
                        {
                            from.SendMessage("Des effluves de poison parviennent à votre nez"); // It appears to have poison smeared on it.
                        }
                        else
                        {
                            // No poison on the food
                            from.SendMessage("Vous ne décelez rien d'anormal dans ce que vous goûtez"); // You detect nothing unusual about this substance.
                        }
                    }
                    else
                    {
                        // Skill check failed
                        from.SendMessage("Vous ne discernez pas correctement les aromes"); // You cannot discern anything about this substance.
                    }
                    return;
                }

                if (targeted is Food)
                {
                    Food food = (Food)targeted;

                    if (from.CheckTargetSkill(SkillName.TasteID, food, 0, 100))
                    {
                        if (food.Poison != null)
                        {
                            from.SendMessage("Des effluves de poison parviennent à votre nez");                               // It appears to have poison smeared on it.
                        }
                        else
                        {
                            // No poison on the food
                            from.SendMessage("Vous ne décelez rien d'anormal dans ce que vous goûtez");  // You detect nothing unusual about this substance.
                        }
                    }
                    else
                    {
                        // Skill check failed
                        from.SendMessage("Vous ne discernez pas correctement les aromes");                           // You cannot discern anything about this substance.
                    }
                    return;
                }
                if (targeted is BaseBeverage)
                {
                    BaseBeverage beverage = (BaseBeverage)targeted;

                    if (from.CheckTargetSkill(SkillName.TasteID, beverage, 0, 100))
                    {
                        if (beverage.Poison != null)
                        {
                            from.SendMessage("Des effluves de poison parviennent à votre nez"); // It appears to have poison smeared on it.
                        }
                        else
                        {
                            // No poison on the food
                            from.SendMessage("Vous ne décelez rien d'anormal dans ce que vous goûtez"); // You detect nothing unusual about this substance.
                        }
                    }
                    else
                    {
                        // Skill check failed
                        from.SendMessage("Vous ne discernez pas correctement les aromes"); // You cannot discern anything about this substance.
                    }
                    return;
                }
                if (targeted is GenderPotion)
                {
                    GenderPotion potion = (GenderPotion)targeted;

                    if (from.Skills[SkillName.TasteID].Value >= 75)
                    {
                        if (potion.Female)
                        {
                            from.SendMessage("Cette fiole sent les fleurs");
                        }
                        else
                        {
                            from.SendMessage("Cette fiole sent la sueur");
                        }
                    }
                    else
                    {
                        from.SendMessage("Votre nez n'est pas encore suffisamment développé pour en dénoter la subtile effluve");
                    }
                    return;
                }
                if (targeted is BasePotion)
                {
                    BasePotion potion = (BasePotion)targeted;

                    potion.SendLocalizedMessageTo(from, 502813);                       // You already know what kind of potion that is.
                    potion.SendLocalizedMessageTo(from, potion.LabelNumber);
                    return;
                }
                if (targeted is PotionKeg)
                {
                    PotionKeg keg = (PotionKeg)targeted;

                    if (keg.Held <= 0)
                    {
                        keg.SendLocalizedMessageTo(from, 502228);                           // There is nothing in the keg to taste!
                    }
                    else
                    {
                        keg.SendLocalizedMessageTo(from, 502229);                           // You are already familiar with this keg's contents.
                        keg.SendLocalizedMessageTo(from, keg.LabelNumber);
                    }
                    return;
                }
                // The target is not food or potion or potion keg.
                from.SendLocalizedMessage(502820);                           // That's not something you can taste.
            }