Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using Server;
namespace Server.Mobiles
{
public class BoatPainter : BaseVendor
{
private List<SBInfo> m_SBInfos = new List<SBInfo>();
protected override List<SBInfo> SBInfos { get { return m_SBInfos; } }
[Constructable]
public BoatPainter()
: base("the boat painter")
{
SetSkill(SkillName.Carpentry, 36.0, 68.0);
}
public override void InitSBInfo()
{
m_SBInfos.Add(new SBBoatPainter());
}
public BoatPainter(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using Server;
namespace Server.Mobiles
{
public class CrabFisher : BaseVendor
{
private List<SBInfo> m_SBInfos = new List<SBInfo>();
protected override List<SBInfo> SBInfos { get { return m_SBInfos; } }
[Constructable]
public CrabFisher()
: base("the crab fisher")
{
SetSkill(SkillName.Fishing, 36.0, 68.0);
}
public override void InitSBInfo()
{
m_SBInfos.Add(new SBCrabFisher());
}
public CrabFisher(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,236 @@
using Server;
using System;
using Server.Items;
using Server.ContextMenus;
using System.Collections.Generic;
using Server.Multis;
using Server.Network;
namespace Server.Mobiles
{
public class DockMaster : BaseVendor
{
public static readonly int DryDockDistance = 300;
public static readonly int DryDockAmount = 2500;
public override bool IsActiveVendor { get { return false; } }
public override bool IsInvulnerable { get { return true; } }
private List<SBInfo> m_SBInfos = new List<SBInfo>();
protected override List<SBInfo> SBInfos { get { return m_SBInfos; } }
public override void InitSBInfo()
{
m_SBInfos.Add(new SBFisherman());
}
[Constructable]
public DockMaster() : base( "the dockmaster" )
{
}
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list )
{
base.GetContextMenuEntries(from, list);
list.Add(new DryDockEntry(from, this));
list.Add(new RetrieveHoldEntry(from, this));
}
private class DryDockEntry : ContextMenuEntry
{
private Mobile m_From;
private DockMaster m_DockMaster;
public DryDockEntry(Mobile from, DockMaster dockmaster) : base(1149575, 5)
{
m_From = from;
m_DockMaster = dockmaster;
}
public override void OnClick()
{
var boat = BaseBoat.GetBoat(m_From);
if (boat != null && m_DockMaster.InRange(boat.Location, 100))
boat.BeginDryDock(m_From, m_DockMaster);
else
m_DockMaster.SayTo(m_From, 502581); //I cannot find the ship!
}
}
private class RetrieveHoldEntry : ContextMenuEntry
{
private Mobile m_From;
private DockMaster m_DockMaster;
public RetrieveHoldEntry(Mobile from, DockMaster dockmaster)
: base(1116504, 5)
{
m_From = from;
m_DockMaster = dockmaster;
}
public override void OnClick()
{
if (m_DockMaster.Map == null)
return;
Container pack = m_From.Backpack;
if (pack != null && pack.GetAmount(typeof(Gold)) < DockMaster.DryDockAmount && Banker.GetBalance(m_From) < DryDockAmount)
{
m_DockMaster.PrivateOverheadMessage(MessageType.Regular, m_DockMaster.SpeechHue, 1116506, DockMaster.DryDockAmount.ToString(), m_From.NetState); //The price is ~1_price~ and I will accept nothing less!
return;
}
var boat = BaseBoat.GetBoat(m_From);
if (boat != null && m_DockMaster.InRange(boat.Location, 50))
m_DockMaster.TryRetrieveHold(m_From, boat);
else
m_DockMaster.SayTo(m_From, 502581); //I cannot find the ship!
}
}
public void TryRetrieveHold(Mobile from, BaseBoat boat)
{
for (int i = 0; i < m_Crates.Count; i++) {
if (m_Crates[i].Owner == from) {
from.SendLocalizedMessage(1116516); //Thou must return thy current shipping crate before I can retrieve another shipment for you.
return;
}
}
Container pack = from.Backpack;
Container hold;
if (boat is BaseGalleon)
hold = ((BaseGalleon)boat).GalleonHold;
else
hold = boat.Hold;
if (hold == null || hold.Items.Count == 0)
{
from.SendMessage("Your hold is empty!");
return;
}
ShipCrate crate = new ShipCrate(from, boat);
m_Crates.Add(crate);
if (!pack.ConsumeTotal(typeof(Gold), DryDockAmount))
Banker.Withdraw(from, DryDockAmount);
bool cantMove = false;
List<Item> items = new List<Item>(hold.Items);
foreach (Item item in items)
{
if (item.Movable)
crate.DropItem(item);
else
cantMove = true;
}
Point3D pnt = Point3D.Zero;
if (!CanDropCrate(ref pnt, this.Map))
{
SayTo(from, 1116517); //Arrrgh! My dock has no more room. Please come back later.
from.BankBox.DropItem(crate);
from.SendMessage("Your shipping crate has been placed in your bank box.");
//from.SendMessage("You have 30 minutes to obtain the contents of your shipping crate. You can find it in the wearhouse on the westernmost tip of the floating emproiam");
}
else
{
from.SendLocalizedMessage(1116542, ShipCrate.DT.ToString()); //Yer ship has been unloaded to a crate inside this here warehouse. You have ~1_time~ minutes to get yer goods or it be gone.
crate.MoveToWorld(pnt, this.Map);
}
if (cantMove)
from.SendMessage("We were unable to pack up one or more of the items in your cargo hold.");
}
private Rectangle2D m_Bounds = new Rectangle2D(4561, 2298, 8, 5);
private static List<ShipCrate> m_Crates = new List<ShipCrate>();
public static void RemoveCrate(ShipCrate crate)
{
if (m_Crates.Contains(crate))
m_Crates.Remove(crate);
}
private bool CanDropCrate(ref Point3D pnt, Map map)
{
for (int i = 0; i < 45; i++)
{
int x = Utility.Random(m_Bounds.X, m_Bounds.Width);
int y = Utility.Random(m_Bounds.Y, m_Bounds.Height);
int z = -2;
bool badSpot = false;
Point3D p = new Point3D(x, y, z);
IPooledEnumerable eable = map.GetItemsInRange(pnt, 0);
foreach (Item item in eable)
{
if (item != null && item is Container && !item.Movable)
{
badSpot = true;
break;
}
}
eable.Free();
if (!badSpot)
{
pnt = p;
return true;
}
}
return false;
}
public BaseBoat GetBoatInRegion(Mobile from)
{
if (this.Map == null || this.Map == Map.Internal || this.Region == null)
return null;
foreach (Rectangle3D rec in this.Region.Area)
{
IPooledEnumerable eable = this.Map.GetItemsInBounds(new Rectangle2D(rec.Start.X, rec.Start.Y, rec.Width, rec.Height));
foreach (Item item in eable)
{
if (item is BaseBoat && ((BaseBoat)item).Owner == from && InRange(item.Location, DryDockDistance))
{
eable.Free();
return (BaseBoat)item;
}
}
eable.Free();
}
return null;
}
public DockMaster(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using Server;
namespace Server.Mobiles
{
public class DocksAlchemist : BaseVendor
{
private List<SBInfo> m_SBInfos = new List<SBInfo>();
protected override List<SBInfo> SBInfos { get { return m_SBInfos; } }
public override NpcGuild NpcGuild { get { return NpcGuild.MagesGuild; } }
[Constructable]
public DocksAlchemist() : base( "the alchemist" )
{
SetSkill(SkillName.Alchemy, 85.0, 100.0);
SetSkill(SkillName.TasteID, 65.0, 88.0);
}
public override void InitSBInfo()
{
m_SBInfos.Add(new SBDocksAlchemist());
}
public override VendorShoeType ShoeType
{
get { return Utility.RandomBool() ? VendorShoeType.Shoes : VendorShoeType.Sandals; }
}
public override void InitOutfit()
{
base.InitOutfit();
AddItem( new Server.Items.HalfApron() );
}
public DocksAlchemist( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,82 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBDocksAlchemist : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBDocksAlchemist()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( "1116302", typeof( Saltpeter ), 167, 20, 16954, 1150 ) );
Add(new GenericBuyInfo(typeof(RefreshPotion), 15, 10, 0xF0B, 0));
Add(new GenericBuyInfo(typeof(AgilityPotion), 15, 10, 0xF08, 0));
Add(new GenericBuyInfo(typeof(NightSightPotion), 15, 10, 0xF06, 0));
Add(new GenericBuyInfo(typeof(LesserHealPotion), 15, 10, 0xF0C, 0));
Add(new GenericBuyInfo(typeof(StrengthPotion), 15, 10, 0xF09, 0));
Add(new GenericBuyInfo(typeof(LesserPoisonPotion), 15, 10, 0xF0A, 0));
Add(new GenericBuyInfo(typeof(LesserCurePotion), 15, 10, 0xF07, 0));
Add(new GenericBuyInfo(typeof(LesserExplosionPotion), 21, 10, 0xF0D, 0));
Add(new GenericBuyInfo(typeof(MortarPestle), 8, 10, 0xE9B, 0));
Add(new GenericBuyInfo(typeof(BlackPearl), 5, 20, 0xF7A, 0));
Add(new GenericBuyInfo(typeof(Bloodmoss), 5, 20, 0xF7B, 0));
Add(new GenericBuyInfo(typeof(Garlic), 3, 20, 0xF84, 0));
Add(new GenericBuyInfo(typeof(Ginseng), 3, 20, 0xF85, 0));
Add(new GenericBuyInfo(typeof(MandrakeRoot), 3, 20, 0xF86, 0));
Add(new GenericBuyInfo(typeof(Nightshade), 3, 20, 0xF88, 0));
Add(new GenericBuyInfo(typeof(SpidersSilk), 3, 20, 0xF8D, 0));
Add(new GenericBuyInfo(typeof(SulfurousAsh), 3, 20, 0xF8C, 0));
Add(new GenericBuyInfo(typeof(Bottle), 5, 100, 0xF0E, 0));
Add(new GenericBuyInfo(typeof(HeatingStand), 2, 100, 0x1849, 0));
Add(new GenericBuyInfo("1041060", typeof(HairDye), 37, 10, 0xEFF, 0));
Add(new GenericBuyInfo(typeof(HeatingStand), 2, 100, 0x1849, 0)); // This is on OSI :-P
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Saltpeter ), 10 );
Add(typeof(BlackPearl), 3);
Add(typeof(Bloodmoss), 3);
Add(typeof(MandrakeRoot), 2);
Add(typeof(Garlic), 2);
Add(typeof(Ginseng), 2);
Add(typeof(Nightshade), 2);
Add(typeof(SpidersSilk), 2);
Add(typeof(SulfurousAsh), 2);
Add(typeof(Bottle), 3);
Add(typeof(MortarPestle), 4);
Add(typeof(HairDye), 19);
Add(typeof(NightSightPotion), 7);
Add(typeof(AgilityPotion), 7);
Add(typeof(StrengthPotion), 7);
Add(typeof(RefreshPotion), 7);
Add(typeof(LesserCurePotion), 7);
Add(typeof(LesserHealPotion), 7);
Add(typeof(LesserPoisonPotion), 7);
Add(typeof(LesserExplosionPotion), 10);
}
}
}
}

View File

@@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
public class SBBoatPainter : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBBoatPainter()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add(new GenericBuyInfo("Boat Paint", typeof(BoatPaint), 6256, 20, 4011, 276, new object[] { 276 }));
Add(new GenericBuyInfo("Boat Paint", typeof(BoatPaint), 6256, 20, 4011, 396, new object[] { 396 }));
Add(new GenericBuyInfo("Boat Paint", typeof(BoatPaint), 6256, 20, 4011, 516, new object[] { 516 }));
Add(new GenericBuyInfo("Boat Paint", typeof(BoatPaint), 6256, 20, 4011, 1900, new object[] { 1900 }));
Add(new GenericBuyInfo("Boat Paint", typeof(BoatPaint), 6256, 20, 4011, 251, new object[] { 251 }));
Add(new GenericBuyInfo("Boat Paint", typeof(BoatPaint), 6256, 20, 4011, 246, new object[] { 246 }));
Add(new GenericBuyInfo("Boat Paint", typeof(BoatPaint), 6256, 20, 4011, 2213, new object[] { 2213 }));
Add(new GenericBuyInfo("Boat Paint", typeof(BoatPaint), 6256, 20, 4011, 36, new object[] { 36 }));
Add(new GenericBuyInfo("Boat Paint Remover", typeof(BoatPaintRemover), 6256, 20, 4011, 0));
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add(typeof(LobsterTrap), 10);
}
}
}
}

