Beispiel #1
0
            public override void OnResponse(NetState sender, RelayInfo info)
            {
                if (this.m_Ticket.Deleted)
                {
                    return;
                }

                int number = 0;

                Item item  = null;
                Item item2 = null;

                switch (info.ButtonID)
                {
                case 1:
                    item   = new Sextant();
                    number = 1010494;
                    break;     // A sextant has been placed in your backpack.

                case 2:
                    item   = new HairRestylingDeed();
                    number = 501933;
                    break;     // A coupon for a free hair restyling has been placed in your backpack.

                case 3:
                    item   = new Spellbook(0xFFFFFFFF);
                    number = 1010495;
                    break;     // A spellbook with all 1st to 4th circle spells has been placed in your backpack.

                case 4:
                    item   = new FireworksWand();
                    number = 501935;
                    break;     // A wand of fireworks has been placed in your backpack.

                case 5:
                    item   = new Spyglass();
                    number = 501936;
                    break;     // A spyglass has been placed in your backpack.

                case 6:
                    item   = new DyeTub();
                    item2  = new Dyes();
                    number = 501937;
                    break;     // The dyes and dye tub have been placed in your backpack.
                }

                if (item != null)
                {
                    this.m_Ticket.Delete();

                    this.m_From.SendLocalizedMessage(number);
                    this.m_From.AddToBackpack(item);

                    if (item2 != null)
                    {
                        this.m_From.AddToBackpack(item2);
                    }
                }
            }
