示例#1
0
 public CityVendorDismiss(CityPlayerVendor vend, DateTime expire) : base(TimeSpan.Zero, TimeSpan.FromSeconds(1.5))
 {
     m_vendor = vend;
     m_Expire = expire;
     //m_Expire = DateTime.Now + TimeSpan.FromSeconds( 10.0 );  Left in for Testing purposes.
     m_owner = vend.Owner;
 }
        public override void OnResponse(Mobile from, string text)
        {
            text = text.Trim();

            if (text.Length > 40)
            {
                text = text.Substring(0, 40);
            }

            if (text.Length > 0)
            {
                try
                {
                    int amount = Convert.ToInt32(text);

                    if (amount <= -1)
                    {
                        from.SendMessage("Income Tax can only range from 0 - 100");
                    }
                    else if (amount <= 100)
                    {
                        from.SendMessage("You have set the cities income tax to {0}.", amount);
                        m_Stone.IncomeTax = amount;

                        if (m_Stone.Vendors.Count > 0)
                        {
                            foreach (Mobile mob in m_Stone.Vendors)
                            {
                                CityPlayerVendor vend = (CityPlayerVendor)mob;
                                vend.TaxRate = amount;
                            }
                        }


                        foreach (Mobile m in m_Stone.Citizens)
                        {
                            m.SendMessage(53, "The cities income tax has changed to {0}.", amount);
                        }
                    }
                    else
                    {
                        from.SendMessage("Taxes can only range from 0 - 100");
                    }
                }
                catch
                {
                    from.SendMessage("You must enter a number amount.");
                }
            }

            m_From.CloseGump(typeof(CityManagementGump));
            m_From.SendGump(new CityManagementGump(m_Stone, m_From));
        }
示例#3
0
        public override void OnResponse(NetState state, RelayInfo info)
        {
            Mobile from = state.Mobile;

            if (!m_Vendor.CanInteractWith(from, false))
            {
                return;
            }

            if (m_Vendor.IsOwner(from))
            {
                m_Vendor.SayTo(from, 503212);                   // You own this shop, just take what you want.
                return;
            }

            if (info.ButtonID == 1)
            {
                m_Vendor.Say(from.Name);

                if (!m_VI.Valid || !m_VI.Item.IsChildOf(m_Vendor.Backpack))
                {
                    m_Vendor.SayTo(from, 503216);                       // You can't buy that.
                    return;
                }

                int totalGold = 0;

                if (from.Backpack != null)
                {
                    totalGold += from.Backpack.GetAmount(typeof(Gold));
                }

                totalGold += Banker.GetBalance(from);

                if (totalGold < m_VI.Price)
                {
                    m_Vendor.SayTo(from, 503205);                       // You cannot afford this item.
                }
                else if (!from.PlaceInBackpack(m_VI.Item))
                {
                    m_Vendor.SayTo(from, 503204);                       // You do not have room in your backpack for this.
                }
                else
                {
                    int leftPrice = m_VI.Price;

                    if (from.Backpack != null)
                    {
                        leftPrice -= from.Backpack.ConsumeUpTo(typeof(Gold), leftPrice);
                    }

                    if (leftPrice > 0)
                    {
                        Banker.Withdraw(from, leftPrice);
                    }

                    if (m_Vendor is CityPlayerVendor)
                    {
                        CityPlayerVendor vend = (CityPlayerVendor)m_Vendor;
                        double           rate = Convert.ToDouble(vend.TaxRate) / 100.0;
                        double           tax  = Convert.ToDouble(m_VI.Price) * rate;
                        int taxx = Convert.ToInt32(tax);
                        vend.IncomeTax += taxx;
                        vend.HoldGold  += (m_VI.Price - taxx);
                    }
                    else
                    {
                        m_Vendor.HoldGold += m_VI.Price;
                    }

                    from.SendLocalizedMessage(503201);                       // You take the item.
                }
            }
            else
            {
                from.SendLocalizedMessage(503207);                   // Cancelled purchase.
            }
        }
示例#4
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (info.ButtonID == 1 || info.ButtonID == 2)               // See goods or Customize
            {
                m_Vendor.CheckTeleport(from);
            }

            if (!m_Vendor.CanInteractWith(from, true))
            {
                return;
            }

            switch (info.ButtonID)
            {
            case 1:                     // See goods
            {
                m_Vendor.OpenBackpack(from);

                break;
            }

            case 2:                     // Customize
            {
                from.SendGump(new NewPlayerVendorCustomizeGump(m_Vendor));

                break;
            }

            case 3:                     // Rename Shop
            {
                m_Vendor.RenameShop(from);

                break;
            }

            case 4:                     // Rename Vendor
            {
                m_Vendor.Rename(from);

                break;
            }

            case 5:                     // Open Paperdoll
            {
                m_Vendor.DisplayPaperdollTo(from);

                break;
            }

            case 6:                     // Collect Gold
            {
                m_Vendor.CollectGold(from);

                break;
            }

            case 7:                     // Dismiss Vendor
            {
                if (m_Vendor is CityPlayerVendor)
                {
                    CityPlayerVendor vend = (CityPlayerVendor)m_Vendor;
                    vend.Dismiss(from);
                }
                else
                {
                    m_Vendor.Dismiss(from);
                }

                break;
            }
            }
        }
示例#5
0
        public NewPlayerVendorOwnerGump(PlayerVendor vendor) : base(50, 200)
        {
            m_Vendor = vendor;

            int perRealWorldDay = vendor.ChargePerRealWorldDay;
            int goldHeld        = vendor.HoldGold;

            AddBackground(25, 10, 530, 180, 0x13BE);

            AddImageTiled(35, 20, 510, 160, 0xA40);
            AddAlphaRegion(35, 20, 510, 160);

            AddImage(10, 0, 0x28DC);
            AddImage(537, 175, 0x28DC);
            AddImage(10, 175, 0x28DC);
            AddImage(537, 0, 0x28DC);

            if (vendor is CityPlayerVendor)
            {
                CityPlayerVendor vend = (CityPlayerVendor)vendor;
                AddHtmlLocalized(40, 108, 260, 20, 1062509, 0x7FFF, false, false);                   // Shop Name:
                AddLabel(140, 106, 0x66D, vendor.ShopName);
                AddLabel(40, 58, 0x480, "Income Tax Rate:");
                AddLabel(300, 58, 0x480, vend.TaxRate.ToString());
                AddLabel(320, 58, 0x480, "%");
            }
            else
            {
                if (goldHeld < perRealWorldDay)
                {
                    int goldNeeded = perRealWorldDay - goldHeld;

                    AddHtmlLocalized(40, 35, 260, 20, 1038320, 0x7FFF, false, false);               // Gold needed for 1 day of vendor salary:
                    AddLabel(300, 35, 0x1F, goldNeeded.ToString());
                }
                else
                {
                    int days = goldHeld / perRealWorldDay;

                    AddHtmlLocalized(40, 35, 260, 20, 1038318, 0x7FFF, false, false);               // # of days Vendor salary is paid for:
                    AddLabel(300, 35, 0x480, days.ToString());
                }

                AddHtmlLocalized(40, 58, 260, 20, 1038324, 0x7FFF, false, false);           // My charge per real world day is:
                AddLabel(300, 58, 0x480, perRealWorldDay.ToString());
            }
            AddHtmlLocalized(40, 82, 260, 20, 1038322, 0x7FFF, false, false);               // Gold held in my account:
            AddLabel(300, 82, 0x480, goldHeld.ToString());

            AddHtmlLocalized(40, 108, 260, 20, 1062509, 0x7FFF, false, false);               // Shop Name:
            AddLabel(140, 106, 0x66D, vendor.ShopName);

            if (vendor is RentedVendor)
            {
                int days, hours;
                ((RentedVendor)vendor).ComputeRentalExpireDelay(out days, out hours);

                AddLabel(38, 132, 0x480, String.Format("Location rental will expire in {0} day{1} and {2} hour{3}.", days, days != 1 ? "s" : "", hours, hours != 1 ? "s" : ""));
            }

            AddButton(390, 24, 0x15E1, 0x15E5, 1, GumpButtonType.Reply, 0);
            AddHtmlLocalized(408, 21, 120, 20, 1019068, 0x7FFF, false, false);               // See goods

            AddButton(390, 44, 0x15E1, 0x15E5, 2, GumpButtonType.Reply, 0);
            AddHtmlLocalized(408, 41, 120, 20, 1019069, 0x7FFF, false, false);               // Customize

            AddButton(390, 64, 0x15E1, 0x15E5, 3, GumpButtonType.Reply, 0);
            AddHtmlLocalized(408, 61, 120, 20, 1062434, 0x7FFF, false, false);               // Rename Shop

            AddButton(390, 84, 0x15E1, 0x15E5, 4, GumpButtonType.Reply, 0);
            AddHtmlLocalized(408, 81, 120, 20, 3006217, 0x7FFF, false, false);               // Rename Vendor

            AddButton(390, 104, 0x15E1, 0x15E5, 5, GumpButtonType.Reply, 0);
            AddHtmlLocalized(408, 101, 120, 20, 3006123, 0x7FFF, false, false);               // Open Paperdoll

            AddButton(390, 124, 0x15E1, 0x15E5, 6, GumpButtonType.Reply, 0);
            AddLabel(408, 121, 0x480, "Collect Gold");

            AddButton(390, 144, 0x15E1, 0x15E5, 7, GumpButtonType.Reply, 0);
            AddLabel(408, 141, 0x480, "Dismiss Vendor");

            AddButton(390, 162, 0x15E1, 0x15E5, 0, GumpButtonType.Reply, 0);
            AddHtmlLocalized(408, 161, 120, 20, 1011012, 0x7FFF, false, false);               // CANCEL
        }
        public override void OnDoubleClick(Mobile from)
        {
            if (!IsChildOf(from.Backpack))
            {
                from.SendLocalizedMessage(1042001);                   // That must be in your pack for you to use it.
            }
            else
            {
                PlayerMobile        pm    = (PlayerMobile)from;
                CityManagementStone stone = (CityManagementStone)pm.City;


                if (stone == null)
                {
                    from.SendMessage("You must be a citizen of a city to use this!");
                }
                else
                {
                    Region r = stone.PCRegion;

                    if (PlayerGovernmentSystem.CheckIfHouseInCity(from, r))
                    {
                        ;
                    }
                    {
                        if (from.Region is HouseRegion)
                        {
                            BaseHouse house = BaseHouse.FindHouseAt(from);
                            if (house.Owner != from)
                            {
                                from.SendMessage("You may not place vendors in a house you do not own!");
                            }
                            else
                            {
                                Mobile v = new CityPlayerVendor(from, stone);
                                stone.Vendors.Add(v);
                                CityPlayerVendor vend = (CityPlayerVendor)v;
                                vend.TaxRate       = stone.IncomeTax;
                                vend.OriginalStone = stone;
                                v.Direction        = from.Direction & Direction.Mask;
                                v.MoveToWorld(from.Location, from.Map);

                                v.SayTo(from, 503246);                                   // Ah! it feels good to be working again.

                                this.Delete();
                            }
                        }

                        else
                        {
                            bool market = false;
                            if (from.Region is CityMarketRegion)
                            {
                                CityMarketRegion cr = (CityMarketRegion)from.Region;
                                if (cr.Stone == stone)
                                {
                                    market = true;
                                }
                            }

                            if (PlayerGovernmentSystem.IsAtCity(from) || market)
                            {
                                Mobile v = new CityPlayerVendor(from, stone);
                                stone.Vendors.Add(v);
                                CityPlayerVendor vend = (CityPlayerVendor)v;
                                vend.OriginalStone = stone;
                                vend.TaxRate       = stone.IncomeTax;
                                v.Direction        = from.Direction & Direction.Mask;
                                v.MoveToWorld(from.Location, from.Map);

                                v.SayTo(from, 503246);                                   // Ah! it feels good to be working again.

                                this.Delete();
                            }
                            else
                            {
                                from.SendMessage("You may only do this in a city you are a member of!");
                            }
                        }
                    }
                }
            }
        }