View File

@@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBCrabFisher : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBCrabFisher()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add(new GenericBuyInfo("empty lobster trap", typeof(LobsterTrap), 137, 500, 17615, 0));
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add(typeof(LobsterTrap), 10);
Add(typeof(AppleCrab), 10);
Add(typeof(BlueCrab), 10);
Add(typeof(DungeonessCrab), 10);
Add(typeof(KingCrab), 10);
Add(typeof(RockCrab), 10);
Add(typeof(SnowCrab), 10);
Add(typeof(StoneCrab), 250);
Add(typeof(SpiderCrab), 250);
Add(typeof(TunnelCrab), 2500);
Add(typeof(VoidCrab), 2500);
Add(typeof(CrustyLobster), 10);
Add(typeof(FredLobster), 10);
Add(typeof(HummerLobster), 10);
Add(typeof(RockLobster), 10);
Add(typeof(ShovelNoseLobster), 10);
Add(typeof(SpineyLobster), 10);
Add(typeof(BlueLobster), 250);
Add(typeof(BloodLobster), 2500);
Add(typeof(DreadLobster), 2500);
Add(typeof(VoidLobster), 2500);
Add(typeof(StoneCrabMeat), 100);
Add(typeof(SpiderCrabMeat), 100);
Add(typeof(BlueLobsterMeat), 100);
}
}
}
}

View File

@@ -0,0 +1,116 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBSeaMarketTavernKeeper : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBSeaMarketTavernKeeper()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add(new GenericBuyInfo("1116299", typeof(MentoSeasoning), 1002, 10, 2454, 95));
Add(new GenericBuyInfo("1116338", typeof(SamuelsSecretSauce), 1007, 10, 2463, 1461));
Add(new GenericBuyInfo("1116300", typeof(DarkTruffle), 1001, 10, 3352, 1908));
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Ale, 7, 20, 0x99F, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Wine, 7, 20, 0x9C7, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Liquor, 7, 20, 0x99B, 0 ) );
Add( new BeverageBuyInfo( typeof( Jug ), BeverageType.Cider, 13, 20, 0x9C8, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Milk, 7, 20, 0x9F0, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Ale, 11, 20, 0x1F95, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Cider, 11, 20, 0x1F97, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Liquor, 11, 20, 0x1F99, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Wine, 11, 20, 0x1F9B, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Water, 11, 20, 0x1F9D, 0 ) );
Add( new GenericBuyInfo( typeof( BreadLoaf ), 6, 10, 0x103B, 0 ) );
Add( new GenericBuyInfo( typeof( CheeseWheel ), 21, 10, 0x97E, 0 ) );
Add( new GenericBuyInfo( typeof( CookedBird ), 17, 20, 0x9B7, 0 ) );
Add( new GenericBuyInfo( typeof( LambLeg ), 8, 20, 0x160A, 0 ) );
Add( new GenericBuyInfo( typeof( ChickenLeg ), 5, 20, 0x1608, 0 ) );
Add( new GenericBuyInfo( typeof( Ribs ), 7, 20, 0x9F2, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfCarrots ), 3, 20, 0x15F9, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfCorn ), 3, 20, 0x15FA, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfLettuce ), 3, 20, 0x15FB, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfPeas ), 3, 20, 0x15FC, 0 ) );
Add( new GenericBuyInfo( typeof( EmptyPewterBowl ), 2, 20, 0x15FD, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfCorn ), 3, 20, 0x15FE, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfLettuce ), 3, 20, 0x15FF, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfPeas ), 3, 20, 0x1601, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfPotatos ), 3, 20, 0x1601, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfStew ), 3, 20, 0x1604, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfTomatoSoup ), 3, 20, 0x1606, 0 ) );
Add( new GenericBuyInfo( typeof( ApplePie ), 7, 20, 0x1041, 0 ) ); //OSI just has Pie, not Apple/Fruit/Meat
Add( new GenericBuyInfo( "1016450", typeof( Chessboard ), 2, 20, 0xFA6, 0 ) );
Add( new GenericBuyInfo( "1016449", typeof( CheckerBoard ), 2, 20, 0xFA6, 0 ) );
Add( new GenericBuyInfo( typeof( Backgammon ), 2, 20, 0xE1C, 0 ) );
Add(new GenericBuyInfo(typeof(Dices), 2, 20, 0xFA7, 0));
Add( new GenericBuyInfo( "1041243", typeof( ContractOfEmployment ), 1252, 20, 0x14F0, 0 ) );
Add( new GenericBuyInfo( "a barkeep contract", typeof( BarkeepContract ), 1252, 20, 0x14F0, 0 ) );
if ( Multis.BaseHouse.NewVendorSystem )
Add( new GenericBuyInfo( "1062332", typeof( VendorRentalContract ), 1252, 20, 0x14F0, 0x672 ) );
/*if ( Map == Tokuno )
{
Add( new GenericBuyInfo( typeof( Wasabi ), 2, 20, 0x24E8, 0 ) );
Add( new GenericBuyInfo( typeof( Wasabi ), 2, 20, 0x24E9, 0 ) );
Add( new GenericBuyInfo( typeof( BentoBox ), 6, 20, 0x2836, 0 ) );
Add( new GenericBuyInfo( typeof( BentoBox ), 6, 20, 0x2837, 0 ) );
Add( new GenericBuyInfo( typeof( GreenTeaBasket ), 2, 20, 0x284B, 0 ) );
}*/
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( WoodenBowlOfCarrots ), 1 );
Add( typeof( WoodenBowlOfCorn ), 1 );
Add( typeof( WoodenBowlOfLettuce ), 1 );
Add( typeof( WoodenBowlOfPeas ), 1 );
Add( typeof( EmptyPewterBowl ), 1 );
Add( typeof( PewterBowlOfCorn ), 1 );
Add( typeof( PewterBowlOfLettuce ), 1 );
Add( typeof( PewterBowlOfPeas ), 1 );
Add( typeof( PewterBowlOfPotatos ), 1 );
Add( typeof( WoodenBowlOfStew ), 1 );
Add( typeof( WoodenBowlOfTomatoSoup ), 1 );
Add( typeof( BeverageBottle ), 3 );
Add( typeof( Jug ), 6 );
Add( typeof( Pitcher ), 5 );
Add( typeof( GlassMug ), 1 );
Add( typeof( BreadLoaf ), 3 );
//Add( typeof( CheeseWheel ), 12 );
//Add( typeof( Ribs ), 6 );
//Add( typeof( Peach ), 1 );
//Add( typeof( Pear ), 1 );
//Add( typeof( Grapes ), 1 );
//Add( typeof( Apple ), 1 );
//Add( typeof( Banana ), 1 );
Add( typeof( Candle ), 3 );
Add( typeof( Chessboard ), 1 );
Add( typeof( CheckerBoard ), 1 );
Add( typeof( Backgammon ), 1 );
Add( typeof( Dices ), 1 );
Add( typeof( ContractOfEmployment ), 626 );
}
}
}
}

View File

@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using Server;
namespace Server.Mobiles
{
public class SeaMarketTavernKeeper : BaseVendor
{
private List<SBInfo> m_SBInfos = new List<SBInfo>();
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
[Constructable]
public SeaMarketTavernKeeper() : base( "the tavern keeper" )
{
}
public override void InitSBInfo()
{
m_SBInfos.Add(new SBSeaMarketTavernKeeper());
}
public override void InitOutfit()
{
base.InitOutfit();
AddItem( new Server.Items.HalfApron() );
}
public SeaMarketTavernKeeper( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}