Beispiel #2
0
 protected override void OnTick()
 {
     if (DateTime.UtcNow >= m_Expire)
     {
         Spyglass.RemoveEffect(m_m);
         Stop();
     }
 }
        public SpyglassGump(Spyglass spyglass, PlayerMobile player, Spyglass.SearchModeType searchModeType, Spyglass.SearchLengthType searchLengthType) : base(10, 10)
        {
            if (spyglass == null || player == null)
            {
                return;
            }
            if (spyglass.Deleted)
            {
                return;
            }

            m_Spyglass = spyglass;
            m_Player   = player;

            m_SearchModeType   = searchModeType;
            m_SearchLengthType = searchLengthType;

            Closable   = true;
            Disposable = true;
            Dragable   = true;
            Resizable  = false;

            int WhiteTextHue = 2655;

            AddImage(3, 3, 1248);

            string spyglassName = "Spyglass";

            if (spyglass.Resource != CraftResource.None)
            {
                spyglassName = CraftResources.GetCraftResourceName(spyglass.Resource) + " Spyglass";
            }

            string usesText    = spyglass.Charges.ToString() + " Uses Remaining";
            int    spyglassHue = spyglass.Hue;

            double spyglassQualityRangeBonus    = 0;
            double spyglassQualityAccuracyBonus = 0;

            double trackingSkillRangeBonus    = 0;
            double trackingSkillAccuracyBonus = 0;

            double cartographySkillRangeBonus    = 0;
            double cartographySkillAccuracyBonus = 0;

            double searchLengthRangeBonus    = 0;
            double searchLengthAccuracyBonus = 0;

            double totalRangeModifiers    = 0;
            double totalAccuracyModifiers = 0;

            if (spyglass.Quality == Quality.Exceptional)
            {
                spyglassQualityRangeBonus    += .05;
                spyglassQualityAccuracyBonus += .05;
            }

            switch (spyglass.Resource)
            {
            case CraftResource.DullCopper:
                spyglassQualityRangeBonus    += .05;
                spyglassQualityAccuracyBonus += .05;
                break;

            case CraftResource.ShadowIron:
                spyglassQualityRangeBonus    += .10;
                spyglassQualityAccuracyBonus += .10;
                break;

            case CraftResource.Copper:
                spyglassQualityRangeBonus    += .15;
                spyglassQualityAccuracyBonus += .15;
                break;

            case CraftResource.Bronze:
                spyglassQualityRangeBonus    += .20;
                spyglassQualityAccuracyBonus += .20;
                break;

            case CraftResource.Gold:
                spyglassQualityRangeBonus    += .25;
                spyglassQualityAccuracyBonus += .25;
                break;

            case CraftResource.Agapite:
                spyglassQualityRangeBonus    += .30;
                spyglassQualityAccuracyBonus += .30;
                break;

            case CraftResource.Verite:
                spyglassQualityRangeBonus    += .35;
                spyglassQualityAccuracyBonus += .35;
                break;

            case CraftResource.Valorite:
                spyglassQualityRangeBonus    += .40;
                spyglassQualityAccuracyBonus += .40;
                break;

            case CraftResource.Lunite:
                spyglassQualityRangeBonus    += .45;
                spyglassQualityAccuracyBonus += .45;
                break;
            }

            trackingSkillRangeBonus    = (player.Skills[SkillName.Tracking].Value / 100) * .25;
            trackingSkillAccuracyBonus = (player.Skills[SkillName.Tracking].Value / 100) * .25;

            cartographySkillRangeBonus    = (player.Skills[SkillName.Cartography].Value / 100) * .25;
            cartographySkillAccuracyBonus = (player.Skills[SkillName.Cartography].Value / 100) * .25;

            switch (searchLengthType)
            {
            case Spyglass.SearchLengthType.Short:
                searchLengthRangeBonus    = 0;
                searchLengthAccuracyBonus = -.25;
                break;

            case Spyglass.SearchLengthType.Medium:
                searchLengthRangeBonus    = .25;
                searchLengthAccuracyBonus = -.50;
                break;

            case Spyglass.SearchLengthType.Long:
                searchLengthRangeBonus    = .50;
                searchLengthAccuracyBonus = -.75;
                break;
            }

            //Guide
            AddButton(14, 9, 2094, 2095, 1, GumpButtonType.Reply, 0);
            AddLabel(40, 11, 149, "Guide");

            AddLabel(Utility.CenteredTextOffset(165, spyglassName), 15, spyglassHue, spyglassName);
            AddLabel(Utility.CenteredTextOffset(165, usesText), 40, WhiteTextHue, usesText);

            //Search Type
            string searchText = "";

            int iconItemId  = 0;
            int iconHue     = 0;
            int iconOffsetX = 0;
            int iconOffsetY = 0;

            //Search Type
            switch (m_SearchModeType)
            {
            case Spyglass.SearchModeType.Ships:
                searchText = "Search for Ships";

                iconItemId  = 5363;
                iconHue     = 0;
                iconOffsetX = -8;
                iconOffsetY = 7;
                break;

            case Spyglass.SearchModeType.Shipwrecks:
                searchText = "Search for Shipwrecks";

                iconItemId  = 5367;
                iconHue     = 0;
                iconOffsetX = 0;
                iconOffsetY = 0;
                break;

            case Spyglass.SearchModeType.SchoolsOfFish:
                searchText = "Search for Schools of Fish";

                iconItemId  = 3544;
                iconHue     = 0;
                iconOffsetX = -30;
                iconOffsetY = 0;
                break;
            }

            AddLabel(Utility.CenteredTextOffset(165, searchText), 70, 2550, searchText);
            AddButton(70, 105, 4014, 4016, 2, GumpButtonType.Reply, 0);
            AddItem(145 + iconOffsetX, 95 + iconOffsetY, iconItemId, iconHue);
            AddButton(210, 105, 4005, 4007, 3, GumpButtonType.Reply, 0);

            //Search Variable
            AddButton(95, 185, 2223, 2223, 4, GumpButtonType.Reply, 0);

            string lengthText = "";

            switch (searchLengthType)
            {
            case Spyglass.SearchLengthType.Short:
                lengthText = "Short Search";

                AddLabel(Utility.CenteredTextOffset(160, lengthText), 157, 2599, lengthText);

                AddItem(130, 182, 5365);
                break;

            case Spyglass.SearchLengthType.Medium:
                lengthText = "Medium Search";

                AddLabel(Utility.CenteredTextOffset(160, lengthText), 157, 2599, lengthText);

                AddItem(122, 182, 5365);
                AddItem(137, 182, 5365);
                break;

            case Spyglass.SearchLengthType.Long:
                lengthText = "Large Search";

                AddLabel(Utility.CenteredTextOffset(160, lengthText), 157, 2599, lengthText);

                AddItem(115, 182, 5365);
                AddItem(130, 182, 5365);
                AddItem(145, 182, 5365);
                break;
            }

            AddButton(195, 185, 2224, 2224, 5, GumpButtonType.Reply, 0);

            //Modifiers Text
            AddLabel(41, 230, 149, "Spyglass Quality");
            AddLabel(58, 250, 149, "Tracking Skill");
            AddLabel(34, 270, 149, "Cartography Skill");
            AddLabel(51, 290, 149, "Search Length");
            AddLabel(45, 310, 52, "Total Modifiers");

            AddLabel(169, 210, 2114, "Range");
            AddLabel(225, 210, 2577, "Accuracy");

            totalRangeModifiers    = spyglassQualityRangeBonus + trackingSkillRangeBonus + cartographySkillRangeBonus + searchLengthRangeBonus;
            totalAccuracyModifiers = spyglassQualityAccuracyBonus + trackingSkillAccuracyBonus + cartographySkillAccuracyBonus + searchLengthAccuracyBonus;

            string spyglassQualityRangeBonusText = "";

            if (spyglassQualityRangeBonus >= 0)
            {
                spyglassQualityRangeBonusText = "+";
            }
            spyglassQualityRangeBonusText += Utility.CreateDecimalPercentageString(spyglassQualityRangeBonus, 1);

            string spyglassQualityAccuracyBonusText = "";

            if (spyglassQualityAccuracyBonus >= 0)
            {
                spyglassQualityAccuracyBonusText = "+";
            }
            spyglassQualityAccuracyBonusText += Utility.CreateDecimalPercentageString(spyglassQualityAccuracyBonus, 1);

            string trackingSkillRangeBonusText = "";

            if (trackingSkillRangeBonus >= 0)
            {
                trackingSkillRangeBonusText = "+";
            }
            trackingSkillRangeBonusText += Utility.CreateDecimalPercentageString(trackingSkillRangeBonus, 1);

            string trackingSkillAccuracyBonusText = "";

            if (trackingSkillAccuracyBonus >= 0)
            {
                trackingSkillAccuracyBonusText = "+";
            }
            trackingSkillAccuracyBonusText += Utility.CreateDecimalPercentageString(trackingSkillAccuracyBonus, 1);

            string cartographySkillRangeBonusText = "";

            if (cartographySkillRangeBonus >= 0)
            {
                cartographySkillRangeBonusText = "+";
            }
            cartographySkillRangeBonusText += Utility.CreateDecimalPercentageString(cartographySkillRangeBonus, 1);

            string cartographySkillAccuracyBonusText = "";

            if (cartographySkillAccuracyBonus >= 0)
            {
                cartographySkillAccuracyBonusText = "+";
            }
            cartographySkillAccuracyBonusText += Utility.CreateDecimalPercentageString(cartographySkillAccuracyBonus, 1);

            string searchLengthRangeBonusText = "";

            if (searchLengthRangeBonus >= 0)
            {
                searchLengthRangeBonusText = "+";
            }
            searchLengthRangeBonusText += Utility.CreateDecimalPercentageString(searchLengthRangeBonus, 1);

            string searchLengthAccuracyBonusText = "";

            if (searchLengthAccuracyBonus >= 0)
            {
                searchLengthAccuracyBonusText = "+";
            }
            searchLengthAccuracyBonusText += Utility.CreateDecimalPercentageString(searchLengthAccuracyBonus, 1);

            //Total
            string totalRangeModifiersText = "";

            if (totalRangeModifiers >= 0)
            {
                totalRangeModifiersText = "+";
            }
            totalRangeModifiersText += Utility.CreateDecimalPercentageString(totalRangeModifiers, 1);

            string totalAccuracyModifiersText = "";

            if (totalAccuracyModifiers >= 0)
            {
                totalAccuracyModifiersText = "+";
            }
            totalAccuracyModifiersText += Utility.CreateDecimalPercentageString(totalAccuracyModifiers, 1);

            AddLabel(168, 230, WhiteTextHue, spyglassQualityRangeBonusText);
            AddLabel(233, 230, WhiteTextHue, spyglassQualityAccuracyBonusText);

            AddLabel(168, 250, WhiteTextHue, trackingSkillRangeBonusText);
            AddLabel(233, 250, WhiteTextHue, trackingSkillAccuracyBonusText);

            AddLabel(168, 270, WhiteTextHue, cartographySkillRangeBonusText);
            AddLabel(233, 270, WhiteTextHue, cartographySkillAccuracyBonusText);

            AddLabel(168, 290, WhiteTextHue, searchLengthRangeBonusText);
            AddLabel(233, 290, WhiteTextHue, searchLengthAccuracyBonusText);

            AddLabel(168, 310, 52, totalRangeModifiersText);
            AddLabel(233, 310, 52, totalAccuracyModifiersText);

            //Begin Search
            AddLabel(115, 344, 169, "Begin Search");
            AddItem(101, 371, 5365, 0);
            AddButton(140, 366, 2151, 2151, 6, GumpButtonType.Reply, 0);
        }
			public override void OnResponse( NetState sender, RelayInfo info )
			{
				if ( m_Ticket.Deleted )
					return;

				int number = 0;

				Item item = null;
				Item item2 = null;

				switch ( info.ButtonID )
				{
					case 1: item = new Sextant(); number = 1010494; break; // A sextant has been placed in your backpack.
					case 2: item = new HairRestylingDeed(); number = 501933; break; // A coupon for a free hair restyling has been placed in your backpack.
					//case 3: item = new Spellbook( 0xFFFFFFFF ); number = 1010495; break; // A spellbook with all 1st to 4th circle spells has been placed in your backpack.
					case 3: item = new FireworksWand(); number = 501935; break; // A wand of fireworks has been placed in your backpack.
					case 4: item = new Spyglass(); number = 501936; break; // A spyglass has been placed in your backpack.
					case 5: item = new DyeTub(); item2 = new Dyes(); number = 501937; break; // The dyes and dye tub have been placed in your backpack.
				}

				if ( item != null )
				{
					m_Ticket.Delete();

					m_From.SendLocalizedMessage( number );
					m_From.AddToBackpack( item );

					if ( item2 != null )
						m_From.AddToBackpack( item2 );
				}
			}
