예제 #1
0
        public TithingGump(Mobile from, int offer) : base(160, 40)
        {
            int totalGold = from.TotalGold;

            if (offer > totalGold)
            {
                offer = totalGold;
            }
            else if (offer < 0)
            {
                offer = 0;
            }

            m_From  = from;
            m_Offer = offer;

            AddPage(0);

            AddImage(30, 30, 102);

            AddHtmlLocalized(95, 100, 120, 100, 1060198, 0, false, false);               // May your wealth bring blessings to those in need, if tithed upon this most sacred site.

            AddLabel(57, 274, 0, "Gold:");
            AddLabel(87, 274, 53, (totalGold - offer).ToString());

            AddLabel(137, 274, 0, "Tithe:");
            AddLabel(172, 274, 53, offer.ToString());

            AddButton(105, 230, 5220, 5220, 2, GumpButtonType.Reply, 0);
            AddButton(113, 230, 5222, 5222, 2, GumpButtonType.Reply, 0);
            AddLabel(108, 228, 0, "<");
            AddLabel(112, 228, 0, "<");

            AddButton(127, 230, 5223, 5223, 1, GumpButtonType.Reply, 0);
            AddLabel(131, 228, 0, "<");

            AddButton(147, 230, 5224, 5224, 3, GumpButtonType.Reply, 0);
            AddLabel(153, 228, 0, ">");

            AddButton(168, 230, 5220, 5220, 4, GumpButtonType.Reply, 0);
            AddButton(176, 230, 5222, 5222, 4, GumpButtonType.Reply, 0);
            AddLabel(172, 228, 0, ">");
            AddLabel(176, 228, 0, ">");

            AddButton(217, 272, 4023, 4024, 5, GumpButtonType.Reply, 0);

            // Teiravon Tithe
            TeiravonMobile m_Player = m_From as TeiravonMobile;

            if (m_Player != null && (m_Player.IsCavalier() || m_Player.IsPaladin()) && offer == 0 && totalGold > 0)
            {
                m_Player.SendMessage("You have {0} War Mount Death{1}.", m_Player.WarMountDeaths, (m_Player.WarMountDeaths > 0) ? "s" : "");
                m_Player.SendMessage("Every 500 tithed gold coin will reduce one war mount death.");
            }
            else if (m_Player != null && offer == 0 && totalGold == 0)
            {
                m_Player.SendMessage("You dont have any gold to tithe!");
            }
        }
