Exemple #1
0
            protected override void OnTick()
            {
                if (m_Aquarium == null)
                {
                    Stop();
                    return;
                }

                if (m_Aquarium.Deleted)
                {
                    Stop();
                    return;
                }

                if (m_Aquarium.m_FishItems.Count > 0)
                {
                    AquariumItem item = m_Aquarium.m_FishItems[Utility.RandomMinMax(0, m_Aquarium.m_FishItems.Count - 1)];

                    if (Utility.RandomDouble() < .1)
                    {
                        Blood creature = new Blood();
                        creature.ItemID = item.ItemID;
                        creature.Name   = item.Name;
                        creature.MoveToWorld(m_Aquarium.Location, m_Aquarium.Map);
                        creature.Z += 10;

                        m_Aquarium.PublicOverheadMessage(MessageType.Emote, 0, false, item.Name + " comes to the surface and takes a look around");
                        m_Aquarium.Splash();
                    }

                    else if (Utility.RandomDouble() < .9)
                    {
                        m_Aquarium.PublicOverheadMessage(MessageType.Emote, 0, false, item.Name + " splashes around");

                        int splashes = Utility.RandomMinMax(2, 4);

                        for (int a = 0; a < splashes; a++)
                        {
                            m_Aquarium.Splash();
                        }
                    }

                    else
                    {
                        m_Aquarium.PublicOverheadMessage(MessageType.Emote, 0, false, item.Name + " thrashes about wildly");

                        int splashes = Utility.RandomMinMax(6, 8);

                        for (int a = 0; a < splashes; a++)
                        {
                            m_Aquarium.Splash();
                        }
                    }
                }
            }
Exemple #2
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            m_FishItems       = new List <AquariumItem>();
            m_DecorationItems = new List <AquariumItem>();

            //Version 0
            if (version >= 0)
            {
                int fishItems = reader.ReadInt();
                for (int a = 0; a < fishItems; a++)
                {
                    AquariumItem item = reader.ReadItem() as AquariumItem;

                    if (item != null)
                    {
                        m_FishItems.Add(item);
                    }
                }

                int decorationItems = reader.ReadInt();
                for (int a = 0; a < decorationItems; a++)
                {
                    AquariumItem item = reader.ReadItem() as AquariumItem;

                    if (item != null)
                    {
                        m_DecorationItems.Add(item);
                    }
                }

                m_HouseSecureInEffect = reader.ReadBool();
            }

            //Version 1
            if (version >= 1)
            {
                NextWaterNeeded = reader.ReadDateTime();
            }

            //--------

            m_Timer = new InternalTimer(this);
            m_Timer.Start();
        }
Exemple #3
0
        public static AquariumItem GetRandomFish(Rarity rarity)
        {
            AquariumItem item = null;

            switch (rarity)
            {
            case Rarity.Common:
                switch (Utility.RandomMinMax(1, 6))
                {
                case 1: item = new BlueDasyllus(); break;

                case 2: item = new BlueTriggerfish(); break;

                case 3: item = new RedscaleSnapper(); break;

                case 4: item = new Sandalfish(); break;

                case 5: item = new Squirrelfish(); break;

                case 6: item = new Suntail(); break;
                }
                break;

            case Rarity.Uncommon:
                switch (Utility.RandomMinMax(1, 11))
                {
                case 1: item = new Angelfish(); break;

                case 2: item = new CoastalWaterfrog(); break;

                case 3: item = new ColossusShrimp(); break;

                case 4: item = new KingCrab(); break;

                case 5: item = new LongnoseButterfly(); break;

                case 6: item = new Pufferfish(); break;

                case 7: item = new Shinepike(); break;

                case 8: item = new StubnoseSwordfish(); break;

                case 9: item = new TaperedLeopardfin(); break;

                case 10: item = new Tigerfish(); break;

                case 11: item = new Tropicola(); break;
                }
                break;

            case Rarity.Rare:
                switch (Utility.RandomMinMax(1, 7))
                {
                case 1: item = new Bluefin(); break;

                case 2: item = new EmperorSeahorse(); break;

                case 3: item = new GreyCoris(); break;

                case 4: item = new RoyalGoldfish(); break;

                case 5: item = new StripedIdol(); break;

                case 6: item = new VioletZebrafish(); break;

                case 7: item = new WhitetailedRay(); break;
                }
                break;

            case Rarity.UltraRare:
                switch (Utility.RandomMinMax(1, 4))
                {
                case 1: item = new Ghostfin(); break;

                case 2: item = new JuvenileReefShark(); break;

                case 3: item = new JuvenileSeaSerpent(); break;

                case 4: item = new LesserWaterElemental(); break;
                }
                break;
            }

            return(item);
        }
