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(); } } } }
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(); }
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); }
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); }
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); }
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"); } }