#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
8eae46895e
7512 changed files with 416187 additions and 0 deletions
42
Scripts/Mobiles/Towns/Vendors/Alchemist.cs
Normal file
42
Scripts/Mobiles/Towns/Vendors/Alchemist.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Alchemist : 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 Alchemist() : base( "the alchemist" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBAlchemist() );
|
||||
}
|
||||
|
||||
public Alchemist( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Mobiles/Towns/Vendors/Architect.cs
Normal file
42
Scripts/Mobiles/Towns/Vendors/Architect.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Architect : 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.TinkersGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Architect() : base( "the architect" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBArchitect() );
|
||||
}
|
||||
|
||||
public Architect( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
86
Scripts/Mobiles/Towns/Vendors/Armorer.cs
Normal file
86
Scripts/Mobiles/Towns/Vendors/Armorer.cs
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Armorer : 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.WarriorsGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Armorer() : base( "the armorer" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
switch ( Utility.Random( 4 ))
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_SBInfos.Add( new SBLeatherArmor() );
|
||||
m_SBInfos.Add( new SBStuddedArmor() );
|
||||
m_SBInfos.Add( new SBMetalShields() );
|
||||
m_SBInfos.Add( new SBPlateArmor() );
|
||||
m_SBInfos.Add( new SBHelmetArmor() );
|
||||
m_SBInfos.Add( new SBChainmailArmor() );
|
||||
m_SBInfos.Add( new SBRingmailArmor() );
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
m_SBInfos.Add( new SBStuddedArmor() );
|
||||
m_SBInfos.Add( new SBLeatherArmor() );
|
||||
m_SBInfos.Add( new SBMetalShields() );
|
||||
m_SBInfos.Add( new SBHelmetArmor() );
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
m_SBInfos.Add( new SBMetalShields() );
|
||||
m_SBInfos.Add( new SBPlateArmor() );
|
||||
m_SBInfos.Add( new SBHelmetArmor() );
|
||||
m_SBInfos.Add( new SBChainmailArmor() );
|
||||
m_SBInfos.Add( new SBRingmailArmor() );
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
m_SBInfos.Add( new SBMetalShields() );
|
||||
m_SBInfos.Add( new SBHelmetArmor() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
AddItem( new Server.Items.HalfApron() );
|
||||
AddItem( new Server.Items.SmithHammer() );
|
||||
}
|
||||
|
||||
public Armorer( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
40
Scripts/Mobiles/Towns/Vendors/Baker.cs
Normal file
40
Scripts/Mobiles/Towns/Vendors/Baker.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Baker : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Baker() : base( "the baker" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBBaker() );
|
||||
}
|
||||
|
||||
public Baker( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
577
Scripts/Mobiles/Towns/Vendors/Barber.cs
Normal file
577
Scripts/Mobiles/Towns/Vendors/Barber.cs
Normal file
|
|
@ -0,0 +1,577 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Barber : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
public override bool ClickTitle{ get{ return false; } }
|
||||
|
||||
public override bool IsActiveBuyer{ get{ return false; } }
|
||||
public override bool IsActiveSeller{ get{ return true; } }
|
||||
|
||||
public override bool OnBuyItems( Mobile buyer, List<BuyItemResponse> list )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public static readonly object From = new object();
|
||||
public static readonly object Vendor = new object();
|
||||
public static readonly object Price = new object();
|
||||
|
||||
private static HairstylistBuyInfo[] m_SellList = new HairstylistBuyInfo[]
|
||||
{
|
||||
new HairstylistBuyInfo( 1018357, 50000, false, typeof( ChangeHairstyleGump ), new object[]
|
||||
{ From, Vendor, Price, false, ChangeHairstyleEntry.HairEntries } ),
|
||||
new HairstylistBuyInfo( 1018358, 50000, true, typeof( ChangeHairstyleGump ), new object[]
|
||||
{ From, Vendor, Price, true, ChangeHairstyleEntry.BeardEntries } ),
|
||||
new HairstylistBuyInfo( 1018359, 50, false, typeof( ChangeHairHueGump ), new object[]
|
||||
{ From, Vendor, Price, true, true, ChangeHairHueEntry.RegularEntries } ),
|
||||
new HairstylistBuyInfo( 1018360, 500000, false, typeof( ChangeHairHueGump ), new object[]
|
||||
{ From, Vendor, Price, true, true, ChangeHairHueEntry.BrightEntries } ),
|
||||
new HairstylistBuyInfo( 1018361, 30000, false, typeof( ChangeHairHueGump ), new object[]
|
||||
{ From, Vendor, Price, true, false, ChangeHairHueEntry.RegularEntries } ),
|
||||
new HairstylistBuyInfo( 1018362, 30000, true, typeof( ChangeHairHueGump ), new object[]
|
||||
{ From, Vendor, Price, false, true, ChangeHairHueEntry.RegularEntries } ),
|
||||
new HairstylistBuyInfo( 1018363, 500000, false, typeof( ChangeHairHueGump ), new object[]
|
||||
{ From, Vendor, Price, true, false, ChangeHairHueEntry.BrightEntries } ),
|
||||
new HairstylistBuyInfo( 1018364, 500000, true, typeof( ChangeHairHueGump ), new object[]
|
||||
{ From, Vendor, Price, false, true, ChangeHairHueEntry.BrightEntries } )
|
||||
};
|
||||
|
||||
public override void VendorBuy( Mobile from )
|
||||
{
|
||||
from.SendGump( new HairstylistBuyGump( from, this, m_SellList ) );
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public Barber() : base( "the barber" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
}
|
||||
|
||||
public Barber( 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();
|
||||
}
|
||||
}
|
||||
|
||||
public class HairstylistBuyInfo
|
||||
{
|
||||
private int m_Title;
|
||||
private string m_TitleString;
|
||||
private int m_Price;
|
||||
private bool m_FacialHair;
|
||||
private Type m_GumpType;
|
||||
private object[] m_GumpArgs;
|
||||
|
||||
public int Title{ get{ return m_Title; } }
|
||||
public string TitleString{ get{ return m_TitleString; } }
|
||||
public int Price{ get{ return m_Price; } }
|
||||
public bool FacialHair{ get{ return m_FacialHair; } }
|
||||
public Type GumpType{ get{ return m_GumpType; } }
|
||||
public object[] GumpArgs{ get{ return m_GumpArgs; } }
|
||||
|
||||
public HairstylistBuyInfo( int title, int price, bool facialHair, Type gumpType, object[] args )
|
||||
{
|
||||
m_Title = title;
|
||||
m_Price = price;
|
||||
m_FacialHair = facialHair;
|
||||
m_GumpType = gumpType;
|
||||
m_GumpArgs = args;
|
||||
}
|
||||
|
||||
public HairstylistBuyInfo( string title, int price, bool facialHair, Type gumpType, object[] args )
|
||||
{
|
||||
m_TitleString = title;
|
||||
m_Price = price;
|
||||
m_FacialHair = facialHair;
|
||||
m_GumpType = gumpType;
|
||||
m_GumpArgs = args;
|
||||
}
|
||||
}
|
||||
|
||||
public class HairstylistBuyGump : Gump
|
||||
{
|
||||
private Mobile m_From;
|
||||
private Mobile m_Vendor;
|
||||
private HairstylistBuyInfo[] m_SellList;
|
||||
|
||||
public HairstylistBuyGump( Mobile from, Mobile vendor, HairstylistBuyInfo[] sellList ) : base( 50, 50 )
|
||||
{
|
||||
m_From = from;
|
||||
m_Vendor = vendor;
|
||||
m_SellList = sellList;
|
||||
|
||||
from.CloseGump( typeof( HairstylistBuyGump ) );
|
||||
from.CloseGump( typeof( ChangeHairHueGump ) );
|
||||
from.CloseGump( typeof( ChangeHairstyleGump ) );
|
||||
|
||||
bool isFemale = ( from.Female || from.Body.IsFemale );
|
||||
|
||||
int balance = Innkeeper.GetBalance( from );
|
||||
int canAfford = 0;
|
||||
|
||||
for ( int i = 0; i < sellList.Length; ++i )
|
||||
{
|
||||
if ( balance >= sellList[i].Price && (!sellList[i].FacialHair || !isFemale) )
|
||||
++canAfford;
|
||||
}
|
||||
|
||||
AddPage( 0 );
|
||||
|
||||
AddBackground( 50, 10, 450, 100 + (canAfford * 25), 2600 );
|
||||
|
||||
AddHtmlLocalized( 100, 40, 350, 20, 1018356, false, false ); // Choose your hairstyle change:
|
||||
|
||||
int index = 0;
|
||||
|
||||
for ( int i = 0; i < sellList.Length; ++i )
|
||||
{
|
||||
if ( balance >= sellList[i].Price && (!sellList[i].FacialHair || !isFemale) )
|
||||
{
|
||||
if ( sellList[i].TitleString != null )
|
||||
AddHtml( 140, 75 + (index * 25), 300, 20, sellList[i].TitleString, false, false );
|
||||
else
|
||||
AddHtmlLocalized( 140, 75 + (index * 25), 300, 20, sellList[i].Title, false, false );
|
||||
|
||||
AddButton( 100, 75 + (index++ * 25), 4005, 4007, 1 + i, GumpButtonType.Reply, 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnResponse( NetState sender, RelayInfo info )
|
||||
{
|
||||
int index = info.ButtonID - 1;
|
||||
|
||||
if ( index >= 0 && index < m_SellList.Length )
|
||||
{
|
||||
HairstylistBuyInfo buyInfo = m_SellList[index];
|
||||
|
||||
int balance = Innkeeper.GetBalance( m_From );
|
||||
|
||||
bool isFemale = ( m_From.Female || m_From.Body.IsFemale );
|
||||
|
||||
if ( buyInfo.FacialHair && isFemale )
|
||||
{
|
||||
// You cannot place facial hair on a woman!
|
||||
m_Vendor.PrivateOverheadMessage( MessageType.Regular, 0x3B2, 1010639, m_From.NetState );
|
||||
}
|
||||
else if ( balance >= buyInfo.Price )
|
||||
{
|
||||
try
|
||||
{
|
||||
object[] origArgs = buyInfo.GumpArgs;
|
||||
object[] args = new object[origArgs.Length];
|
||||
|
||||
for ( int i = 0; i < args.Length; ++i )
|
||||
{
|
||||
if ( origArgs[i] == Barber.Price )
|
||||
args[i] = m_SellList[index].Price;
|
||||
else if ( origArgs[i] == Barber.From )
|
||||
args[i] = m_From;
|
||||
else if ( origArgs[i] == Barber.Vendor )
|
||||
args[i] = m_Vendor;
|
||||
else
|
||||
args[i] = origArgs[i];
|
||||
}
|
||||
|
||||
Gump g = Activator.CreateInstance( buyInfo.GumpType, args ) as Gump;
|
||||
|
||||
m_From.SendGump( g );
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// You cannot afford my services for that style.
|
||||
m_Vendor.PrivateOverheadMessage( MessageType.Regular, 0x3B2, 1042293, m_From.NetState );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ChangeHairHueEntry
|
||||
{
|
||||
private string m_Name;
|
||||
private int[] m_Hues;
|
||||
|
||||
public string Name{ get{ return m_Name; } }
|
||||
public int[] Hues{ get{ return m_Hues; } }
|
||||
|
||||
public ChangeHairHueEntry( string name, int[] hues )
|
||||
{
|
||||
m_Name = name;
|
||||
m_Hues = hues;
|
||||
}
|
||||
|
||||
public ChangeHairHueEntry( string name, int start, int count )
|
||||
{
|
||||
m_Name = name;
|
||||
|
||||
m_Hues = new int[count];
|
||||
|
||||
for ( int i = 0; i < count; ++i )
|
||||
m_Hues[i] = start + i;
|
||||
}
|
||||
|
||||
public static readonly ChangeHairHueEntry[] BrightEntries = new ChangeHairHueEntry[]
|
||||
{
|
||||
new ChangeHairHueEntry( "*****", 12, 10 ),
|
||||
new ChangeHairHueEntry( "*****", 32, 5 ),
|
||||
new ChangeHairHueEntry( "*****", 38, 8 ),
|
||||
new ChangeHairHueEntry( "*****", 54, 3 ),
|
||||
new ChangeHairHueEntry( "*****", 62, 10 ),
|
||||
new ChangeHairHueEntry( "*****", 81, 2 ),
|
||||
new ChangeHairHueEntry( "*****", 89, 2 ),
|
||||
new ChangeHairHueEntry( "*****", 1153, 2 )
|
||||
};
|
||||
|
||||
public static readonly ChangeHairHueEntry[] RegularEntries = new ChangeHairHueEntry[]
|
||||
{
|
||||
new ChangeHairHueEntry( "*****", 1602, 26 ),
|
||||
new ChangeHairHueEntry( "*****", 1628, 27 ),
|
||||
new ChangeHairHueEntry( "*****", 1502, 32 ),
|
||||
new ChangeHairHueEntry( "*****", 1302, 32 ),
|
||||
new ChangeHairHueEntry( "*****", 1402, 32 ),
|
||||
new ChangeHairHueEntry( "*****", 1202, 24 ),
|
||||
new ChangeHairHueEntry( "*****", 2402, 29 ),
|
||||
new ChangeHairHueEntry( "*****", 2213, 6 ),
|
||||
new ChangeHairHueEntry( "*****", 1102, 8 ),
|
||||
new ChangeHairHueEntry( "*****", 1110, 8 ),
|
||||
new ChangeHairHueEntry( "*****", 1118, 16 ),
|
||||
new ChangeHairHueEntry( "*****", 1134, 16 )
|
||||
};
|
||||
}
|
||||
|
||||
public class ChangeHairHueGump : Gump
|
||||
{
|
||||
private Mobile m_From;
|
||||
private Mobile m_Vendor;
|
||||
private int m_Price;
|
||||
private bool m_Hair;
|
||||
private bool m_FacialHair;
|
||||
private ChangeHairHueEntry[] m_Entries;
|
||||
|
||||
public ChangeHairHueGump( Mobile from, Mobile vendor, int price, bool hair, bool facialHair, ChangeHairHueEntry[] entries ) : base( 50, 50 )
|
||||
{
|
||||
m_From = from;
|
||||
m_Vendor = vendor;
|
||||
m_Price = price;
|
||||
m_Hair = hair;
|
||||
m_FacialHair = facialHair;
|
||||
m_Entries = entries;
|
||||
|
||||
from.CloseGump( typeof( HairstylistBuyGump ) );
|
||||
from.CloseGump( typeof( ChangeHairHueGump ) );
|
||||
from.CloseGump( typeof( ChangeHairstyleGump ) );
|
||||
|
||||
AddPage( 0 );
|
||||
|
||||
AddBackground( 100, 10, 350, 370, 2600 );
|
||||
AddBackground( 120, 54, 110, 270, 5100 );
|
||||
|
||||
AddHtmlLocalized( 155, 25, 240, 30, 1011013, false, false ); // <center>Hair Color Selection Menu</center>
|
||||
|
||||
AddHtmlLocalized( 150, 330, 220, 35, 1011014, false, false ); // Dye my hair this color!
|
||||
AddButton( 380, 330, 4005, 4007, 1, GumpButtonType.Reply, 0 );
|
||||
|
||||
for ( int i = 0; i < entries.Length; ++i )
|
||||
{
|
||||
ChangeHairHueEntry entry = entries[i];
|
||||
|
||||
AddLabel( 130, 59 + (i * 22), entry.Hues[0] - 1, entry.Name );
|
||||
AddButton( 207, 60 + (i * 22), 5224, 5224, 0, GumpButtonType.Page, 1 + i );
|
||||
}
|
||||
|
||||
for ( int i = 0; i < entries.Length; ++i )
|
||||
{
|
||||
ChangeHairHueEntry entry = entries[i];
|
||||
int[] hues = entry.Hues;
|
||||
string name = entry.Name;
|
||||
|
||||
AddPage( 1 + i );
|
||||
|
||||
for ( int j = 0; j < hues.Length; ++j )
|
||||
{
|
||||
AddLabel( 278 + ((j / 16) * 80), 52 + ((j % 16) * 17), hues[j] - 1, name );
|
||||
AddRadio( 260 + ((j / 16) * 80), 52 + ((j % 16) * 17), 210, 211, false, (j * entries.Length) + i );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnResponse( NetState sender, RelayInfo info )
|
||||
{
|
||||
if ( info.ButtonID == 1 )
|
||||
{
|
||||
int[] switches = info.Switches;
|
||||
|
||||
if ( switches.Length > 0 )
|
||||
{
|
||||
int index = switches[0] % m_Entries.Length;
|
||||
int offset = switches[0] / m_Entries.Length;
|
||||
|
||||
if ( index >= 0 && index < m_Entries.Length )
|
||||
{
|
||||
if ( offset >= 0 && offset < m_Entries[index].Hues.Length )
|
||||
{
|
||||
if ( m_Hair && m_From.HairItemID > 0 || m_FacialHair && m_From.FacialHairItemID > 0 )
|
||||
{
|
||||
if ( !Innkeeper.Withdraw( m_From, m_Price ) )
|
||||
{
|
||||
m_Vendor.PrivateOverheadMessage( MessageType.Regular, 0x3B2, 1042293, m_From.NetState ); // You cannot afford my services for that style.
|
||||
return;
|
||||
}
|
||||
|
||||
int hue = m_Entries[index].Hues[offset];
|
||||
|
||||
if ( m_Hair )
|
||||
m_From.HairHue = hue;
|
||||
|
||||
if ( m_FacialHair )
|
||||
m_From.FacialHairHue = hue;
|
||||
}
|
||||
else
|
||||
m_Vendor.PrivateOverheadMessage( MessageType.Regular, 0x3B2, 502623, m_From.NetState ); // You have no hair to dye and you cannot use this.
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// You decide not to change your hairstyle.
|
||||
m_Vendor.PrivateOverheadMessage( MessageType.Regular, 0x3B2, 1013009, m_From.NetState );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// You decide not to change your hairstyle.
|
||||
m_Vendor.PrivateOverheadMessage( MessageType.Regular, 0x3B2, 1013009, m_From.NetState );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ChangeHairstyleEntry
|
||||
{
|
||||
private int m_ItemID;
|
||||
private int m_GumpID;
|
||||
private int m_X, m_Y;
|
||||
|
||||
public int ItemID{ get{ return m_ItemID; } }
|
||||
public int GumpID{ get{ return m_GumpID; } }
|
||||
public int X{ get{ return m_X; } }
|
||||
public int Y{ get{ return m_Y; } }
|
||||
|
||||
public ChangeHairstyleEntry( int gumpID, int x, int y, int itemID )
|
||||
{
|
||||
m_GumpID = gumpID;
|
||||
m_X = x;
|
||||
m_Y = y;
|
||||
m_ItemID = itemID;
|
||||
}
|
||||
|
||||
public static readonly ChangeHairstyleEntry[] HairEntries = new ChangeHairstyleEntry[]
|
||||
{
|
||||
new ChangeHairstyleEntry( 50700, 70 - 137, 20 - 60, 0x203B ),
|
||||
new ChangeHairstyleEntry( 60710, 193 - 260, 18 - 60, 0x2045 ),
|
||||
new ChangeHairstyleEntry( 50703, 316 - 383, 25 - 60, 0x2044 ),
|
||||
new ChangeHairstyleEntry( 60708, 70 - 137, 75 - 125, 0x203C ),
|
||||
new ChangeHairstyleEntry( 60900, 193 - 260, 85 - 125, 0x2047 ),
|
||||
new ChangeHairstyleEntry( 60713, 320 - 383, 85 - 125, 0x204A ),
|
||||
new ChangeHairstyleEntry( 60702, 70 - 137, 140 - 190, 0x203D ),
|
||||
new ChangeHairstyleEntry( 60707, 193 - 260, 140 - 190, 0x2049 ),
|
||||
new ChangeHairstyleEntry( 60901, 315 - 383, 150 - 190, 0x2048 ),
|
||||
new ChangeHairstyleEntry( 0, 0, 0, 0 )
|
||||
};
|
||||
|
||||
public static readonly ChangeHairstyleEntry[] BeardEntries = new ChangeHairstyleEntry[]
|
||||
{
|
||||
new ChangeHairstyleEntry( 50800, 120 - 187, 30 - 80, 0x2040 ),
|
||||
new ChangeHairstyleEntry( 50904, 243 - 310, 33 - 80, 0x204B ),
|
||||
new ChangeHairstyleEntry( 50906, 120 - 187, 100 - 150, 0x204D ),
|
||||
new ChangeHairstyleEntry( 50801, 243 - 310, 95 - 150, 0x203E ),
|
||||
new ChangeHairstyleEntry( 50802, 120 - 187, 173 - 220, 0x203F ),
|
||||
new ChangeHairstyleEntry( 50905, 243 - 310, 165 - 220, 0x204C ),
|
||||
new ChangeHairstyleEntry( 50808, 120 - 187, 242 - 290, 0x2041 ),
|
||||
new ChangeHairstyleEntry( 0, 0, 0, 0 )
|
||||
};
|
||||
}
|
||||
|
||||
public class ChangeHairstyleGump : Gump
|
||||
{
|
||||
private Mobile m_From;
|
||||
private Mobile m_Vendor;
|
||||
private int m_Price;
|
||||
private bool m_FacialHair;
|
||||
private ChangeHairstyleEntry[] m_Entries;
|
||||
|
||||
public ChangeHairstyleGump( Mobile from, Mobile vendor, int price, bool facialHair, ChangeHairstyleEntry[] entries ) : base( 50, 50 )
|
||||
{
|
||||
m_From = from;
|
||||
m_Vendor = vendor;
|
||||
m_Price = price;
|
||||
m_FacialHair = facialHair;
|
||||
m_Entries = entries;
|
||||
|
||||
from.CloseGump( typeof( HairstylistBuyGump ) );
|
||||
from.CloseGump( typeof( ChangeHairHueGump ) );
|
||||
from.CloseGump( typeof( ChangeHairstyleGump ) );
|
||||
|
||||
int tableWidth = ( m_FacialHair ? 2 : 3 );
|
||||
int tableHeight = ( (entries.Length + tableWidth - ( m_FacialHair ? 1 : 2 )) / tableWidth );
|
||||
int offsetWidth = 123;
|
||||
int offsetHeight = ( m_FacialHair ? 70 : 65 );
|
||||
|
||||
AddPage( 0 );
|
||||
|
||||
AddBackground( 0, 0, 81 + (tableWidth * offsetWidth), 105 + (tableHeight * offsetHeight), 2600 );
|
||||
|
||||
AddButton( 45, 45 + (tableHeight * offsetHeight), 4005, 4007, 1, GumpButtonType.Reply, 0 );
|
||||
AddHtmlLocalized( 77, 45 + (tableHeight * offsetHeight), 90, 35, 1006044, false, false ); // Ok
|
||||
|
||||
AddButton( 81 + (tableWidth * offsetWidth) - 180, 45 + (tableHeight * offsetHeight), 4005, 4007, 0, GumpButtonType.Reply, 0 );
|
||||
AddHtmlLocalized( 81 + (tableWidth * offsetWidth) - 148, 45 + (tableHeight * offsetHeight), 90, 35, 1006045, false, false ); // Cancel
|
||||
|
||||
if ( !facialHair )
|
||||
AddHtmlLocalized( 50, 15, 350, 20, 1018353, false, false ); // <center>New Hairstyle</center>
|
||||
else
|
||||
AddHtmlLocalized( 55, 15, 200, 20, 1018354, false, false ); // <center>New Beard</center>
|
||||
|
||||
for ( int i = 0; i < entries.Length; ++i )
|
||||
{
|
||||
int xTable = i % tableWidth;
|
||||
int yTable = i / tableWidth;
|
||||
|
||||
if ( entries[i].GumpID != 0 )
|
||||
{
|
||||
AddRadio( 40 + (xTable * offsetWidth), 70 + (yTable * offsetHeight), 208, 209, false, i );
|
||||
AddBackground( 87 + (xTable * offsetWidth), 50 + (yTable * offsetHeight), 50, 50, 2620 );
|
||||
AddImage( 87 + (xTable * offsetWidth) + entries[i].X, 50 + (yTable * offsetHeight) + entries[i].Y, entries[i].GumpID );
|
||||
}
|
||||
else if ( !facialHair )
|
||||
{
|
||||
AddRadio( 40 + ((xTable + 1) * offsetWidth), 240, 208, 209, false, i );
|
||||
AddHtmlLocalized( 60 + ((xTable + 1) * offsetWidth), 240, 85, 35, 1011064, false, false ); // Bald
|
||||
}
|
||||
else
|
||||
{
|
||||
AddRadio( 40 + (xTable * offsetWidth), 70 + (yTable * offsetHeight), 208, 209, false, i );
|
||||
AddHtmlLocalized( 60 + (xTable * offsetWidth), 70 + (yTable * offsetHeight), 85, 35, 1011064, false, false ); // Bald
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnResponse( NetState sender, RelayInfo info )
|
||||
{
|
||||
if ( m_FacialHair && (m_From.Female || m_From.Body.IsFemale) )
|
||||
return;
|
||||
|
||||
if ( info.ButtonID == 1 )
|
||||
{
|
||||
int[] switches = info.Switches;
|
||||
|
||||
if ( switches.Length > 0 )
|
||||
{
|
||||
int index = switches[0];
|
||||
|
||||
if ( index >= 0 && index < m_Entries.Length )
|
||||
{
|
||||
ChangeHairstyleEntry entry = m_Entries[index];
|
||||
|
||||
if ( m_From is PlayerMobile )
|
||||
((PlayerMobile)m_From).SetHairMods( -1, -1 );
|
||||
|
||||
int hairID = m_From.RecordHair;
|
||||
int facialHairID = m_From.RecordBeard;
|
||||
|
||||
if ( entry.ItemID == 0 )
|
||||
{
|
||||
if ( m_FacialHair ? (facialHairID == 0) : (hairID == 0) )
|
||||
return;
|
||||
|
||||
if ( Innkeeper.Withdraw( m_From, m_Price ) )
|
||||
{
|
||||
if ( m_FacialHair )
|
||||
{
|
||||
m_From.FacialHairItemID = 0;
|
||||
m_From.RecordBeard = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_From.HairItemID = 0;
|
||||
m_From.RecordHair = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
m_Vendor.PrivateOverheadMessage( MessageType.Regular, 0x3B2, 1042293, m_From.NetState ); // You cannot afford my services for that style.
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( m_FacialHair )
|
||||
{
|
||||
if ( facialHairID > 0 && facialHairID == entry.ItemID )
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( hairID > 0 && hairID == entry.ItemID )
|
||||
return;
|
||||
}
|
||||
|
||||
if ( Innkeeper.Withdraw( m_From, m_Price ) )
|
||||
{
|
||||
if ( m_FacialHair )
|
||||
{
|
||||
m_From.FacialHairItemID = entry.ItemID;
|
||||
m_From.RecordBeard = m_From.FacialHairItemID;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_From.HairItemID = entry.ItemID;
|
||||
m_From.RecordHair = m_From.HairItemID;
|
||||
}
|
||||
}
|
||||
else
|
||||
m_Vendor.PrivateOverheadMessage( MessageType.Regular, 0x3B2, 1042293, m_From.NetState ); // You cannot afford my services for that style.
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// You decide not to change your hairstyle.
|
||||
m_Vendor.PrivateOverheadMessage( MessageType.Regular, 0x3B2, 1013009, m_From.NetState );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// You decide not to change your hairstyle.
|
||||
m_Vendor.PrivateOverheadMessage( MessageType.Regular, 0x3B2, 1013009, m_From.NetState );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
48
Scripts/Mobiles/Towns/Vendors/Bard.cs
Normal file
48
Scripts/Mobiles/Towns/Vendors/Bard.cs
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Bard : 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.BardsGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Bard() : base( "the bard" )
|
||||
{
|
||||
SetSkill( SkillName.Discordance, 64.0, 100.0 );
|
||||
SetSkill( SkillName.Musicianship, 64.0, 100.0 );
|
||||
SetSkill( SkillName.Peacemaking, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Provocation, 60.0, 83.0 );
|
||||
SetSkill( SkillName.Archery, 36.0, 68.0 );
|
||||
SetSkill( SkillName.Swords, 36.0, 68.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBBard() );
|
||||
}
|
||||
|
||||
public Bard( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
52
Scripts/Mobiles/Towns/Vendors/Barkeeper.cs
Normal file
52
Scripts/Mobiles/Towns/Vendors/Barkeeper.cs
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Gumps;
|
||||
using Server.Prompts;
|
||||
using Server.Network;
|
||||
using Server.ContextMenus;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Barkeeper : BaseVendor
|
||||
{
|
||||
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 SBBarkeeper() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
AddItem( new HalfApron() );
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public Barkeeper() : base( "the barkeeper" )
|
||||
{
|
||||
}
|
||||
|
||||
public Barkeeper( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
40
Scripts/Mobiles/Towns/Vendors/Beekeeper.cs
Normal file
40
Scripts/Mobiles/Towns/Vendors/Beekeeper.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Beekeeper : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Beekeeper() : base( "the beekeeper" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBBeekeeper() );
|
||||
}
|
||||
|
||||
public Beekeeper( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
54
Scripts/Mobiles/Towns/Vendors/Blacksmith.cs
Normal file
54
Scripts/Mobiles/Towns/Vendors/Blacksmith.cs
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Blacksmith : 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.BlacksmithsGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Blacksmith() : base( "the blacksmith" )
|
||||
{
|
||||
SetSkill( SkillName.Fencing, 60.0, 83.0 );
|
||||
SetSkill( SkillName.Bludgeoning, 61.0, 93.0 );
|
||||
SetSkill( SkillName.Swords, 60.0, 83.0 );
|
||||
SetSkill( SkillName.Tactics, 60.0, 83.0 );
|
||||
SetSkill( SkillName.Parry, 61.0, 93.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBBlacksmith() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
AddItem( new Server.Items.FullApron() );
|
||||
AddItem( new Server.Items.SmithHammer() );
|
||||
}
|
||||
|
||||
public Blacksmith( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
50
Scripts/Mobiles/Towns/Vendors/Bowyer.cs
Normal file
50
Scripts/Mobiles/Towns/Vendors/Bowyer.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[TypeAlias( "Server.Mobiles.Bower" )]
|
||||
public class Bowyer : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Bowyer() : base( "the bowyer" )
|
||||
{
|
||||
SetSkill( SkillName.Archery, 80.0, 100.0 );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
AddItem( new Server.Items.Bow() );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBBowyer() );
|
||||
m_SBInfos.Add( new SBRangedWeapon() );
|
||||
}
|
||||
|
||||
public Bowyer( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
48
Scripts/Mobiles/Towns/Vendors/Butcher.cs
Normal file
48
Scripts/Mobiles/Towns/Vendors/Butcher.cs
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Butcher : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Butcher() : base( "the butcher" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBButcher() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
AddItem( new Server.Items.HalfApron() );
|
||||
AddItem( new Server.Items.Cleaver() );
|
||||
}
|
||||
|
||||
public Butcher( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
51
Scripts/Mobiles/Towns/Vendors/Carpenter.cs
Normal file
51
Scripts/Mobiles/Towns/Vendors/Carpenter.cs
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Carpenter : 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.CarpentryGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Carpenter() : base( "the carpenter" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBStavesWeapon() );
|
||||
m_SBInfos.Add( new SBCarpenter() );
|
||||
m_SBInfos.Add( new SBWoodenShields() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
AddItem( new Server.Items.HalfApron() );
|
||||
if ( Utility.RandomBool() ){ AddItem( new Server.Items.SmithHammer() ); }
|
||||
}
|
||||
|
||||
public Carpenter( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
40
Scripts/Mobiles/Towns/Vendors/Cobbler.cs
Normal file
40
Scripts/Mobiles/Towns/Vendors/Cobbler.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Cobbler : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Cobbler() : base( "the cobbler" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBCobbler() );
|
||||
}
|
||||
|
||||
public Cobbler( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
47
Scripts/Mobiles/Towns/Vendors/Cook.cs
Normal file
47
Scripts/Mobiles/Towns/Vendors/Cook.cs
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Cook : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Cook() : base( "the cook" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBCook() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
AddItem( new Server.Items.HalfApron() );
|
||||
}
|
||||
|
||||
public Cook( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
51
Scripts/Mobiles/Towns/Vendors/Farmer.cs
Normal file
51
Scripts/Mobiles/Towns/Vendors/Farmer.cs
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Farmer : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Farmer() : base( "the farmer" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBFarmer() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
if ( Utility.RandomBool() )
|
||||
AddItem( new Server.Items.Pitchfork() );
|
||||
|
||||
if ( Utility.RandomBool() )
|
||||
AddItem( new Server.Items.TallStrawHat() );
|
||||
}
|
||||
|
||||
public Farmer( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
96
Scripts/Mobiles/Towns/Vendors/Fighter.cs
Normal file
96
Scripts/Mobiles/Towns/Vendors/Fighter.cs
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Fighter : 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.WarriorsGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Fighter() : base( "the fighter" )
|
||||
{
|
||||
SetSkill( SkillName.Fencing, 45.0, 68.0 );
|
||||
SetSkill( SkillName.Bludgeoning, 45.0, 68.0 );
|
||||
SetSkill( SkillName.Swords, 45.0, 68.0 );
|
||||
SetSkill( SkillName.Tactics, 36.0, 68.0 );
|
||||
SetSkill( SkillName.Parry, 45.0, 68.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
switch ( Utility.Random( 8 ) )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_SBInfos.Add( new SBLeatherArmor() );
|
||||
m_SBInfos.Add( new SBStuddedArmor() );
|
||||
m_SBInfos.Add( new SBMetalShields() );
|
||||
m_SBInfos.Add( new SBPlateArmor() );
|
||||
m_SBInfos.Add( new SBHelmetArmor() );
|
||||
m_SBInfos.Add( new SBChainmailArmor() );
|
||||
m_SBInfos.Add( new SBRingmailArmor() );
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
m_SBInfos.Add( new SBStuddedArmor() );
|
||||
m_SBInfos.Add( new SBLeatherArmor() );
|
||||
m_SBInfos.Add( new SBMetalShields() );
|
||||
m_SBInfos.Add( new SBHelmetArmor() );
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
m_SBInfos.Add( new SBMetalShields() );
|
||||
m_SBInfos.Add( new SBPlateArmor() );
|
||||
m_SBInfos.Add( new SBHelmetArmor() );
|
||||
m_SBInfos.Add( new SBChainmailArmor() );
|
||||
m_SBInfos.Add( new SBRingmailArmor() );
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
m_SBInfos.Add( new SBMetalShields() );
|
||||
m_SBInfos.Add( new SBHelmetArmor() );
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
{
|
||||
m_SBInfos.Add( new SBWeaponSmith() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
Server.Misc.CitizenDressing.CitizenDress( this, 1 );
|
||||
}
|
||||
|
||||
public Fighter( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
52
Scripts/Mobiles/Towns/Vendors/Fisherman.cs
Normal file
52
Scripts/Mobiles/Towns/Vendors/Fisherman.cs
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Fisherman : 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.MarinersGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Fisherman() : base( "the fisherman" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBFisherman() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
AddItem( new Server.Items.FishingPole() );
|
||||
|
||||
if ( Utility.RandomBool() )
|
||||
AddItem( new Server.Items.FloppyHat( Utility.RandomHue() ) );
|
||||
}
|
||||
|
||||
public Fisherman( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
113
Scripts/Mobiles/Towns/Vendors/Gypsy.cs
Normal file
113
Scripts/Mobiles/Towns/Vendors/Gypsy.cs
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Gypsy : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Gypsy() : base( "the gypsy" )
|
||||
{
|
||||
SetSkill( SkillName.Healing, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Concentration, 65.0, 88.0 );
|
||||
SetSkill( SkillName.MagicResist, 65.0, 88.0 );
|
||||
SetSkill( SkillName.HandToHand, 36.0, 68.0 );
|
||||
SetSkill( SkillName.Stealing, 65.0, 88.0 );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
AddItem( new Kilt( Utility.RandomDyedHue() ) );
|
||||
AddItem( new Shirt( Utility.RandomDyedHue() ) );
|
||||
AddItem( new ThighBoots() );
|
||||
AddItem( new SkullCap( Utility.RandomDyedHue() ) );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBGypsy() );
|
||||
}
|
||||
|
||||
public Gypsy( 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();
|
||||
}
|
||||
|
||||
private DateTime m_NextTalk;
|
||||
public DateTime NextTalk{ get{ return m_NextTalk; } set{ m_NextTalk = value; } }
|
||||
public override void OnMovement( Mobile m, Point3D oldLocation )
|
||||
{
|
||||
if( m is PlayerMobile )
|
||||
{
|
||||
if ( DateTime.Now >= m_NextTalk && InRange( m, 4 ) && InLOS( m ) )
|
||||
{
|
||||
switch ( Utility.Random( 45 ))
|
||||
{
|
||||
case 0: Say("A reunion must not occur or the unlucky chimera must fold in the age of temptation."); break;
|
||||
case 1: Say("An injury shall happen."); break;
|
||||
case 2: Say("He shall not assimilate with the proud youth."); break;
|
||||
case 3: Say("They will not weave near an altar."); break;
|
||||
case 4: Say("She will finally intrude."); break;
|
||||
case 5: Say("The diamond possum shall not deflect near a fortress on a sunny day before the coming of beauty."); break;
|
||||
case 6: Say("A relationship ending will finally happen with the tired juggler during the planting season."); break;
|
||||
case 7: Say("The clever hamster will trespass with the saffron youth in a castle when the first flowers bloom."); break;
|
||||
case 8: Say("A betrayal will finally happen or he will babble at the coming of destruction."); break;
|
||||
case 9: Say("She will finally gutter in a market before it is too late."); break;
|
||||
case 10: Say("An introduction will finally happen or the seductive viper shall not worship with the fanatical druid during the planting season."); break;
|
||||
case 11: Say("The broken-hearted grandmother will act or he shall not meander."); break;
|
||||
case 12: Say("A defeat will not take place in a castle on a journey."); break;
|
||||
case 13: Say("The fearless trader shall not look with the violet druid."); break;
|
||||
case 14: Say("The honest runaway will succumb with the hungry hare before the coming of lust."); break;
|
||||
case 15: Say("It will judge in the summer."); break;
|
||||
case 16: Say("The emerald lion will never scare for the sake of winter."); break;
|
||||
case 17: Say("She will finally famish and a recovery will not happen near a well during a rainstorm."); break;
|
||||
case 18: Say("A fight shall take place for the sake of willpower."); break;
|
||||
case 19: Say("The fanatical wizard shall not wax near a holy site in the afternoon at the coming of luck."); break;
|
||||
case 20: Say("She shall not ascend after sunset."); break;
|
||||
case 21: Say("It will never pray with the shy zealot."); break;
|
||||
case 22: Say("A meeting must happen with the malicious cook."); break;
|
||||
case 23: Say("The remorseless muse will fraternize at the bridge."); break;
|
||||
case 24: Say("The russet berserker must gasp or the remorseless slave must not bicker with the triumphant lion near a farm on the spring equinox."); break;
|
||||
case 25: Say("He shall fence with the black countess near a portal."); break;
|
||||
case 26: Say("An introduction will not happen and the intelligent champion shall lower on the spring equinox."); break;
|
||||
case 27: Say("The hasty hostler must jump."); break;
|
||||
case 28: Say("An agreement must take place with the broken-hearted cleric."); break;
|
||||
case 29: Say("It will finally benefit in the citadel in the age of dreams."); break;
|
||||
case 30: Say("A financial difficulty will never take place or the clumsy zombie will finally weep at midnight."); break;
|
||||
case 31: Say("She shall weld or he will finally crush during the growing season."); break;
|
||||
case 32: Say("The greedy artist shall lace and the garnet general must not compose."); break;
|
||||
case 33: Say("The arrogant rogue must not comply with the indigo robber at the coming of joy."); break;
|
||||
case 34: Say("The lavender summoner will crush in a time of truth."); break;
|
||||
case 35: Say("A contest must not happen after the first frost."); break;
|
||||
case 36: Say("She must not consent in the age of entropy."); break;
|
||||
case 37: Say("The deluded pony will not forget in a graveyard on a windy day for the sake of alchemy."); break;
|
||||
case 38: Say("A reversal of fortune shall not happen and a fall shall not occur in the spring for the sake of lust."); break;
|
||||
case 39: Say("She will ensure in the citadel."); break;
|
||||
case 40: Say("The lazy juggler will finally enquire and a loss shall not occur."); break;
|
||||
case 41: Say("A promise will finally take place and it shall not bother during fall in a time of fear."); break;
|
||||
case 42: Say("He must not weary."); break;
|
||||
case 43: Say("The orange donkey shall not gutter at the bridge."); break;
|
||||
case 44: Say("The word to the dark mage depths is 'bravoka'."); break;
|
||||
};
|
||||
m_NextTalk = (DateTime.Now + TimeSpan.FromSeconds( 30 ));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
40
Scripts/Mobiles/Towns/Vendors/HairStylist.cs
Normal file
40
Scripts/Mobiles/Towns/Vendors/HairStylist.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class HairStylist : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public HairStylist() : base( "the hair stylist" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBHairStylist() );
|
||||
}
|
||||
|
||||
public HairStylist( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Mobiles/Towns/Vendors/Herbalist.cs
Normal file
42
Scripts/Mobiles/Towns/Vendors/Herbalist.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Herbalist : 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 Herbalist() : base( "the herbalist" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBHerbalist() );
|
||||
}
|
||||
|
||||
public Herbalist( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
449
Scripts/Mobiles/Towns/Vendors/Innkeeper.cs
Normal file
449
Scripts/Mobiles/Towns/Vendors/Innkeeper.cs
Normal file
|
|
@ -0,0 +1,449 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server.Items;
|
||||
using Server.ContextMenus;
|
||||
using Server.Misc;
|
||||
using Server.Network;
|
||||
using Server.Regions;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Innkeeper : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Innkeeper() : base( "the innkeeper" )
|
||||
{
|
||||
Item candle = new HeldLight();
|
||||
candle.Name = "candle";
|
||||
candle.ItemID = 0xA0F;
|
||||
candle.Light = LightType.Circle150;
|
||||
AddItem( candle );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBInnKeeper() );
|
||||
}
|
||||
|
||||
public static int GetBalance( Mobile from )
|
||||
{
|
||||
Item[] gold, checks;
|
||||
|
||||
return GetBalance( from, out gold, out checks );
|
||||
}
|
||||
|
||||
public static int GetBalance( Mobile from, out Item[] gold, out Item[] checks )
|
||||
{
|
||||
int balance = 0;
|
||||
|
||||
Container inn = from.FindInnNoCreate();
|
||||
|
||||
if ( inn != null )
|
||||
{
|
||||
gold = inn.FindItemsByType( typeof( Gold ) );
|
||||
checks = inn.FindItemsByType( typeof( GoldDeed ) );
|
||||
|
||||
for ( int i = 0; i < gold.Length; ++i )
|
||||
balance += gold[i].Amount;
|
||||
|
||||
for ( int i = 0; i < checks.Length; ++i )
|
||||
balance += ((GoldDeed)checks[i]).Worth;
|
||||
}
|
||||
else
|
||||
{
|
||||
gold = checks = new Item[0];
|
||||
}
|
||||
|
||||
return balance;
|
||||
}
|
||||
|
||||
public static bool Withdraw( Mobile from, int amount )
|
||||
{
|
||||
Item[] gold, checks;
|
||||
int balance = GetBalance( from, out gold, out checks );
|
||||
|
||||
if ( balance < amount )
|
||||
return false;
|
||||
|
||||
for ( int i = 0; amount > 0 && i < gold.Length; ++i )
|
||||
{
|
||||
if ( gold[i].Amount <= amount )
|
||||
{
|
||||
amount -= gold[i].Amount;
|
||||
gold[i].Delete();
|
||||
}
|
||||
else
|
||||
{
|
||||
gold[i].Amount -= amount;
|
||||
amount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
for ( int i = 0; amount > 0 && i < checks.Length; ++i )
|
||||
{
|
||||
GoldDeed check = (GoldDeed)checks[i];
|
||||
|
||||
if ( check.Worth <= amount )
|
||||
{
|
||||
amount -= check.Worth;
|
||||
check.Delete();
|
||||
}
|
||||
else
|
||||
{
|
||||
check.Worth -= amount;
|
||||
amount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool Deposit( Mobile from, int amount )
|
||||
{
|
||||
InnBox box = from.FindInnNoCreate();
|
||||
if ( box == null )
|
||||
return false;
|
||||
|
||||
List<Item> items = new List<Item>();
|
||||
|
||||
while ( amount > 0 )
|
||||
{
|
||||
Item item;
|
||||
if ( amount < 5000 )
|
||||
{
|
||||
item = new Gold( amount );
|
||||
amount = 0;
|
||||
}
|
||||
else if ( amount <= 1000000 )
|
||||
{
|
||||
item = new GoldDeed( amount );
|
||||
amount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
item = new GoldDeed( 1000000 );
|
||||
amount -= 1000000;
|
||||
}
|
||||
|
||||
if ( box.TryDropItem( from, item, false ) )
|
||||
{
|
||||
items.Add( item );
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Delete();
|
||||
foreach ( Item curItem in items )
|
||||
{
|
||||
curItem.Delete();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static int DepositUpTo( Mobile from, int amount )
|
||||
{
|
||||
InnBox box = from.FindInnNoCreate();
|
||||
if ( box == null )
|
||||
return 0;
|
||||
|
||||
int amountLeft = amount;
|
||||
while ( amountLeft > 0 )
|
||||
{
|
||||
Item item;
|
||||
int amountGiven;
|
||||
|
||||
if ( amountLeft < 5000 )
|
||||
{
|
||||
item = new Gold( amountLeft );
|
||||
amountGiven = amountLeft;
|
||||
}
|
||||
else if ( amountLeft <= 1000000 )
|
||||
{
|
||||
item = new GoldDeed( amountLeft );
|
||||
amountGiven = amountLeft;
|
||||
}
|
||||
else
|
||||
{
|
||||
item = new GoldDeed( 1000000 );
|
||||
amountGiven = 1000000;
|
||||
}
|
||||
|
||||
if ( box.TryDropItem( from, item, false ) )
|
||||
{
|
||||
amountLeft -= amountGiven;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Delete();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return amount - amountLeft;
|
||||
}
|
||||
|
||||
public static void Deposit( Container cont, int amount )
|
||||
{
|
||||
while ( amount > 0 )
|
||||
{
|
||||
Item item;
|
||||
|
||||
if ( amount < 5000 )
|
||||
{
|
||||
item = new Gold( amount );
|
||||
amount = 0;
|
||||
}
|
||||
else if ( amount <= 1000000 )
|
||||
{
|
||||
item = new GoldDeed( amount );
|
||||
amount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
item = new GoldDeed( 1000000 );
|
||||
amount -= 1000000;
|
||||
}
|
||||
|
||||
cont.DropItem( item );
|
||||
}
|
||||
}
|
||||
|
||||
public Innkeeper( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override bool HandlesOnSpeech( Mobile from )
|
||||
{
|
||||
if ( from.InRange( this.Location, 12 ) )
|
||||
return true;
|
||||
|
||||
return base.HandlesOnSpeech( from );
|
||||
}
|
||||
|
||||
public override void OnSpeech( SpeechEventArgs e )
|
||||
{
|
||||
if ( !e.Handled && e.Mobile.InRange( this.Location, 12 ) && (e.Mobile).Region is InnRegion )
|
||||
{
|
||||
int keyword = 0;
|
||||
|
||||
if ( e.Speech.ToLower().IndexOf( "withdraw" ) >= 0 ){ keyword = 1; }
|
||||
else if ( e.Speech.ToLower().IndexOf( "balance" ) >= 0 ){ keyword = 2; }
|
||||
else if ( e.Speech.ToLower().IndexOf( "inn" ) >= 0 ){ keyword = 3; }
|
||||
else if ( e.Speech.ToLower().IndexOf( "deed" ) >= 0 ){ keyword = 4; }
|
||||
|
||||
switch ( keyword )
|
||||
{
|
||||
case 1: // *withdraw*
|
||||
{
|
||||
e.Handled = true;
|
||||
|
||||
if ( e.Mobile.Criminal )
|
||||
{
|
||||
this.Say( 500389 ); // I will not do business with a criminal!
|
||||
break;
|
||||
}
|
||||
|
||||
string[] split = e.Speech.Split( ' ' );
|
||||
|
||||
if ( split.Length >= 2 )
|
||||
{
|
||||
int amount;
|
||||
|
||||
Container pack = e.Mobile.Backpack;
|
||||
|
||||
if ( !int.TryParse( split[1], out amount ) )
|
||||
break;
|
||||
|
||||
if ( amount > 5000 )
|
||||
{
|
||||
this.Say( 500381 ); // Thou canst not withdraw so much at one time!
|
||||
}
|
||||
else if (pack == null || pack.Deleted || !(pack.TotalWeight < pack.MaxWeight) || !(pack.TotalItems < pack.MaxItems))
|
||||
{
|
||||
this.Say(1048147); // Your backpack can't hold anything else.
|
||||
}
|
||||
else if (amount > 0)
|
||||
{
|
||||
InnBox box = e.Mobile.FindInnNoCreate();
|
||||
|
||||
if (box == null || !box.ConsumeTotal(typeof(Gold), amount))
|
||||
{
|
||||
this.Say(500384); // Ah, art thou trying to fool me? Thou hast not so much gold!
|
||||
}
|
||||
else
|
||||
{
|
||||
pack.DropItem(new Gold(amount));
|
||||
|
||||
this.Say(1010005); // Thou hast withdrawn gold from thy account.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 2: // *balance*
|
||||
{
|
||||
e.Handled = true;
|
||||
|
||||
if ( e.Mobile.Criminal )
|
||||
{
|
||||
this.Say( 500389 ); // I will not do business with a criminal!
|
||||
break;
|
||||
}
|
||||
|
||||
InnBox box = e.Mobile.FindInnNoCreate();
|
||||
|
||||
if ( box != null )
|
||||
this.Say( 1042759, box.TotalGold.ToString() ); // Thy current inn balance is ~1_AMOUNT~ gold.
|
||||
else
|
||||
this.Say( 1042759, "0" ); // Thy current inn balance is ~1_AMOUNT~ gold.
|
||||
|
||||
break;
|
||||
}
|
||||
case 3: // *inn*
|
||||
{
|
||||
e.Handled = true;
|
||||
|
||||
if ( e.Mobile.Criminal )
|
||||
{
|
||||
this.Say( 500378 ); // Thou art a criminal and cannot access thy inn chest.
|
||||
break;
|
||||
}
|
||||
|
||||
e.Mobile.InnBox.Open();
|
||||
|
||||
break;
|
||||
}
|
||||
case 4: // *deed*
|
||||
{
|
||||
e.Handled = true;
|
||||
|
||||
if ( e.Mobile.Criminal )
|
||||
{
|
||||
this.Say( 500389 ); // I will not do business with a criminal!
|
||||
break;
|
||||
}
|
||||
|
||||
string[] split = e.Speech.Split( ' ' );
|
||||
|
||||
if ( split.Length >= 2 )
|
||||
{
|
||||
int amount;
|
||||
|
||||
if ( !int.TryParse( split[1], out amount ) )
|
||||
break;
|
||||
|
||||
if ( amount < 5000 )
|
||||
{
|
||||
this.Say( 1010006 ); // We cannot create gold deeds for such a paltry amount of gold!
|
||||
}
|
||||
else if ( amount > 1000000 )
|
||||
{
|
||||
this.Say( 1010007 ); // Our policies prevent us from creating gold deeds worth that much!
|
||||
}
|
||||
else
|
||||
{
|
||||
GoldDeed check = new GoldDeed( amount );
|
||||
|
||||
InnBox box = e.Mobile.InnBox;
|
||||
|
||||
if ( !box.TryDropItem( e.Mobile, check, false ) )
|
||||
{
|
||||
this.Say( 500386 ); // There's not enough room in your inn chest for the gold deed!
|
||||
check.Delete();
|
||||
}
|
||||
else if ( !box.ConsumeTotal( typeof( Gold ), amount ) )
|
||||
{
|
||||
this.Say( 500384 ); // Ah, art thou trying to fool me? Thou hast not so much gold!
|
||||
check.Delete();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Say( 1042673, AffixType.Append, amount.ToString(), "" ); // Into your inn chest I have placed a gold deed in the amount of:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
base.OnSpeech( e );
|
||||
}
|
||||
|
||||
public override void AddCustomContextEntries( Mobile from, List<ContextMenuEntry> list )
|
||||
{
|
||||
if ( from.Alive )
|
||||
list.Add( new OpenInnEntry( from, this ) );
|
||||
|
||||
base.AddCustomContextEntries( from, list );
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class HeldLight : BaseEquipableLight
|
||||
{
|
||||
public override int LitItemID{ get { return 0xA22; } }
|
||||
public override int UnlitItemID{ get { return 0xA22; } }
|
||||
|
||||
[Constructable]
|
||||
public HeldLight() : base( 0xA22 )
|
||||
{
|
||||
Name = "lantern";
|
||||
Duration = TimeSpan.Zero;
|
||||
Burning = true;
|
||||
Light = LightType.Circle300;
|
||||
Weight = 2.0;
|
||||
LootType = LootType.Blessed;
|
||||
|
||||
switch ( Utility.Random( 3 ) )
|
||||
{
|
||||
default:
|
||||
case 0: Name = "torch"; ItemID = 0xA12; Light = LightType.Circle300; break;
|
||||
case 1: Name = "candle"; ItemID = 0xA0F; Light = LightType.Circle150; break;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool DisplayLootType{ get{ return false; } }
|
||||
|
||||
public HeldLight( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
68
Scripts/Mobiles/Towns/Vendors/IronWorker.cs
Normal file
68
Scripts/Mobiles/Towns/Vendors/IronWorker.cs
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class IronWorker : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public IronWorker() : base( "the iron worker" )
|
||||
{
|
||||
SetSkill( SkillName.Fencing, 60.0, 83.0 );
|
||||
SetSkill( SkillName.Bludgeoning, 61.0, 93.0 );
|
||||
SetSkill( SkillName.Swords, 60.0, 83.0 );
|
||||
SetSkill( SkillName.Tactics, 60.0, 83.0 );
|
||||
SetSkill( SkillName.Parry, 61.0, 93.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBAxeWeapon() );
|
||||
m_SBInfos.Add( new SBKnifeWeapon() );
|
||||
m_SBInfos.Add( new SBMaceWeapon() );
|
||||
m_SBInfos.Add( new SBSmithTools() );
|
||||
m_SBInfos.Add( new SBPoleArmWeapon() );
|
||||
m_SBInfos.Add( new SBSpearForkWeapon() );
|
||||
m_SBInfos.Add( new SBSwordWeapon() );
|
||||
|
||||
m_SBInfos.Add( new SBMetalShields() );
|
||||
|
||||
m_SBInfos.Add( new SBHelmetArmor() );
|
||||
m_SBInfos.Add( new SBPlateArmor() );
|
||||
m_SBInfos.Add( new SBChainmailArmor() );
|
||||
m_SBInfos.Add( new SBRingmailArmor() );
|
||||
m_SBInfos.Add( new SBStuddedArmor() );
|
||||
m_SBInfos.Add( new SBLeatherArmor() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
AddItem( new Server.Items.FullApron() );
|
||||
AddItem( new Server.Items.SmithHammer() );
|
||||
}
|
||||
|
||||
public IronWorker( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
76
Scripts/Mobiles/Towns/Vendors/Jester.cs
Normal file
76
Scripts/Mobiles/Towns/Vendors/Jester.cs
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Jester : 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.ThievesGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Jester() : base( "the jester" )
|
||||
{
|
||||
SetSkill( SkillName.Searching, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Hiding, 45.0, 68.0 );
|
||||
SetSkill( SkillName.Lockpicking, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Stealing, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Stealth, 65.0, 88.0 );
|
||||
SetSkill( SkillName.RemoveTrap, 65.0, 88.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBJester() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
AddItem( new JesterSuit( Utility.RandomHue() ) );
|
||||
AddItem( new JesterHat( Utility.RandomHue() ) );
|
||||
AddItem( new Shoes( Utility.RandomHue() ) );
|
||||
|
||||
if ( Female )
|
||||
{
|
||||
switch ( Utility.Random( 4 ) )
|
||||
{
|
||||
case 0: AddItem( new Skirt( Utility.RandomHue() ) ); break;
|
||||
case 1: AddItem( new Kilt( Utility.RandomHue() ) ); break;
|
||||
case 2: AddItem( new LongPants( Utility.RandomHue() ) ); break;
|
||||
case 3: AddItem( new ShortPants( Utility.RandomHue() ) ); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ( Utility.Random( 3 ) )
|
||||
{
|
||||
case 0: AddItem( new LongPants( Utility.RandomHue() ) ); break;
|
||||
case 1: AddItem( new ShortPants( Utility.RandomHue() ) ); break;
|
||||
case 2: AddItem( new Kilt( Utility.RandomHue() ) ); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Jester( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
40
Scripts/Mobiles/Towns/Vendors/Jeweler.cs
Normal file
40
Scripts/Mobiles/Towns/Vendors/Jeweler.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Jeweler : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Jeweler() : base( "the jeweler" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBJewel() );
|
||||
}
|
||||
|
||||
public Jeweler( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
40
Scripts/Mobiles/Towns/Vendors/LeatherWorker.cs
Normal file
40
Scripts/Mobiles/Towns/Vendors/LeatherWorker.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class LeatherWorker : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public LeatherWorker() : base( "the leather worker" )
|
||||
{
|
||||
}
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBLeatherArmor() );
|
||||
m_SBInfos.Add( new SBStuddedArmor() );
|
||||
m_SBInfos.Add( new SBLeatherWorker() );
|
||||
}
|
||||
public LeatherWorker( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
50
Scripts/Mobiles/Towns/Vendors/Lumberjack.cs
Normal file
50
Scripts/Mobiles/Towns/Vendors/Lumberjack.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Lumberjack : 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.CarpentryGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Lumberjack() : base( "the lumberjack" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBStavesWeapon() );
|
||||
m_SBInfos.Add( new SBCarpenter() );
|
||||
m_SBInfos.Add( new SBWoodenShields() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
if ( Utility.RandomBool() ){ AddItem( new Server.Items.Hatchet() ); }
|
||||
}
|
||||
|
||||
public Lumberjack( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
47
Scripts/Mobiles/Towns/Vendors/Mage.cs
Normal file
47
Scripts/Mobiles/Towns/Vendors/Mage.cs
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Mage : 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 Mage() : base( "the mage" )
|
||||
{
|
||||
SetSkill( SkillName.Concentration, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Magery, 64.0, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 60.0, 83.0 );
|
||||
SetSkill( SkillName.MagicResist, 65.0, 88.0 );
|
||||
SetSkill( SkillName.HandToHand, 36.0, 68.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBMage() );
|
||||
}
|
||||
|
||||
public Mage( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
40
Scripts/Mobiles/Towns/Vendors/Mapmaker.cs
Normal file
40
Scripts/Mobiles/Towns/Vendors/Mapmaker.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Mapmaker : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Mapmaker() : base( "the mapmaker" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBMapmaker() );
|
||||
}
|
||||
|
||||
public Mapmaker( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
47
Scripts/Mobiles/Towns/Vendors/Miller.cs
Normal file
47
Scripts/Mobiles/Towns/Vendors/Miller.cs
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Miller : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Miller() : base( "the miller" )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBMiller() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
AddItem( new Server.Items.FullApron() );
|
||||
}
|
||||
|
||||
public Miller( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
46
Scripts/Mobiles/Towns/Vendors/Miner.cs
Normal file
46
Scripts/Mobiles/Towns/Vendors/Miner.cs
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Miner : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Miner() : base( "the miner" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBMiner() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
AddItem( new Server.Items.Pickaxe() );
|
||||
}
|
||||
|
||||
public Miner( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
56
Scripts/Mobiles/Towns/Vendors/Minstrel.cs
Normal file
56
Scripts/Mobiles/Towns/Vendors/Minstrel.cs
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Minstrel : 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.BardsGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Minstrel() : base( "the minstrel" )
|
||||
{
|
||||
SetSkill( SkillName.Discordance, 64.0, 100.0 );
|
||||
SetSkill( SkillName.Musicianship, 64.0, 100.0 );
|
||||
SetSkill( SkillName.Peacemaking, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Provocation, 60.0, 83.0 );
|
||||
SetSkill( SkillName.Archery, 36.0, 68.0 );
|
||||
SetSkill( SkillName.Swords, 36.0, 68.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBBard() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
if ( Utility.RandomBool() )
|
||||
AddItem( new Server.Items.FeatheredHat( Utility.RandomHue() ) );
|
||||
}
|
||||
|
||||
public Minstrel( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
41
Scripts/Mobiles/Towns/Vendors/Provisioner.cs
Normal file
41
Scripts/Mobiles/Towns/Vendors/Provisioner.cs
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Provisioner : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Provisioner() : base( "the provisioner" )
|
||||
{
|
||||
SetSkill( SkillName.Tactics, 45.0, 68.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBProvisioner() );
|
||||
}
|
||||
|
||||
public Provisioner( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Scripts/Mobiles/Towns/Vendors/Ranger.cs
Normal file
65
Scripts/Mobiles/Towns/Vendors/Ranger.cs
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Ranger : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Ranger() : base( "the ranger" )
|
||||
{
|
||||
SetSkill( SkillName.Searching, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Hiding, 45.0, 68.0 );
|
||||
SetSkill( SkillName.Archery, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Tracking, 65.0, 88.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBRangedWeapon() );
|
||||
m_SBInfos.Add( new SBRanger() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
switch ( Utility.Random( 4 ) )
|
||||
{
|
||||
case 0: AddItem( new Bow() ); break;
|
||||
case 1: AddItem( new Bow() ); break;
|
||||
case 2: AddItem( new Crossbow() ); break;
|
||||
case 3: AddItem( new HeavyCrossbow() ); break;
|
||||
}
|
||||
|
||||
AddItem( new FeatheredHat( Utility.RandomNeutralHue() ) );
|
||||
AddItem( new LeatherArms() );
|
||||
AddItem( new LeatherChest() );
|
||||
AddItem( new LeatherGloves() );
|
||||
AddItem( new LeatherGorget() );
|
||||
AddItem( new LeatherLegs() );
|
||||
AddItem( new Boots() );
|
||||
}
|
||||
|
||||
public Ranger( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
43
Scripts/Mobiles/Towns/Vendors/Scribe.cs
Normal file
43
Scripts/Mobiles/Towns/Vendors/Scribe.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Scribe : 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 Scribe() : base( "the scribe" )
|
||||
{
|
||||
SetSkill( SkillName.Concentration, 60.0, 83.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBScribe() );
|
||||
}
|
||||
|
||||
public Scribe( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
52
Scripts/Mobiles/Towns/Vendors/Shipwright.cs
Normal file
52
Scripts/Mobiles/Towns/Vendors/Shipwright.cs
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Shipwright : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Shipwright() : base( "the shipwright" )
|
||||
{
|
||||
SetSkill( SkillName.Bludgeoning, 36.0, 68.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBShipwright() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
if ( Utility.RandomBool() )
|
||||
AddItem( new Server.Items.SmithHammer() );
|
||||
|
||||
if ( Utility.RandomBool() )
|
||||
AddItem( new Server.Items.TricorneHat( Utility.RandomHue() ) );
|
||||
}
|
||||
|
||||
public Shipwright( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
487
Scripts/Mobiles/Towns/Vendors/StableMaster.cs
Normal file
487
Scripts/Mobiles/Towns/Vendors/StableMaster.cs
Normal file
|
|
@ -0,0 +1,487 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.ContextMenus;
|
||||
using Server.Gumps;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class StableMaster : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public StableMaster() : base( "the stable master" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBStableMaster() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
AddItem( Utility.RandomBool() ? (Item)new QuarterStaff() : (Item)new ShepherdsCrook() );
|
||||
}
|
||||
|
||||
private class StableEntry : ContextMenuEntry
|
||||
{
|
||||
private StableMaster m_Trainer;
|
||||
private Mobile m_From;
|
||||
|
||||
public StableEntry( StableMaster trainer, Mobile from ) : base( 6126, 12 )
|
||||
{
|
||||
m_Trainer = trainer;
|
||||
m_From = from;
|
||||
}
|
||||
|
||||
public override void OnClick()
|
||||
{
|
||||
m_Trainer.BeginStable( m_From );
|
||||
}
|
||||
}
|
||||
|
||||
private class ClaimListGump : Gump
|
||||
{
|
||||
private StableMaster m_Trainer;
|
||||
private Mobile m_From;
|
||||
private List<BaseCreature> m_List;
|
||||
|
||||
public ClaimListGump( StableMaster trainer, Mobile from, List<BaseCreature> list ) : base( 50, 50 )
|
||||
{
|
||||
m_Trainer = trainer;
|
||||
m_From = from;
|
||||
m_List = list;
|
||||
|
||||
from.CloseGump( typeof( ClaimListGump ) );
|
||||
|
||||
AddPage( 0 );
|
||||
|
||||
AddBackground( 0, 0, 325, 50 + (list.Count * 20), 9250 );
|
||||
AddAlphaRegion( 5, 5, 315, 40 + (list.Count * 20) );
|
||||
|
||||
AddHtml( 15, 15, 275, 20, "<BASEFONT COLOR=#FFFFFF>Select a pet to retrieve from the stables:</BASEFONT>", false, false );
|
||||
|
||||
for ( int i = 0; i < list.Count; ++i )
|
||||
{
|
||||
BaseCreature pet = list[i];
|
||||
|
||||
if ( pet == null || pet.Deleted )
|
||||
continue;
|
||||
|
||||
AddButton( 15, 39 + (i * 20), 10006, 10006, i + 1, GumpButtonType.Reply, 0 );
|
||||
AddHtml( 32, 35 + (i * 20), 275, 18, String.Format( "<BASEFONT COLOR=#C0C0EE>{0}</BASEFONT>", pet.Name ), false, false );
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnResponse( NetState sender, RelayInfo info )
|
||||
{
|
||||
int index = info.ButtonID - 1;
|
||||
|
||||
if ( index >= 0 && index < m_List.Count )
|
||||
m_Trainer.EndClaimList( m_From, m_List[index] );
|
||||
}
|
||||
}
|
||||
|
||||
private class ClaimAllEntry : ContextMenuEntry
|
||||
{
|
||||
private StableMaster m_Trainer;
|
||||
private Mobile m_From;
|
||||
|
||||
public ClaimAllEntry( StableMaster trainer, Mobile from ) : base( 6127, 12 )
|
||||
{
|
||||
m_Trainer = trainer;
|
||||
m_From = from;
|
||||
}
|
||||
|
||||
public override void OnClick()
|
||||
{
|
||||
m_Trainer.Claim( m_From );
|
||||
}
|
||||
}
|
||||
|
||||
public override void AddCustomContextEntries( Mobile from, List<ContextMenuEntry> list )
|
||||
{
|
||||
if ( from.Alive )
|
||||
{
|
||||
list.Add( new StableEntry( this, from ) );
|
||||
|
||||
if ( from.Stabled.Count > 0 )
|
||||
list.Add( new ClaimAllEntry( this, from ) );
|
||||
}
|
||||
|
||||
base.AddCustomContextEntries( from, list );
|
||||
}
|
||||
|
||||
public static int GetMaxStabled( Mobile from )
|
||||
{
|
||||
return 5;
|
||||
}
|
||||
|
||||
private class StableTarget : Target
|
||||
{
|
||||
private StableMaster m_Trainer;
|
||||
|
||||
public StableTarget( StableMaster trainer ) : base( 12, false, TargetFlags.None )
|
||||
{
|
||||
m_Trainer = trainer;
|
||||
}
|
||||
|
||||
protected override void OnTarget( Mobile from, object targeted )
|
||||
{
|
||||
if ( targeted is BaseCreature )
|
||||
m_Trainer.EndStable( from, (BaseCreature)targeted );
|
||||
else if ( targeted == from )
|
||||
m_Trainer.SayTo( from, 502672 ); // HA HA HA! Sorry, I am not an inn.
|
||||
else
|
||||
m_Trainer.SayTo( from, 1048053 ); // You can't stable that!
|
||||
}
|
||||
}
|
||||
|
||||
private void CloseClaimList( Mobile from )
|
||||
{
|
||||
from.CloseGump( typeof( ClaimListGump ) );
|
||||
}
|
||||
|
||||
public void BeginClaimList( Mobile from )
|
||||
{
|
||||
if ( Deleted || !from.CheckAlive() )
|
||||
return;
|
||||
|
||||
List<BaseCreature> list = new List<BaseCreature>();
|
||||
|
||||
for ( int i = 0; i < from.Stabled.Count; ++i )
|
||||
{
|
||||
BaseCreature pet = from.Stabled[i] as BaseCreature;
|
||||
|
||||
if ( pet == null || pet.Deleted )
|
||||
{
|
||||
pet.IsStabled = false;
|
||||
from.Stabled.RemoveAt( i );
|
||||
--i;
|
||||
continue;
|
||||
}
|
||||
|
||||
list.Add( pet );
|
||||
}
|
||||
|
||||
if ( list.Count > 0 )
|
||||
from.SendGump( new ClaimListGump( this, from, list ) );
|
||||
else
|
||||
SayTo( from, 502671 ); // But I have no animals stabled with me at the moment!
|
||||
}
|
||||
|
||||
public void EndClaimList( Mobile from, BaseCreature pet )
|
||||
{
|
||||
if ( pet == null || pet.Deleted || from.Map != this.Map || !from.Stabled.Contains( pet ) || !from.CheckAlive() )
|
||||
return;
|
||||
|
||||
if ( !from.InRange( this, 14 ) )
|
||||
{
|
||||
from.SendLocalizedMessage( 500446 ); // That is too far away.
|
||||
return;
|
||||
}
|
||||
|
||||
if ( CanClaim( from, pet ) )
|
||||
{
|
||||
DoClaim( from, pet );
|
||||
|
||||
from.Stabled.Remove( pet );
|
||||
}
|
||||
else
|
||||
{
|
||||
SayTo( from, 1049612, pet.Name ); // ~1_NAME~ remained in the stables because you have too many followers.
|
||||
}
|
||||
}
|
||||
|
||||
public void BeginStable( Mobile from )
|
||||
{
|
||||
if ( Deleted || !from.CheckAlive() )
|
||||
return;
|
||||
|
||||
// Which animal wouldst thou like to stable here?
|
||||
from.SendLocalizedMessage(1042558);
|
||||
from.Target = new StableTarget( this );
|
||||
}
|
||||
|
||||
public void EndStable( Mobile from, BaseCreature pet )
|
||||
{
|
||||
if ( Deleted || !from.CheckAlive() )
|
||||
return;
|
||||
|
||||
if ( pet.Body.IsHuman )
|
||||
{
|
||||
SayTo( from, 502672 ); // HA HA HA! Sorry, I am not an inn.
|
||||
}
|
||||
else if ( !pet.Controlled )
|
||||
{
|
||||
SayTo( from, 1048053 ); // You can't stable that!
|
||||
}
|
||||
else if ( pet.ControlMaster != from )
|
||||
{
|
||||
SayTo( from, 1042562 ); // You do not own that pet!
|
||||
}
|
||||
else if ( pet.IsDeadPet )
|
||||
{
|
||||
SayTo( from, 1049668 ); // Living pets only, please.
|
||||
}
|
||||
else if ( pet.Summoned )
|
||||
{
|
||||
SayTo( from, 502673 ); // I can not stable summoned creatures.
|
||||
}
|
||||
else if ( (pet is PackLlama || pet is PackHorse) && (pet.Backpack != null && pet.Backpack.Items.Count > 0) )
|
||||
{
|
||||
SayTo( from, 1042563 ); // You need to unload your pet.
|
||||
}
|
||||
else if ( pet.Combatant != null && pet.InRange( pet.Combatant, 12 ) && pet.Map == pet.Combatant.Map )
|
||||
{
|
||||
SayTo( from, 1042564 ); // I'm sorry. Your pet seems to be busy.
|
||||
}
|
||||
else if ( from.Stabled.Count >= GetMaxStabled( from ) )
|
||||
{
|
||||
SayTo( from, 1042565 ); // You have too many pets in the stables!
|
||||
}
|
||||
else
|
||||
{
|
||||
pet.ControlTarget = null;
|
||||
pet.ControlOrder = OrderType.Stay;
|
||||
pet.Internalize();
|
||||
|
||||
pet.SetControlMaster( null );
|
||||
pet.SummonMaster = null;
|
||||
|
||||
pet.IsStabled = true;
|
||||
|
||||
from.Stabled.Add( pet );
|
||||
|
||||
SayTo( from, 502679 ); // Very well, thy pet is stabled. Thou mayst recover it by saying 'claim' to me. In one real world week, I shall sell it off if it is not claimed!
|
||||
}
|
||||
}
|
||||
|
||||
public void Claim( Mobile from )
|
||||
{
|
||||
Claim( from, null );
|
||||
}
|
||||
|
||||
public void Claim( Mobile from, string petName )
|
||||
{
|
||||
if ( Deleted || !from.CheckAlive() )
|
||||
return;
|
||||
|
||||
bool claimed = false;
|
||||
int stabled = 0;
|
||||
|
||||
bool claimByName = ( petName != null );
|
||||
|
||||
for ( int i = 0; i < from.Stabled.Count; ++i )
|
||||
{
|
||||
BaseCreature pet = from.Stabled[i] as BaseCreature;
|
||||
|
||||
if ( pet == null || pet.Deleted )
|
||||
{
|
||||
pet.IsStabled = false;
|
||||
from.Stabled.RemoveAt( i );
|
||||
--i;
|
||||
continue;
|
||||
}
|
||||
|
||||
++stabled;
|
||||
|
||||
if ( claimByName && !Insensitive.Equals( pet.Name, petName ) )
|
||||
continue;
|
||||
|
||||
if ( CanClaim( from, pet ) )
|
||||
{
|
||||
DoClaim( from, pet );
|
||||
|
||||
from.Stabled.RemoveAt( i );
|
||||
--i;
|
||||
|
||||
claimed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
SayTo( from, 1049612, pet.Name ); // ~1_NAME~ remained in the stables because you have too many followers.
|
||||
}
|
||||
}
|
||||
|
||||
if ( claimed )
|
||||
SayTo( from, 1042559 ); // Here you go... and good day to you!
|
||||
else if ( stabled == 0 )
|
||||
SayTo( from, 502671 ); // But I have no animals stabled with me at the moment!
|
||||
else if ( claimByName )
|
||||
BeginClaimList( from );
|
||||
}
|
||||
|
||||
public bool CanClaim( Mobile from, BaseCreature pet )
|
||||
{
|
||||
return ((from.Followers + pet.ControlSlots) <= from.FollowersMax);
|
||||
}
|
||||
|
||||
private void DoClaim( Mobile from, BaseCreature pet )
|
||||
{
|
||||
pet.SetControlMaster( from );
|
||||
|
||||
if ( pet.Summoned )
|
||||
pet.SummonMaster = from;
|
||||
|
||||
pet.ControlTarget = from;
|
||||
pet.ControlOrder = OrderType.Follow;
|
||||
|
||||
pet.MoveToWorld( from.Location, from.Map );
|
||||
|
||||
pet.IsStabled = false;
|
||||
}
|
||||
|
||||
public override bool HandlesOnSpeech( Mobile from )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void OnSpeech( SpeechEventArgs e )
|
||||
{
|
||||
if ( !e.Handled && e.HasKeyword( 0x0008 ) ) // *stable*
|
||||
{
|
||||
e.Handled = true;
|
||||
|
||||
CloseClaimList( e.Mobile );
|
||||
BeginStable( e.Mobile );
|
||||
}
|
||||
else if ( !e.Handled && e.HasKeyword( 0x0009 ) ) // *claim*
|
||||
{
|
||||
e.Handled = true;
|
||||
|
||||
CloseClaimList( e.Mobile );
|
||||
|
||||
int index = e.Speech.IndexOf( ' ' );
|
||||
|
||||
if ( index != -1 )
|
||||
Claim( e.Mobile, e.Speech.Substring( index ).Trim() );
|
||||
else
|
||||
Claim( e.Mobile );
|
||||
}
|
||||
else
|
||||
{
|
||||
base.OnSpeech( e );
|
||||
}
|
||||
}
|
||||
|
||||
public static void DismountPlayer( Mobile m )
|
||||
{
|
||||
CleanClaimList( m );
|
||||
|
||||
BaseCreature horse = (BaseCreature)(m.Mount);
|
||||
Server.Mobiles.BaseMount.Dismount( m );
|
||||
|
||||
horse.ControlTarget = null;
|
||||
horse.Internalize();
|
||||
horse.SetControlMaster( null );
|
||||
horse.SummonMaster = null;
|
||||
horse.IsStabled = true;
|
||||
horse.Language = "mount";
|
||||
|
||||
m.Stabled.Add( horse );
|
||||
}
|
||||
|
||||
public static void CleanClaimList( Mobile from )
|
||||
{
|
||||
List<BaseCreature> list = new List<BaseCreature>();
|
||||
|
||||
for ( int i = 0; i < from.Stabled.Count; ++i )
|
||||
{
|
||||
BaseCreature horse = from.Stabled[i] as BaseCreature;
|
||||
|
||||
if ( horse == null || horse.Deleted )
|
||||
{
|
||||
horse.IsStabled = false;
|
||||
from.Stabled.RemoveAt( i );
|
||||
--i;
|
||||
continue;
|
||||
}
|
||||
else { horse.Language = null; }
|
||||
}
|
||||
}
|
||||
|
||||
public static void GetLastMounted( Mobile from )
|
||||
{
|
||||
List<BaseCreature> list = new List<BaseCreature>();
|
||||
|
||||
BaseCreature bc = null;
|
||||
int stabled = 0;
|
||||
|
||||
for ( int i = 0; i < from.Stabled.Count; ++i )
|
||||
{
|
||||
BaseCreature horse = from.Stabled[i] as BaseCreature;
|
||||
|
||||
if ( horse == null || horse.Deleted )
|
||||
{
|
||||
horse.IsStabled = false;
|
||||
from.Stabled.RemoveAt( i );
|
||||
--i;
|
||||
continue;
|
||||
}
|
||||
else if ( horse.Language == "mount" )
|
||||
{
|
||||
bc = horse;
|
||||
}
|
||||
}
|
||||
|
||||
for ( int i = 0; i < from.Stabled.Count; ++i )
|
||||
{
|
||||
BaseCreature horse = from.Stabled[i] as BaseCreature;
|
||||
|
||||
++stabled;
|
||||
|
||||
if ( CanGetLastMounted( from, horse ) && horse is BaseMount && horse == bc )
|
||||
{
|
||||
horse.SetControlMaster( from );
|
||||
horse.ControlTarget = from;
|
||||
horse.MoveToWorld( from.Location, from.Map );
|
||||
horse.IsStabled = false;
|
||||
|
||||
from.Stabled.RemoveAt( i );
|
||||
--i;
|
||||
|
||||
((Mobile)horse).Language = null;
|
||||
((BaseMount)horse).Rider = from;
|
||||
}
|
||||
else if ( horse == bc )
|
||||
{
|
||||
((Mobile)horse).Language = null;
|
||||
}
|
||||
}
|
||||
|
||||
Server.Mobiles.StableMaster.CleanClaimList( from );
|
||||
}
|
||||
|
||||
public static bool CanGetLastMounted( Mobile from, BaseCreature pet )
|
||||
{
|
||||
return ((from.Followers + pet.ControlSlots) <= from.FollowersMax);
|
||||
}
|
||||
|
||||
public StableMaster( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
43
Scripts/Mobiles/Towns/Vendors/Tailor.cs
Normal file
43
Scripts/Mobiles/Towns/Vendors/Tailor.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Tailor : 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.TailorsGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Tailor() : base( "the tailor" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBTailor() );
|
||||
m_SBInfos.Add( new SBWeaver() );
|
||||
}
|
||||
|
||||
public Tailor( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
40
Scripts/Mobiles/Towns/Vendors/Tanner.cs
Normal file
40
Scripts/Mobiles/Towns/Vendors/Tanner.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Tanner : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Tanner() : base( "the tanner" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBTanner() );
|
||||
}
|
||||
|
||||
public Tanner( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
47
Scripts/Mobiles/Towns/Vendors/TavernKeeper.cs
Normal file
47
Scripts/Mobiles/Towns/Vendors/TavernKeeper.cs
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class TavernKeeper : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public TavernKeeper() : base( "the tavern keeper" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBTavernKeeper() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
AddItem( new Server.Items.HalfApron() );
|
||||
}
|
||||
|
||||
public TavernKeeper( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
54
Scripts/Mobiles/Towns/Vendors/Thief.cs
Normal file
54
Scripts/Mobiles/Towns/Vendors/Thief.cs
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Thief : 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.ThievesGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Thief() : base( "the thief" )
|
||||
{
|
||||
SetSkill( SkillName.Searching, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Hiding, 45.0, 68.0 );
|
||||
SetSkill( SkillName.Lockpicking, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Stealing, 65.0, 88.0 );
|
||||
SetSkill( SkillName.Stealth, 65.0, 88.0 );
|
||||
SetSkill( SkillName.RemoveTrap, 65.0, 88.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBThief() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
AddItem( new Server.Items.Dagger() );
|
||||
}
|
||||
|
||||
public Thief( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
44
Scripts/Mobiles/Towns/Vendors/Tinker.cs
Normal file
44
Scripts/Mobiles/Towns/Vendors/Tinker.cs
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Tinker : 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.TinkersGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Tinker() : base( "the tinker" )
|
||||
{
|
||||
SetSkill( SkillName.Lockpicking, 60.0, 83.0 );
|
||||
SetSkill( SkillName.RemoveTrap, 75.0, 98.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBTinker() );
|
||||
}
|
||||
|
||||
public Tinker( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
48
Scripts/Mobiles/Towns/Vendors/Waiter.cs
Normal file
48
Scripts/Mobiles/Towns/Vendors/Waiter.cs
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Waiter : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
[Constructable]
|
||||
public Waiter() : base( "the waiter" )
|
||||
{
|
||||
SetSkill( SkillName.Discordance, 36.0, 68.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBWaiter() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
AddItem( new Server.Items.HalfApron() );
|
||||
}
|
||||
|
||||
public Waiter( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
53
Scripts/Mobiles/Towns/Vendors/Weaponsmith.cs
Normal file
53
Scripts/Mobiles/Towns/Vendors/Weaponsmith.cs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Weaponsmith : 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.WarriorsGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Weaponsmith() : base( "the weaponsmith" )
|
||||
{
|
||||
SetSkill( SkillName.Fencing, 45.0, 68.0 );
|
||||
SetSkill( SkillName.Bludgeoning, 45.0, 68.0 );
|
||||
SetSkill( SkillName.Swords, 45.0, 68.0 );
|
||||
SetSkill( SkillName.Tactics, 36.0, 68.0 );
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBWeaponSmith() );
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
base.InitOutfit();
|
||||
|
||||
AddItem( new Server.Items.HalfApron() );
|
||||
}
|
||||
|
||||
public Weaponsmith( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Scripts/Mobiles/Towns/Vendors/Weaver.cs
Normal file
42
Scripts/Mobiles/Towns/Vendors/Weaver.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Weaver : 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.TailorsGuild; } }
|
||||
|
||||
[Constructable]
|
||||
public Weaver() : base( "the weaver" )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new SBWeaver() );
|
||||
}
|
||||
|
||||
public Weaver( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue