Example #1
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (info.ButtonID == 0 || m_pot.Deleted || !from.InRange(m_pot.GetWorldLocation(), 3))
            {
                return;
            }

            if (!m_pot.IsAccessibleTo(from))
            {
                from.PrivateOverheadMessage(0, 1154, false, "I cannot use that.", from.NetState);
                return;
            }

            switch (info.ButtonID)
            {
            case (int)Buttons.cmdHelp:
            {
                from.SendGump(new apiBeeHiveSmallPotGump(from, m_pot));
                from.SendGump(new apiBeeHiveHelpGump(from, 1));
                break;
            }

            case (int)Buttons.cmdAddRaw:                     //Add Raw Honey
            {
                from.SendGump(new apiBeeHiveSmallPotGump(from, m_pot));

                if (m_pot.PureBeeswax > 0)
                {
                    from.PrivateOverheadMessage(0, 1154, false, "You cannot mix raw beeswax with rendered wax.  Please empty the pot first.", from.NetState);
                    return;
                }

                from.PrivateOverheadMessage(0, 1154, false, "Choose the raw beeswax you wish to add to the pot.", from.NetState);
                m_pot.BeginAdd(from);

                break;
            }

            case (int)Buttons.cmdEmptyPot:                     //Empty the pot
            {
                if (m_pot.PureBeeswax < 1 && m_pot.RawBeeswax < 1)
                {
                    from.PrivateOverheadMessage(0, 1154, false, "There is no wax in the pot.", from.NetState);
                    from.SendGump(new apiBeeHiveSmallPotGump(from, m_pot));
                    return;
                }

                Item wax;

                if (m_pot.PureBeeswax > 0)
                {
                    wax = new Beeswax(m_pot.PureBeeswax);
                }
                else
                {
                    wax = new RawBeeswax(m_pot.RawBeeswax);
                }

                if (!from.PlaceInBackpack(wax))
                {
                    wax.Delete();
                    from.PrivateOverheadMessage(0, 1154, false, "There is not enough room in your backpack for the wax!", from.NetState);
                    from.SendGump(new apiBeeHiveSmallPotGump(from, m_pot));
                    break;
                }

                m_pot.RawBeeswax  = 0;
                m_pot.PureBeeswax = 0;

                m_pot.ItemID = 2532;                         //empty pot

                from.SendGump(new apiBeeHiveSmallPotGump(from, m_pot));
                from.PrivateOverheadMessage(0, 1154, false, "You place the beeswax in your pack.", from.NetState);

                break;
            }

            case (int)Buttons.cmdRenderWax:                     //render the wax
            {
                if (m_pot.UsesRemaining < 1)
                {                        //no uses remaining
                    from.PrivateOverheadMessage(0, 1154, false, "The pot is too damamged to render beeswax.", from.NetState);
                    from.SendGump(new apiBeeHiveSmallPotGump(from, m_pot));
                    return;
                }
                else if (m_pot.PureBeeswax > 1)
                {                        //already rendered
                    from.PrivateOverheadMessage(0, 1154, false, "The pot is already full of rendered beeswax.", from.NetState);
                    from.SendGump(new apiBeeHiveSmallPotGump(from, m_pot));
                    return;
                }
                else if (m_pot.RawBeeswax < 10)
                {                        //not enough raw beeswax
                    from.PrivateOverheadMessage(0, 1154, false, "There is not enough raw beeswax in the pot.", from.NetState);
                    from.SendGump(new apiBeeHiveSmallPotGump(from, m_pot));
                    return;
                }
                else if (!BeeHiveHelper.Find(from, BeeHiveHelper.m_HeatSources))
                {                        //need a heat source to melt the wax
                    from.PrivateOverheadMessage(0, 1154, false, "You must be near a heat source to render beeswax.", from.NetState);
                    from.SendGump(new apiBeeHiveSmallPotGump(from, m_pot));
                    return;
                }

                m_pot.ItemID = 0x142b;                         //pot overflowing with wax

                m_pot.UsesRemaining--;
                if (m_pot.UsesRemaining < 0)
                {
                    m_pot.UsesRemaining = 0;
                }

                int waste = Utility.RandomMinMax(1, m_pot.RawBeeswax / 5);

                if (GiveSlumgum)
                {                        //give slumgum
                    Item gum = new Slumgum(Math.Max(1, waste));

                    if (!from.PlaceInBackpack(gum))
                    {
                        gum.Delete();
                    }
                }

                from.PlaySound(0x21);
                from.PrivateOverheadMessage(0, 1154, false, "You slowly melt the raw beeswax and remove the impurities.", from.NetState);

                m_pot.PureBeeswax = m_pot.RawBeeswax - waste;
                m_pot.RawBeeswax  = 0;

                break;
            }
            }
        }
        public void EndAdd(Mobile from, object o)
        {
            if (o is Item && ((Item)o).IsChildOf(from.Backpack))
            {
                if (o is Beeswax)
                {
                    //error checking
                    if (UsesRemaining < 1)
                    {
                        from.PrivateOverheadMessage(0, 1154, false, "The pot is too damaged to melt any more wax.", from.NetState);
                        return;
                    }
                    else if (m_Beeswax >= MaxWax)
                    {
                        from.PrivateOverheadMessage(0, 1154, false, "The pot cannot hold any more wax.", from.NetState);
                        return;
                    }
                    else if (!BeeHiveHelper.Find(from, BeeHiveHelper.m_HeatSources))
                    {
                        from.PrivateOverheadMessage(0, 1154, false, "You must be near a heat source to melt beeswax.", from.NetState);
                        return;
                    }

                    Beeswax wax = (Beeswax)o;

                    if ((wax.Amount + MeltedBeeswax) > MaxWax)
                    {
                        wax.Amount   -= (MaxWax - MeltedBeeswax);
                        MeltedBeeswax = MaxWax;
                    }
                    else
                    {
                        MeltedBeeswax += wax.Amount;
                        wax.Delete();
                    }

                    from.PrivateOverheadMessage(0, 1154, false, "You slowly melt the beeswax and mix it in the pot.", from.NetState);

                    this.ItemID = 5162;                     //change the graphic

                    from.PlaySound(43);                     //bellow sound
                    //from.PlaySound( 0x21 ); //bubbling sound

                    UsesRemaining--;

                    if (MeltedBeeswax < MaxWax)
                    {
                        BeginAdd(from);
                    }
                }
                else if (o == this)
                {
                    //empty the pot
                    if (MeltedBeeswax < 1)
                    {
                        from.PrivateOverheadMessage(0, 1154, false, "There is no wax in the pot.", from.NetState);
                    }
                    else
                    {
                        Item wax = new Beeswax(MeltedBeeswax);

                        if (!from.PlaceInBackpack(wax))
                        {
                            wax.Delete();
                            from.PrivateOverheadMessage(0, 1154, false, "There is not enough room in your backpack for the wax!", from.NetState);
                            return;
                        }

                        MeltedBeeswax = 0;

                        ItemID = 2541;                         //empty pot

                        from.PrivateOverheadMessage(0, 1154, false, "You empty the pot and place the beeswax in your pack.", from.NetState);
                    }
                }
                else
                {
                    from.PrivateOverheadMessage(0, 1154, false, "You can only melt pure beeswax in the pot.", from.NetState);
                }
            }
            else
            {
                from.PrivateOverheadMessage(0, 1154, false, "The wax must be in your pack to target it.", from.NetState);
            }
        }