Beispiel #5
0
        public override void OnResponse( NetState sender, RelayInfo info )
        {
            int count = m_Count;
            Mobile m = sender.Mobile;

            for ( int i = 0; i<6 && count > 0; i++ )
            {
                Item item = null;
                if ( !m_Old && i>=3 )
                    break;

                if ( !info.IsSwitched( i + 100 ) )
                    continue;

                count--;

                switch ( i )
                {
                    case 0:
                        if ( m_Abyss )
                            m.AddToBackpack( new BankCheck( 5000 ) );
                        else
                            m.AddToBackpack( new FireworksWand() );
                        break;
                    case 1:
                        if ( m_Abyss )
                        {
                            m.AddToBackpack( new BagOfReagents( 100 ) );
                        }
                        else
                        {
                            m.AddToBackpack( item=new Spyglass() );
                            item.LootType = LootType.Newbied;
                        }
                        break;
                    case 2:
                        m.AddToBackpack( new HairRestylingDeed() );
                        break;
                    case 3:
                        switch ( Utility.Random( 5 ) )
                        {
                            case 0:
                                item = new RangerArms();
                                break;
                            case 1:
                                item = new RangerChest();
                                break;
                            case 2:
                                item = new RangerGloves();
                                break;
                            case 3:
                                item = new RangerGorget();
                                break;
                            case 4:
                                item = new RangerLegs();
                                break;
                        }

                        if ( item != null )
                            m.AddToBackpack( item );
                        break;
                    case 4:
                        if ( m_Abyss )
                        {
                            item = new BaseItem( Utility.Random( 6 ) + 0xEf4 );
                            item.Name = "I survived the Abyss!";
                            item.LootType = LootType.Newbied;
                            m.AddToBackpack( item );
                        }
                        else
                        {
                            m.AddToBackpack( new ClothingBlessDeed() );
                        }
                        break;
                    case 5:
                        if ( m_Abyss )
                            m.AddToBackpack( new Server.Multis.SmallDragonBoatDeed() );
                        else
                            m.AddToBackpack( new StrongBoxDeed() );
                        break;
                }
            }

            m.SendAsciiMessage( "Enjoy!" );
            if ( count > 0 )
            {
                ((Account)m.Account).SetTag( "Rewards", count.ToString() );
                m.SendAsciiMessage( "You have {0} reward{1} left.", count, count == 1 ? "" : "s" );
            }
            else
            {
                ((Account)m.Account).RemoveTag( "Rewards" );
                ((Account)m.Account).RemoveTag( "GoodRewards" );
            }
        }