public override void OnHarvestFinished( Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested) { /* include this part for rare extras // modded by greywolf for random items coming in double skillvaluelj = killerguy.Skills[SkillName.Magery].Base; int i_itemid = (int)(killerguy.Skills[SkillName.ItemID].Base/10); if ((Utility.RandomMinMax( 1, 1500 ) <= (1 + i_itemid)) && (skillvaluelj >= 70.1)) { switch (Utility.RandomMinMax( 0, 10 )) { case 1 : default: from.AddToBackpack(new Kindling()); from.SendMessage ("you find something wedged in the tree, a weird peice of wood ");break; case 2 : from.AddToBackpack(new BarkFragment()); from.SendMessage ("you find something wedged in the tree, a peice of bark ");break; case 3 : from.AddToBackpack(new LuminescentFungi()); from.SendMessage ("you find something wedged in the tree, some fungi ");break; case 4 : from.AddToBackpack(new ParasiticPlant()); from.SendMessage ("you find something wedged in the tree, a weird looking plant");break; case 5 : from.AddToBackpack(new DiseasedBark()); from.SendMessage ("you find something wedged in the tree, some weird looking bark ");break; } } */ }
public HarvestBank GetBank( Map map, int x, int y ) { if ( map == null || map == Map.Internal ) return null; x /= m_BankWidth; y /= m_BankHeight; Hashtable banks = (Hashtable)m_BanksByMap[map]; if ( banks == null ) m_BanksByMap[map] = banks = new Hashtable(); Point2D key = new Point2D( x, y ); HarvestBank bank = (HarvestBank)banks[key]; if ( bank == null ) banks[key] = bank = new HarvestBank( this, GetVeinAt( map, x, y ) ); return bank; }
public HarvestBank GetBank( Map map, int x, int y ) { if ( map == null || map == Map.Internal ) return null; x /= m_BankWidth; y /= m_BankHeight; Dictionary<Point2D, HarvestBank> banks = null; m_BanksByMap.TryGetValue( map, out banks ); if ( banks == null ) m_BanksByMap[map] = banks = new Dictionary<Point2D, HarvestBank>(); Point2D key = new Point2D( x, y ); HarvestBank bank = null; banks.TryGetValue( key, out bank ); if ( bank == null ) banks[key] = bank = new HarvestBank( this, GetVeinAt( map, x, y ) ); return bank; }
public static void AddBank(HarvestBank bank) { if (bank == null) return; m_BankTable[bank] = DateTime.UtcNow + TimeSpan.FromMinutes(5); }
public static bool HasBeenChecked(HarvestBank bank) { if (m_BankTable.ContainsKey(bank) && m_BankTable[bank] < DateTime.UtcNow) m_BankTable.Remove(bank); return m_BankTable.ContainsKey(bank); }
public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested) { base.OnHarvestFinished(from, tool, def, vein, bank, resource, harvested); from.RevealingAction(); from.NextSkillTime = Core.TickCount + (int)(SkillCooldown.FishingCooldown * 1000); }
public virtual void OnHarvestFinished( Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested ) { }
public override HarvestVein MutateVein( Mobile from, Item tool, HarvestDefinition def, HarvestBank bank, object toHarvest, HarvestVein vein ) { if ( tool is GargoylesPickaxe && def == m_OreAndStone ) { int veinIndex = Array.IndexOf( def.Veins, vein ); if ( veinIndex >= 0 && veinIndex < (def.Veins.Length - 1) ) return def.Veins[veinIndex + 1]; } return base.MutateVein( from, tool, def, bank, toHarvest, vein ); }
public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested) { base.OnHarvestFinished(from, tool, def, vein, bank, resource, harvested); if (Core.ML) from.RevealingAction(); }
public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested) { if (tool is GargoylesPickaxe && def == this.m_OreAndStone && 0.1 > Utility.RandomDouble() && HarvestMap.CheckMapOnHarvest(from, harvested, def) == null) { HarvestResource res = vein.PrimaryResource; if (res == resource && res.Types.Length >= 3) { try { Map map = from.Map; if (map == null) { return; } BaseCreature spawned = Activator.CreateInstance(res.Types[2], new object[] { 25 }) as BaseCreature; if (spawned != null) { int offset = Utility.Random(8) * 2; for (int i = 0; i < m_Offsets.Length; i += 2) { int x = from.X + m_Offsets[(offset + i) % m_Offsets.Length]; int y = from.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length]; if (map.CanSpawnMobile(x, y, from.Z)) { spawned.OnBeforeSpawn(new Point3D(x, y, from.Z), map); spawned.MoveToWorld(new Point3D(x, y, from.Z), map); spawned.Combatant = from; return; } else { int z = map.GetAverageZ(x, y); if (Math.Abs(z - from.Z) < 10 && map.CanSpawnMobile(x, y, z)) { spawned.OnBeforeSpawn(new Point3D(x, y, z), map); spawned.MoveToWorld(new Point3D(x, y, z), map); spawned.Combatant = from; return; } } } spawned.OnBeforeSpawn(from.Location, from.Map); spawned.MoveToWorld(from.Location, from.Map); spawned.Combatant = from; } } catch { } } } //base.OnHarvestStarted(from, tool, def, resource); }
public override bool SpecialHarvest(Mobile from, Item tool, HarvestDefinition def, Map map, Point3D loc) { if (!Core.HS) { return(base.SpecialHarvest(from, tool, def, map, loc)); } HarvestBank bank = def.GetBank(map, loc.X, loc.Y); if (bank == null) { return(false); } bool boat = Server.Multis.BaseBoat.FindBoatAt(from, from.Map) != null; bool dungeon = IsDungeonRegion(from); if (!boat && !dungeon) { return(false); } if (boat || !NiterDeposit.HasBeenChecked(bank)) { int luck = from is PlayerMobile ? ((PlayerMobile)from).RealLuck : from.Luck; double bonus = (from.Skills[SkillName.Mining].Value / 9999) + ((double)luck / 150000); if (boat) { bonus -= (bonus * .33); } if (dungeon) { NiterDeposit.AddBank(bank); } if (Utility.RandomDouble() < bonus) { int size = Utility.RandomMinMax(1, 5); if (luck / 2500.0 > Utility.RandomDouble()) { size++; } NiterDeposit niter = new NiterDeposit(size); if (!dungeon) { niter.MoveToWorld(new Point3D(loc.X, loc.Y, from.Z + 3), from.Map); from.SendLocalizedMessage(1149918, niter.Size.ToString()); //You have uncovered a ~1_SIZE~ deposit of niter! Mine it to obtain saltpeter. NiterDeposit.AddBank(bank); return(true); } else { for (int i = 0; i < 50; i++) { int x = Utility.RandomMinMax(loc.X - 2, loc.X + 2); int y = Utility.RandomMinMax(loc.Y - 2, loc.Y + 2); int z = from.Z; if (from.Map.CanSpawnMobile(x, y, z)) { niter.MoveToWorld(new Point3D(x, y, z), from.Map); from.SendLocalizedMessage(1149918, niter.Size.ToString()); //You have uncovered a ~1_SIZE~ deposit of niter! Mine it to obtain saltpeter. return(true); } } } niter.Delete(); } } return(false); }
public override HarvestVein MutateVein(Mobile from, Item tool, HarvestDefinition def, HarvestBank bank, object toHarvest, HarvestVein vein) { if (tool is GargoylesPickaxe && def == this.m_OreAndStone) { int veinIndex = Array.IndexOf(def.Veins, vein); if (veinIndex >= 0 && veinIndex < (def.Veins.Length - 1)) { return(def.Veins[veinIndex + 1]); } } return(base.MutateVein(from, tool, def, bank, toHarvest, vein)); }
public override void FinishHarvesting(Mobile from, Item tool, HarvestDefinition def, object toHarvest, object locked) { //Lava fishing needs to have its own set of rules. if (IsLavaHarvest(tool, toHarvest)) { from.EndAction(locked); if (!CheckHarvest(from, tool)) return; int tileID; Map map; Point3D loc; if (!GetHarvestDetails(from, tool, toHarvest, out tileID, out map, out loc)) { OnBadHarvestTarget(from, tool, toHarvest); return; } else if (!def.Validate(tileID) && !def.ValidateSpecial(tileID)) { OnBadHarvestTarget(from, tool, toHarvest); return; } if (!CheckRange(from, tool, def, map, loc, true)) return; else if (!CheckResources(from, tool, def, map, loc, true)) return; else if (!CheckHarvest(from, tool, def, toHarvest)) return; HarvestBank bank = def.GetBank(map, loc.X, loc.Y); if (bank == null) return; HarvestVein vein = bank.Vein; if (vein == null) return; Type type = null; HarvestResource resource = MutateResource(from, tool, def, map, loc, vein, vein.PrimaryResource, vein.FallbackResource); if (from.CheckSkill(def.Skill, resource.MinSkill, resource.MaxSkill)) { //Special eye candy item type = GetSpecialLavaItem(from, tool, map, loc, toHarvest); //Special fish if (type == null) type = FishInfo.GetSpecialItem(from, tool, loc, IsLavaHarvest(tool, tileID)); if (type != null) { Item item = Construct(type, from, tool); if (item == null) { type = null; } else { if (from.AccessLevel == AccessLevel.Player) bank.Consume(Convert.ToInt32(map != null && map.Rules == MapRules.FeluccaRules ? Math.Ceiling(item.Amount / 2.0) : item.Amount), from); if (Give(from, item, true)) { SendSuccessTo(from, item, null); } else { SendPackFullTo(from, item, def, null); item.Delete(); } } } } if (type == null) { def.SendMessageTo(from, def.FailMessage); double skill = from.Skills[SkillName.Fishing].Value / 50; if (0.5 / skill > Utility.RandomDouble()) OnToolUsed(from, tool, false); } else OnToolUsed(from, tool, true); OnHarvestFinished(from, tool, def, vein, bank, null, null); } else base.FinishHarvesting(from, tool, def, toHarvest, locked); }
public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested) { base.OnHarvestFinished(from, tool, def, vein, bank, resource, harvested); from.RevealingAction(); }
public override void OnHarvestFinished( Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested ) { base.OnHarvestFinished( from, tool, def, vein, bank, resource, harvested ); if( tool is YewAxe && def == m_Definition && 0.10 >= Utility.RandomDouble() ) { HarvestResource res = vein.PrimaryResource; if( res == resource ) { try { Map map = from.Map; if( map == null || map == Map.Internal ) return; BaseCreature spawned = Activator.CreateInstance( typeof( Reaper ) ) as BaseCreature; if( spawned != null ) { int offset = Utility.Random( 4 ) * 2; for( int i = 0; i < m_Offsets.Length; i++ ) { int x = from.X + m_Offsets[(offset + i) % m_Offsets.Length]; int y = from.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length]; int z = (map.CanSpawnMobile( x, y, from.Z ) ? from.Z : map.GetAverageZ( x, y )); if( !map.CanSpawnMobile( x, y, z ) ) { x = from.X; y = from.Y; z = from.Z; } if( map.CanSpawnMobile( x, y, z ) ) { spawned.OnBeforeSpawn( new Point3D( x, y, z ), map ); spawned.MoveToWorld( new Point3D( x, y, z ), map ); spawned.Combatant = from; from.SendMessage( "You have awoken a spirit tree!" ); break; } } } } catch { } } } }
public InternalTimer(Mobile from, HarvestBank bank, int maxCount) : base(TimeSpan.Zero, TimeSpan.FromSeconds(1.0), maxCount) { m_From = from; m_Bank = bank; m_Count = 0; m_MaxCount = maxCount; }
public override HarvestVein MutateVein( Mobile from, Item tool, HarvestDefinition def, HarvestBank bank, object toHarvest, HarvestVein vein ) { return base.MutateVein( from, tool, def, bank, toHarvest, vein ); }
public void CheckMutateVein(Mobile from, HarvestDefinition def, HarvestBank bank, HarvestVein vein) { if (vein.PrimaryResource.ReqSkill > from.Skills[def.Skill].Base) { vein = def.Veins[0]; bank.Vein = vein; } //while (vein.PrimaryResource.ReqSkill > from.Skills[def.Skill].Base) //{ // int maxVal = (int)(def.Veins[0].PrimaryResource.ReqSkill*100); // int minVal = (int)(def.Veins[def.Veins.Length - 1].PrimaryResource.ReqSkill * 100); // double spawnChance = Utility.RandomMinMax(minVal, maxVal); // //Convert the random number into percent // spawnChance /= 100; // for (int i = def.Veins.Length - 1; i >= 0; i--) // { // if (def.Veins[i].VeinChance >= spawnChance) // { // vein = def.Veins[i]; // bank.Vein = vein; // break; // } // } //} }
public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested) { HarvestResource res = vein.PrimaryResource; if (res == resource && res.Types.Length >= 3) { try { Map map = from.Map; if (map == null) return; } catch { } } }
public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested) { if (tool is DeepSeaFishingPole) ((DeepSeaFishingPole)tool).Charges--; base.OnHarvestFinished(from, tool, def, vein, bank, resource, harvested); if (Core.ML) from.RevealingAction(); }
public override void OnHarvestFinished( Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested ) { if ( tool is GargoylesPickaxe && def == m_OreAndStone && 0.1 > Utility.RandomDouble() ) { HarvestResource res = vein.PrimaryResource; if ( res == resource && res.Types.Length >= 3 ) { try { Map map = from.Map; if ( map == null ) return; BaseCreature spawned = Activator.CreateInstance( res.Types[2], new object[]{ 25 } ) as BaseCreature; if ( spawned != null ) { int offset = Utility.Random( 8 ) * 2; for ( int i = 0; i < m_Offsets.Length; i += 2 ) { int x = from.X + m_Offsets[(offset + i) % m_Offsets.Length]; int y = from.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length]; if ( map.CanSpawnMobile( x, y, from.Z ) ) { spawned.MoveToWorld( new Point3D( x, y, from.Z ), map ); spawned.Combatant = from; return; } else { int z = map.GetAverageZ( x, y ); if ( map.CanSpawnMobile( x, y, z ) ) { spawned.MoveToWorld( new Point3D( x, y, z ), map ); spawned.Combatant = from; return; } } } spawned.MoveToWorld( from.Location, from.Map ); spawned.Combatant = from; } } catch { } } } }
public override void OnHarvestFinished( Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested ) { if ( tool is GargoylesPickaxe && def == m_OreAndStone && 0.1 > Utility.RandomDouble() ) { HarvestResource res = vein.PrimaryResource; if ( res == resource && res.Types.Length >= 3 ) { try { Map map = from.Map; if ( map == null ) return; BaseCreature spawned = Activator.CreateInstance( res.Types[2], new object[]{ 25 } ) as BaseCreature; if ( spawned != null ) { int offset = Utility.Random( 8 ) * 2; for ( int i = 0; i < m_Offsets.Length; i += 2 ) { int x = from.X + m_Offsets[(offset + i) % m_Offsets.Length]; int y = from.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length]; if ( map.CanSpawnMobile( x, y, from.Z ) ) { spawned.OnBeforeSpawn(new Point3D(x, y, from.Z), map); spawned.MoveToWorld( new Point3D( x, y, from.Z ), map ); spawned.Combatant = from; return; } else { int z = map.GetAverageZ( x, y ); if ( map.CanSpawnMobile( x, y, z ) ) { spawned.OnBeforeSpawn(new Point3D(x, y, z), map); spawned.MoveToWorld( new Point3D( x, y, z ), map ); spawned.Combatant = from; return; } } } spawned.OnBeforeSpawn(from.Location, from.Map); spawned.MoveToWorld( from.Location, from.Map ); spawned.Combatant = from; } } catch { } } } if (bank != null && bank.Vein != null && bank.Vein.PrimaryResource != null) { int bankAmount = bank.Current; double skillReq = bank.Vein.PrimaryResource.ReqSkill; if (skillReq >= 99.0 && bankAmount <= 13) bank.Consume(def, bankAmount, from); else if (skillReq >= 98.0 && bankAmount <= 12) bank.Consume(def, bankAmount, from); else if (skillReq >= 97.0 && bankAmount <= 10) bank.Consume(def, bankAmount, from); else if (skillReq >= 90.0 && bankAmount <= 8) bank.Consume(def, bankAmount, from); else if (skillReq >= 75.0 && bankAmount <= 6) bank.Consume(def, bankAmount, from); else if (skillReq >= 65.0 && bankAmount <= 4) bank.Consume(def, bankAmount, from); } }
public virtual HarvestVein MutateVein( Mobile from, Item tool, HarvestDefinition def, HarvestBank bank, object toHarvest, HarvestVein vein ) { return vein; }
public override Item Construct(Type type, Mobile from, Item _i, HarvestDefinition _d, HarvestBank _b, HarvestResource _r) { if (type == typeof(TreasureMap)) { int level = 1; return(new TreasureMap(level, Map.Felucca)); } else if (type == typeof(MessageInABottle)) { return(new MessageInABottle(Map.Felucca)); } Container pack = from.Backpack; if (pack != null) { List <SOS> messages = pack.FindItemsByType <SOS>(); for (int i = 0; i < messages.Count; ++i) { SOS sos = messages[i]; if (from.Map == sos.TargetMap && from.InRange(sos.TargetLocation, 60) && !sos.Completed) { Item preLoot = null; switch (Utility.Random(7)) { case 0: // Body parts { int[] list = new int[] { 0x1CDD, 0x1CE5, // arm 0x1CE0, 0x1CE8, // torso 0x1CE1, 0x1CE9, // head 0x1CE2, 0x1CEC // leg }; preLoot = new ShipwreckedItem(Utility.RandomList(list)); break; } case 1: // Bone parts { int[] list = new int[] { 0x1AE0, 0x1AE1, 0x1AE2, 0x1AE3, 0x1AE4, // skulls 0x1B09, 0x1B0A, 0x1B0B, 0x1B0C, 0x1B0D, 0x1B0E, 0x1B0F, 0x1B10, // bone piles 0x1B15, 0x1B16 // pelvis bones }; preLoot = new ShipwreckedItem(Utility.RandomList(list)); break; } case 2: // Pillows { preLoot = new ShipwreckedItem(Utility.Random(0x13A4, 11)); break; } case 3: // Shells { preLoot = new ShipwreckedItem(Utility.Random(0xFC4, 9)); break; } case 4: //Hats { if (Utility.RandomBool()) { preLoot = new SkullCap(); } else { preLoot = new TricorneHat(); } break; } case 5: // Misc { int[] list = new int[] { 0x1EB5, // unfinished barrel 0xA2A, // stool 0xC1F, // broken clock 0x1EB1, 0x1EB2, 0x1EB3, 0x1EB4 // barrel staves }; if (Utility.Random(list.Length + 1) == 0) { preLoot = new Candelabra(); } else { preLoot = new ShipwreckedItem(Utility.RandomList(list)); } break; } } if (preLoot != null) { if (preLoot is IShipwreckedItem) { ((IShipwreckedItem)preLoot).IsShipwreckedItem = true; } return(preLoot); } LockableContainer chest; if (Utility.RandomBool()) { chest = new MetalGoldenChest(); } else { chest = new WoodenChest(); } if (sos.IsAncient) { chest.Hue = 0x481; } TreasureMapChest.Fill(chest, Math.Max(1, Math.Min(3, (sos.Level + 1)))); if (sos.IsAncient) { chest.DropItem(new FabledFishingNet()); } else { chest.DropItem(new SpecialFishingNet()); } switch (Utility.Random(300)) { case 0: { Item rustedchest = new PlateChest(); rustedchest.Hue = 2718; rustedchest.Name = "a rusted platemail chest recovered from a shipwreck"; chest.DropItem(rustedchest); break; } case 1: { Item rustedarms = new PlateArms(); rustedarms.Hue = 2718; rustedarms.Name = "rusted platemail arms recovered from a shipwreck"; chest.DropItem(rustedarms); break; } case 2: { Item rustedlegs = new PlateLegs(); rustedlegs.Hue = 2718; rustedlegs.Name = "rusted platemail legguards recovered from a shipwreck"; chest.DropItem(rustedlegs); break; } case 3: { Item rustedgloves = new PlateGloves(); rustedgloves.Hue = 2718; rustedgloves.Name = "rusted platemail gloves recovered from a shipwreck"; chest.DropItem(rustedgloves); break; } case 4: { Item rustedgorget = new PlateGorget(); rustedgorget.Hue = 2718; rustedgorget.Name = "rusted platemail gorget recovered from a shipwreck"; chest.DropItem(rustedgorget); break; } case 5: { Item rustedhelm = new PlateHelm(); rustedhelm.Hue = 2718; rustedhelm.Name = "a rusted platemail helmet recovered from a shipwreck"; chest.DropItem(rustedhelm); break; } } switch (Utility.Random(400)) { case 0: { Item lamp = new LampPost1(); lamp.Name = "Britannia Head Light"; lamp.Hue = 2601; chest.DropItem(lamp); break; } case 1: { Item lantern = new HangingLantern(); lantern.Name = "Fog Lamp"; lantern.Hue = 2601; lantern.Movable = true; chest.DropItem(lantern); break; } } chest.Movable = true; chest.Locked = false; chest.TrapType = TrapType.None; chest.TrapPower = 0; chest.TrapLevel = 0; sos.Completed = true; BaseShip ownerShip = BaseShip.FindShipAt(from.Location, from.Map); PlayerMobile player = from as PlayerMobile; if (ownerShip != null && player != null) { if (ownerShip.IsFriend(player) || ownerShip.IsOwner(player) || ownerShip.IsCoOwner(player)) { double doubloonValue = Utility.RandomMinMax(25, 50); int finalDoubloonAmount = (int)doubloonValue; bool shipOwner = ownerShip.IsOwner(player); bool bankDoubloonsValid = false; bool holdPlacementValid = false; //Deposit Half In Player's Bank if (Banker.DepositUniqueCurrency(player, typeof(Doubloon), finalDoubloonAmount)) { Doubloon doubloonPile = new Doubloon(finalDoubloonAmount); player.SendSound(doubloonPile.GetDropSound()); doubloonPile.Delete(); bankDoubloonsValid = true; } //Deposit Other Half in Ship if (ownerShip.DepositDoubloons(finalDoubloonAmount)) { Doubloon doubloonPile = new Doubloon(finalDoubloonAmount); player.SendSound(doubloonPile.GetDropSound()); doubloonPile.Delete(); holdPlacementValid = true; } if (shipOwner) { player.PirateScore += finalDoubloonAmount; //ownerShip.doubloonsEarned += finalDoubloonAmount * 2; if (bankDoubloonsValid && holdPlacementValid) { player.SendMessage("You've received " + (finalDoubloonAmount * 2).ToString() + " doubloons for completing a message in a bottle! They have been evenly split between your bank box and your ship's hold."); } else if (bankDoubloonsValid && !holdPlacementValid) { player.SendMessage("You've earned " + (finalDoubloonAmount * 2).ToString() + " doubloons, however there was not enough room to place all of them in your ship's hold."); } else if (!bankDoubloonsValid && holdPlacementValid) { player.SendMessage("You've earned " + (finalDoubloonAmount * 2).ToString() + " doubloons, however there was not enough room to place all of them in your bank box."); } } else { //ownerShip.doubloonsEarned += finalDoubloonAmount; player.PirateScore += finalDoubloonAmount; if (bankDoubloonsValid) { player.SendMessage("You've earned " + finalDoubloonAmount.ToString() + " doubloons for completing a message in a bottle! They have been placed in your bank box."); } else { player.SendMessage("You've earned doubloons, but there was not enough room to place all of them in your bank box."); } } } } return(chest); } } } return(base.Construct(type, from, _i, _d, _b, _r)); }