예제 #2
0
        public static Chart CompileStatChart()
        {
            /*
             *          PieChart chart = new PieChart( "Stat Distribution", "graphs_strdexint_distrib", true );
             *
             *          ChartItem strItem = new ChartItem( "Strength", 0 );
             *          ChartItem dexItem = new ChartItem( "Dexterity", 0 );
             *          ChartItem intItem = new ChartItem( "Intelligence", 0 );
             *
             *          foreach ( Mobile mob in World.Mobiles.Values )
             *          {
             *                  if ( mob.RawStatTotal == mob.StatCap && mob is PlayerMobile )
             *                  {
             *                          strItem.Value += mob.RawStr;
             *                          dexItem.Value += mob.RawDex;
             *                          intItem.Value += mob.RawInt;
             *                  }
             *          }
             *
             *          chart.Items.Add( strItem );
             *          chart.Items.Add( dexItem );
             *          chart.Items.Add( intItem );
             */

            PieChart chart = new PieChart("Class Distribution", "graphs_class_distrib", true);

            ChartItem fightItem   = new ChartItem("Fighters", 0);
            ChartItem rogueItem   = new ChartItem("Rogues", 0);
            ChartItem mageItem    = new ChartItem("Mages", 0);
            ChartItem clericItem  = new ChartItem("Clerics", 0);
            ChartItem rangerItem  = new ChartItem("Rangers", 0);
            ChartItem druidItem   = new ChartItem("Druids", 0);
            ChartItem barbItem    = new ChartItem("Barbarians", 0);
            ChartItem crafterItem = new ChartItem("Crafters", 0);
            ChartItem advItem     = new ChartItem("Advanced", 0);

            foreach (Mobile mob in World.Mobiles.Values)
            {
                if (mob != null && mob is TeiravonMobile)
                {
                    TeiravonMobile tav  = mob as TeiravonMobile;
                    Account        acct = (Account)tav.Account;
                    if ((acct.LastLogin + TimeSpan.FromDays(90.0)) < DateTime.Now)
                    {
                        continue;
                    }

                    if (tav.IsFighter() || tav.IsCavalier() || tav.IsMonk())
                    {
                        fightItem.Value++;
                    }
                    else if (tav.IsThief() || tav.IsAssassin() || tav.IsBard())
                    {
                        rogueItem.Value++;
                    }
                    else if (tav.IsMage())
                    {
                        mageItem.Value++;
                    }
                    else if (tav.IsCleric() || tav.IsDarkCleric())
                    {
                        clericItem.Value++;
                    }
                    else if (tav.IsArcher() || tav.IsMageSlayer() || tav.IsRanger())
                    {
                        rangerItem.Value++;
                    }
                    else if (tav.IsForester() || tav.IsShapeshifter())
                    {
                        druidItem.Value++;
                    }
                    else if (tav.IsBerserker() || tav.IsDragoon())
                    {
                        barbItem.Value++;
                    }
                    else if (tav.IsCrafter())
                    {
                        crafterItem.Value++;
                    }
                    else
                    {
                        advItem.Value++;
                    }
                }
            }

            chart.Items.Add(fightItem);
            chart.Items.Add(rogueItem);
            chart.Items.Add(mageItem);
            chart.Items.Add(clericItem);
            chart.Items.Add(rangerItem);
            chart.Items.Add(druidItem);
            chart.Items.Add(barbItem);
            chart.Items.Add(crafterItem);
            chart.Items.Add(advItem);


            return(chart);
        }
예제 #3
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            switch (info.ButtonID)
            {
            case 0:
            {
                // You have decided to tithe no gold to the shrine.
                m_From.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1060193);
                break;
            }

            case 1:
            case 2:
            case 3:
            case 4:
            {
                int offer = 0;

                switch (info.ButtonID)
                {
                case 1: offer = m_Offer - 100; break;

                case 2: offer = 0; break;

                case 3: offer = m_Offer + 100; break;

                case 4: offer = m_From.TotalGold; break;
                }

                m_From.SendGump(new TithingGump(m_From, offer));
                break;
            }

            case 5:
            {
                int totalGold = m_From.TotalGold;

                if (m_Offer > totalGold)
                {
                    m_Offer = totalGold;
                }
                else if (m_Offer < 0)
                {
                    m_Offer = 0;
                }

                if ((m_From.TithingPoints + m_Offer) > 100000)                           // TODO: What's the maximum?
                {
                    m_Offer = (100000 - m_From.TithingPoints);
                }

                if (m_Offer <= 0)
                {
                    // You have decided to tithe no gold to the shrine.
                    m_From.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1060193);
                    break;
                }

                Container pack = m_From.Backpack;

                if (pack != null && pack.ConsumeTotal(typeof(Gold), m_Offer))
                {
                    // You tithe gold to the shrine as a sign of devotion.
                    m_From.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1060195);
                    m_From.TithingPoints += m_Offer;

                    m_From.PlaySound(0x243);
                    m_From.PlaySound(0x2E6);

                    TeiravonMobile m_Player = m_From as TeiravonMobile;
                    int            reduce   = (int)(m_Offer / 500);

                    if (m_Player != null && (m_Player.IsCavalier() || m_Player.IsPaladin()))
                    {
                        if ((m_Player.WarMountDeaths - reduce) < 0 && (reduce > 0))
                        {
                            m_Player.SendMessage("You have erased {0} war mount deaths", m_Player.WarMountDeaths);
                            m_Player.WarMountDeaths = 0;
                        }
                        else
                        {
                            m_Player.SendMessage("You have erased {0} war mount deaths", reduce);
                            m_Player.WarMountDeaths -= reduce;
                        }
                    }
                }
                else
                {
                    // You do not have enough gold to tithe that amount!
                    m_From.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1060194);
                }

                break;
            }
            }
        }