Exemple #4
0
        public static AquariumItem GetRandomDecoration(Rarity rarity)
        {
            AquariumItem item = null;

            switch (rarity)
            {
            case Rarity.Common:
                switch (Utility.RandomMinMax(1, 8))
                {
                case 1: item = new ConchShell(); break;

                case 2: item = new DrownedFishermansBoots(); break;

                case 3: item = new DrownedFishermansHat(); break;

                case 4: item = new SeaVines(); break;

                case 5: item = new SunkenBarrelStaves(); break;

                case 6: item = new SeaCactus(); break;

                case 7: item = new LargeSeaCactus(); break;

                case 8: item = new SeaGrass(); break;
                }
                break;

            case Rarity.Uncommon:
                switch (Utility.RandomMinMax(1, 8))
                {
                case 1: item = new GiantClam(); break;

                case 2: item = new GiantConchShell(); break;

                case 3: item = new SeaCoral(); break;

                case 4: item = new SubmergedCorpse(); break;

                case 5: item = new SunkenBarrel(); break;

                case 6: item = new SunkenChest(); break;

                case 7: item = new SunkenColumn(); break;

                case 8: item = new SunkenVase(); break;
                }
                break;

            case Rarity.Rare:
                switch (Utility.RandomMinMax(1, 5))
                {
                case 1: item = new DrownedPrisoner(); break;

                case 2: item = new SunkenAnchor(); break;

                case 3: item = new SunkenColumn(); break;

                case 4: item = new SunkenNetting(); break;

                case 5: item = new SunkenUrn(); break;
                }
                break;

            case Rarity.UltraRare:
                switch (Utility.RandomMinMax(1, 5))
                {
                case 1: item = new GiantSeaMushroom(); break;

                case 2: item = new StrangeSunkenStatue(); break;

                case 3: item = new SunkenArmor(); break;

                case 4: item = new SunkenOrnamentalVase(); break;

                case 5: item = new SunkenPedestal(); break;
                }
                break;
            }

            return(item);
        }
Exemple #5
0
        public override bool OnDragDrop(Mobile from, Item dropped)
        {
            bool allowItem = false;

            if (!HasAccess(from))
            {
                from.SendLocalizedMessage(1073821); // You do not have access to that item for use with the aquarium.
                return(false);
            }

            if (dropped is Pitcher)
            {
                Pitcher item = dropped as Pitcher;

                if (item.Content != BeverageType.Water)
                {
                    from.SendMessage("You cannot pour that into the aquarium.");
                    return(false);
                }

                else
                {
                    if (WaterLevel < MaxWaterLevel)
                    {
                        int waterNeeded = Aquarium.MaxWaterLevel - WaterLevel;
                        int waterUsed   = waterNeeded;

                        if (item.Quantity < waterUsed)
                        {
                            waterUsed = item.Quantity;
                        }

                        WaterLevel    += waterUsed;
                        item.Quantity -= waterUsed;

                        from.PlaySound(0x4E);

                        from.CloseGump(typeof(AquariumGump));
                        from.SendMessage("You add water to the aquarium.");

                        return(false);
                    }

                    else
                    {
                        from.SendMessage("That aquarium is already full of water.");
                        return(false);
                    }
                }
            }

            if (dropped is BaseBeverage)
            {
                BaseBeverage item = dropped as BaseBeverage;

                if (item.IsEmpty || !item.Pourable || item.Content != BeverageType.Water)
                {
                    from.SendLocalizedMessage(500840); // Can't pour that in there.
                    return(false);
                }

                else
                {
                    if (WaterLevel < MaxWaterLevel)
                    {
                        int waterNeeded = Aquarium.MaxWaterLevel - WaterLevel;
                        int waterUsed   = waterNeeded;

                        if (item.Quantity < waterUsed)
                        {
                            waterUsed = item.Quantity;
                        }

                        WaterLevel    += waterUsed;
                        item.Quantity -= waterUsed;

                        from.PlaySound(0x4E);

                        from.CloseGump(typeof(AquariumGump));
                        from.SendMessage("You add water to the aquarium.");

                        return(false);
                    }

                    else
                    {
                        from.SendMessage("That aquarium is already full of water.");
                        return(false);
                    }
                }
            }

            if (dropped is AquariumItem)
            {
                AquariumItem item = dropped as AquariumItem;

                switch (item.ItemType)
                {
                case AquariumItem.Type.Fish:
                    if (m_FishItems.Count >= MaxFish)
                    {
                        from.SendMessage("That aquarium cannot hold any more fish.");
                        return(false);
                    }

                    else
                    {
                        from.CloseGump(typeof(AquariumGump));
                        from.SendMessage("You add the fish to the aquarium.");

                        m_FishItems.Add(item);
                        item.Internalize();

                        Splash();
                        Splash();

                        from.CloseGump(typeof(AquariumGump));
                        from.SendGump(new AquariumGump(this, from, 0));

                        return(true);
                    }
                    break;

                case AquariumItem.Type.Decoration:
                    if (m_DecorationItems.Count >= MaxDecorations)
                    {
                        from.SendMessage("That aquarium cannot hold any more decorative items.");
                        return(false);
                    }

                    else
                    {
                        from.CloseGump(typeof(AquariumGump));
                        from.SendMessage("You add the decoration to the aquarium.");

                        m_DecorationItems.Add(item);
                        item.Internalize();

                        Splash();
                        Splash();

                        from.CloseGump(typeof(AquariumGump));
                        from.SendGump(new AquariumGump(this, from, 0));

                        return(true);
                    }
                    break;
                }
            }

            return(allowItem);
        }
Exemple #6
0
        public AquariumGump(Aquarium aquarium, Mobile from, int index) : base(10, 10)
        {
            if (aquarium == null || from == null)
            {
                return;
            }

            if (aquarium.Deleted || from.Deleted || index < 0)
            {
                return;
            }

            m_Aquarium  = aquarium;
            m_ItemIndex = index;

            m_FishItemCount       = m_Aquarium.m_FishItems.Count;
            m_DecorationItemCount = m_Aquarium.m_DecorationItems.Count;
            m_TotalItemCount      = m_FishItemCount + m_DecorationItemCount;

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

            AddImage(0, 0, 11414);
            AddImage(315, 0, 11414);

            List <Point2D> m_FishLocations       = new List <Point2D>();
            List <Point2D> m_DecorationLocations = new List <Point2D>();

            //Fish Spots
            m_FishLocations.Add(new Point2D(432, 62));
            m_FishLocations.Add(new Point2D(153, 87));
            m_FishLocations.Add(new Point2D(574, 31));
            m_FishLocations.Add(new Point2D(432, 96));
            m_FishLocations.Add(new Point2D(240, 95));
            m_FishLocations.Add(new Point2D(348, 35));
            m_FishLocations.Add(new Point2D(562, 63));
            m_FishLocations.Add(new Point2D(277, 22));
            m_FishLocations.Add(new Point2D(241, 63));
            m_FishLocations.Add(new Point2D(361, 86));
            m_FishLocations.Add(new Point2D(15, 15));
            m_FishLocations.Add(new Point2D(134, 57));
            m_FishLocations.Add(new Point2D(83, 34));
            m_FishLocations.Add(new Point2D(117, 27));
            m_FishLocations.Add(new Point2D(159, 28));
            m_FishLocations.Add(new Point2D(99, 95));
            m_FishLocations.Add(new Point2D(228, 36));
            m_FishLocations.Add(new Point2D(427, 24));
            m_FishLocations.Add(new Point2D(563, 110));
            m_FishLocations.Add(new Point2D(68, 63));

            //Decoration Locations
            m_DecorationLocations.Add(new Point2D(336, 116));
            m_DecorationLocations.Add(new Point2D(530, 135));
            m_DecorationLocations.Add(new Point2D(164, 139));
            m_DecorationLocations.Add(new Point2D(201, 115));
            m_DecorationLocations.Add(new Point2D(583, 120));
            m_DecorationLocations.Add(new Point2D(256, 132));
            m_DecorationLocations.Add(new Point2D(20, 144));
            m_DecorationLocations.Add(new Point2D(92, 127));
            m_DecorationLocations.Add(new Point2D(439, 121));
            m_DecorationLocations.Add(new Point2D(383, 139));

            for (int a = 0; a < aquarium.m_FishItems.Count; a++)
            {
                AquariumItem item = aquarium.m_FishItems[a];

                Point2D point = m_FishLocations[a];
                AddItem(point.X + item.OffsetX, point.Y + item.OffsetY, item.ItemID, item.Hue);
            }

            //Decoration
            AddItem(597, 31, 3377, 2600);
            AddItem(296, 134, 3365, 2600);
            AddItem(458, 14, 3302, 2600);
            AddItem(32, 66, 3314, 2600);
            AddItem(273, 11, 3320, 2600);
            AddItem(493, 129, 3367, 2600);
            AddItem(389, 16, 3313, 2600);
            AddItem(58, 131, 3366, 2600);
            AddItem(400, 130, 3367, 2600);
            AddItem(58, 135, 3379, 2600);
            AddItem(193, 41, 3376, 2600);
            AddItem(118, 123, 3374, 2600);
            AddItem(574, 140, 3372, 2600);
            AddItem(420, 117, 3379, 2600);

            for (int a = 0; a < aquarium.m_DecorationItems.Count; a++)
            {
                AquariumItem item = aquarium.m_DecorationItems[a];

                Point2D point = m_DecorationLocations[a];
                AddItem(point.X + item.OffsetX, point.Y + item.OffsetY, item.ItemID, item.Hue);
            }

            int textHue = 2036;

            int rarityTextHue = textHue;

            if (m_ItemIndex < m_TotalItemCount && m_TotalItemCount > 0)
            {
                AddImage(79, 224, 103); //Wood Background

                AddImage(242, 186, 63); //Basket
                AddItem(212, 219, 3520);
                AddItem(275, 260, 3922);
                AddItem(250, 260, 3581);

                AquariumItem item;
                Point2D      point;

                int iStartX = 150;
                int iStartY = 235;

                //Fish
                if (m_ItemIndex < m_FishItemCount)
                {
                    item  = m_Aquarium.m_FishItems[m_ItemIndex];
                    point = m_FishLocations[m_ItemIndex];

                    if (item != null)
                    {
                        rarityTextHue = AquariumItem.GetRarityTextColor(item.ItemRarity);

                        AddItem(320 + item.OffsetX, 250 + item.OffsetY, item.ItemID, item.Hue); //Fish

                        AddLabel(iStartX - (item.DescriptionA.Length * 3), iStartY, textHue, item.DescriptionA);
                        iStartY += 20;

                        AddLabel(iStartX - (item.DescriptionB.Length * 3), iStartY, textHue, item.DescriptionB);
                        if (item.DescriptionB != "")
                        {
                            iStartY += 20;
                        }

                        string rarityText = AquariumItem.GetRarityTextName(item.ItemRarity);

                        AddLabel(iStartX - (rarityText.Length * 3), iStartY, rarityTextHue, rarityText);
                        iStartY += 20;

                        string weightText = item.Weight.ToString() + " lbs";

                        AddLabel(iStartX - (weightText.Length * 3), iStartY, textHue, weightText);
                        iStartY += 20;

                        AddImage(point.X - 18, point.Y - 30, 30063); //Pointer
                    }
                }

                //Decoration
                else
                {
                    item  = m_Aquarium.m_DecorationItems[m_ItemIndex - m_FishItemCount];
                    point = m_DecorationLocations[m_ItemIndex - m_FishItemCount];

                    if (item != null)
                    {
                        rarityTextHue = AquariumItem.GetRarityTextColor(item.ItemRarity);

                        AddItem(320 + item.OffsetX, 250 + item.OffsetY, item.ItemID, item.Hue); //Decoration

                        AddLabel(iStartX - (item.DescriptionA.Length * 3), iStartY, textHue, item.DescriptionA);
                        iStartY += 20;

                        AddLabel(iStartX - (item.DescriptionB.Length * 3), iStartY, textHue, item.DescriptionB);
                        if (item.DescriptionB != "")
                        {
                            iStartY += 20;
                        }

                        string rarityText = AquariumItem.GetRarityTextName(item.ItemRarity);

                        AddLabel(iStartX - (rarityText.Length * 3), iStartY, rarityTextHue, rarityText);
                        iStartY += 20;

                        AddImage(point.X - 18, point.Y - 30, 30063); //Pointer
                    }
                }

                if (m_Aquarium.HasAccess(from))
                {
                    AddButton(456, 296, 2474, 2472, 3, GumpButtonType.Reply, 0);
                    AddLabel(490, 298, textHue, "Remove");
                }
            }

            if (m_ItemIndex > 0)
            {
                AddButton(455, 226, 4014, 4016, 1, GumpButtonType.Reply, 0);
                AddLabel(489, 229, textHue, "Previous");
            }

            if (m_ItemIndex < m_TotalItemCount - 1)
            {
                AddButton(455, 261, 4005, 4007, 2, GumpButtonType.Reply, 0);
                AddLabel(490, 264, textHue, "Next");
            }
        }