#W# Initial Commit: Avatars Conquest

This commit is contained in:
WarrentyExpired 2026-07-03 20:19:48 -04:00
commit 8eae46895e
7512 changed files with 416187 additions and 0 deletions

View file

@ -0,0 +1,723 @@
using System;
using Server;
using System.Collections;
using System.Collections.Generic;
using Server.Network;
using Server.Items;
using Server.Mobiles;
namespace Server.Items
{
public class Actions : Item
{
private int m_Acts;
[CommandProperty( AccessLevel.GameMaster )]
public int Acts{ get{ return m_Acts; } set{ m_Acts = value; } }
[Constructable]
public Actions() : base( 0x8AB )
{
Movable = false;
}
public Actions( Serial serial ) : base( serial )
{
}
public bool facingNS( Mobile m )
{
if ( this.X == m.X )
return true;
return false;
}
public override void OnDoubleClick( Mobile from )
{
if ( !(from is BaseVendor ) )
return;
bool PlayRegular = true;
bool PlayRepetitive = Utility.RandomBool();
from.Direction = from.GetDirectionTo( GetWorldLocation() );
if ( from is LeatherWorker || from is Tanner )
{
if ( ItemID == 0x1069 || ItemID == 0x106A || ItemID == 0x107A || ItemID == 0x107B )
{
if ( ItemID == 0x1069 ){ ItemID = 0x106A; }
else if ( ItemID == 0x106A ){ ItemID = 0x1069; }
else if ( ItemID == 0x107A ){ ItemID = 0x107B; }
else if ( ItemID == 0x107B ){ ItemID = 0x107A; }
Name = "stretched hide";
from.Animate( 230, 5, 1, true, false, 0 );
if ( PlayRepetitive )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else
{
Name = "leather";
if ( m_Acts == 1 )
{
ItemID = Utility.RandomList( 0x13C5, 0x13C6, 0x13C7, 0x13CB, 0x13CC, 0x13CD, 0x13CE, 0x13D2, 0x13D3, 0x1DB9, 0x1DBA, 0x13D4, 0x13D5, 0x13D6, 0x13DA, 0x13DB, 0x13DC, 0x13DD, 0x13E1, 0x13E2 );
from.PlaySound( 0x248 );
m_Acts = 0;
from.Animate( 230, 5, 1, true, false, 0 );
}
else
{
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
ItemID = Utility.RandomList( 0x1067, 0x1068, 0x1081, 0x1082 );
m_Acts = 1;
from.Animate( 230, 5, 1, true, false, 0 );
}
}
}
else if ( from is Butcher )
{
EquipVendor( from, "cleaver" );
Name = "carcass";
BaseWeapon weapon = ( BaseWeapon )( from.FindItemOnLayer( Layer.OneHanded ) );
weapon.PlaySwingAnimation( from );
new Blood().MoveToWorld( Location, Map );
from.PlaySound( 0x133 );
}
else if ( from is Gypsy )
{
Name = "cards";
from.PlaySound( 0x5FA );
ItemID++;
if ( ItemID > 6499 )
ItemID = 6494;
}
else if ( from is Alchemist )
{
if ( ItemID >= 0x16EA && ItemID <= 0x16F1 )
{
Name = "cauldron";
Hue = Utility.RandomSpeechHue();
from.PlaySound( Utility.RandomList( 0x020, 0x025, 0x04E ) );
from.Animate( 230, 5, 1, true, false, 0 );
}
else if ( ItemID == 0x12AD )
{
Name = "bottle";
if ( m_Acts == 1 )
{
Hue = Utility.RandomSpeechHue();
from.PlaySound( 0x240 );
from.Animate( 230, 5, 1, true, false, 0 );
m_Acts = 0;
}
else
{
from.PlaySound( 0x242 );
m_Acts = 1;
}
}
}
else if ( from is Bowyer )
{
EquipVendor( from, "none" );
if ( m_Acts == 1 )
{
m_Acts = 0;
switch ( Utility.Random( 4 ) )
{
case 0: Name = "arrows"; ItemID = Utility.RandomList( 0xF40, 0xF41 ); break;
case 1: Name = "bolts"; ItemID = Utility.RandomList( 0x1BFC, 0x1BFD ); break;
case 2: Name = "crossbow"; ItemID = Utility.RandomList( 0x13FC, 0x13FD, 0xF4F, 0xF50 ); break;
case 3: Name = "bow"; ItemID = Utility.RandomList( 0x13B1, 0x13B2 ); break;
}
from.PlaySound( 0x55 );
from.Animate( 230, 5, 1, true, false, 0 );
}
else
{
m_Acts = 1;
Name = "wood";
ItemID = Utility.RandomList( 0x1BD8, 0x1BD9, 0x1BDB, 0x1BDC );
from.Animate( 230, 5, 1, true, false, 0 );
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
}
else if ( from is Fisherman )
{
if ( ItemID == 0x1797 )
{
EquipVendor( from, "pole" );
Name = "water";
from.Animate( 12, 5, 1, true, false, 0 );
Effects.SendLocationEffect( this.Location, this.Map, 0x352D, 16, 4 );
Effects.PlaySound( this.Location, this.Map, 0x364 );
((BaseVendor)from).m_NextAction = (DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 10, 20 ) ) );
}
else if ( ItemID == 0x9CC || ItemID == 0x9CD || ItemID == 0x1E15 || ItemID == 0x1E16 || ItemID == 0x1E17 || ItemID == 0x1E18 || ItemID == 0x97A )
{
EquipVendor( from, "cleaver" );
Name = "fish";
BaseWeapon weapon = ( BaseWeapon )( from.FindItemOnLayer( Layer.OneHanded ) );
if ( m_Acts == 0 )
{
m_Acts++;
if ( facingNS( from ) )
ItemID = 0x9CC;
else
ItemID = 0x9CD;
from.Animate( 230, 5, 1, true, false, 0 );
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else if ( m_Acts == 1 )
{
m_Acts++;
if ( facingNS( from ) )
ItemID = 0x1E15;
else
ItemID = 0x1E16;
weapon.PlaySwingAnimation( from );
new Blood().MoveToWorld( Location, Map );
from.PlaySound( 0x133 );
}
else if ( m_Acts == 2 )
{
m_Acts++;
if ( facingNS( from ) )
ItemID = 0x1E17;
else
ItemID = 0x1E18;
weapon.PlaySwingAnimation( from );
new Blood().MoveToWorld( Location, Map );
from.PlaySound( 0x133 );
}
else
{
m_Acts = 0;
ItemID = 0x97A;
weapon.PlaySwingAnimation( from );
from.PlaySound( 0x133 );
}
}
}
else if ( from is Cook )
{
if ( ItemID == 0x1305 || ItemID == 0x130B || ItemID == 0x12FF || ItemID == 0x12F3 )
{
Name = "skillet";
if ( m_Acts == 1 )
{
m_Acts = 0;
if ( ItemID == 0x1305 )
ItemID = 0x130B;
else
ItemID = 0x12FF;
from.Animate( 230, 5, 1, true, false, 0 );
from.PlaySound( 0x345 );
}
else
{
m_Acts = 1;
ItemID = Utility.RandomList( 0x12F3, 0x1305 );
from.Animate( 230, 5, 1, true, false, 0 );
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
}
else
{
if ( m_Acts == 1 )
{
m_Acts = 0;
Name = "bowl of food";
if ( ItemID == 0x15F8 )
ItemID = Utility.RandomList( 0x15F9, 0x15FA, 0x15FB, 0x15FC );
else
ItemID = Utility.RandomList( 0x15FE, 0x15FF, 0x1600, 0x1601, 0x1602 );
from.Animate( 230, 5, 1, true, false, 0 );
if ( PlayRepetitive )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else
{
m_Acts = 1;
Name = "bowl";
ItemID = Utility.RandomList( 0x15F8, 0x15FD );
from.Animate( 230, 5, 1, true, false, 0 );
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
}
}
else if ( from is Herbalist )
{
Hue = 0x49E;
Name = "pot";
if ( m_Acts == 0 )
{
ItemID = 0x18B7;
from.Animate( 230, 5, 1, true, false, 0 );
m_Acts++;
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else if ( m_Acts == 1 )
{
from.Animate( 230, 5, 1, true, false, 0 );
m_Acts++;
from.PlaySound( 0x025 );
ItemID = 0x18C8;
}
else if ( m_Acts == 2 )
{
from.Animate( 230, 5, 1, true, false, 0 );
m_Acts++;
ItemID = 0x18C9;
if ( PlayRepetitive )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else if ( m_Acts == 3 )
{
from.Animate( 230, 5, 1, true, false, 0 );
m_Acts++;
ItemID = 0x18CA;
if ( PlayRepetitive )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else if ( m_Acts == 4 )
{
from.Animate( 230, 5, 1, true, false, 0 );
m_Acts++;
ItemID = 0x18CB;
if ( PlayRepetitive )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else
{
Name = "potted plant";
ItemID = Utility.RandomMinMax( 0x18B8, 0x18C7 );
m_Acts = 0;
}
}
else if ( from is Tailor || from is Weaver )
{
Name = "cloth";
if ( m_Acts == 0 )
{
ItemID = Utility.RandomMinMax( 0x175D, 0x1768 );
Hue = Utility.RandomHue();
from.Animate( 230, 5, 1, true, false, 0 );
m_Acts = 1;
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else
{
Name = "clothing";
ItemID = Utility.RandomList( 0x1517, 0x1518, 0x1EFD, 0x1EFE, 0x1F9F, 0x1FA0, 0x1537, 0x1538, 0x152F, 0x1531, 0x1516, 0x152E, 0x1713, 0x1715, 0x1718, 0x171A, 0x171C );
from.PlaySound( 0x248 );
from.Animate( 230, 5, 1, true, false, 0 );
m_Acts = 0;
}
}
else if ( from is Tinker )
{
Name = "clock";
if ( ItemID == 0x104B || ItemID == 0x104C )
{
ItemID = Utility.RandomList( 0xC1F, 0x104D, 0x104E, 0x104F, 0x1050 );
from.Animate( 230, 5, 1, true, false, 0 );
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else
{
ItemID = Utility.RandomList( 0x104B, 0x104C );
from.PlaySound( 0x241 );
from.Animate( 230, 5, 1, true, false, 0 );
}
}
else if ( from is Lumberjack || from is Carpenter )
{
if ( ItemID == 0x1264 || ItemID == 0x126A || ItemID == 0x1BE1 || ItemID == 0x1BDE )
{
EquipVendor( from, "axe" );
if ( m_Acts == 0 )
{
m_Acts = 1;
Name = "log";
from.Animate( 230, 5, 1, true, false, 0 );
ItemID = 0x1264;
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else if ( m_Acts == 1 )
{
m_Acts = 2;
Name = "logs";
BaseWeapon weapon = ( BaseWeapon )( from.FindItemOnLayer( Layer.TwoHanded ) );
weapon.PlaySwingAnimation( from );
from.PlaySound( 0x13E );
ItemID = Utility.RandomList( 0x1BDE, 0x1BE1 );
}
else
{
m_Acts = 0;
Name = "boards";
BaseWeapon weapon = ( BaseWeapon )( from.FindItemOnLayer( Layer.TwoHanded ) );
weapon.PlaySwingAnimation( from );
from.PlaySound( 0x13E );
ItemID = 0x126A;
}
}
else
{
EquipVendor( from, "hammer" );
Name = "furniture";
if ( m_Acts == 0 )
{
Name = "wood";
m_Acts = 1;
from.Animate( 230, 5, 1, true, false, 0 );
ItemID = Utility.RandomList( 0x1BD8, 0x1BD9, 0x1BDB, 0x1BDC );
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else if ( m_Acts == 1 )
{
from.PlaySound( 0x23D );
m_Acts = 2;
if ( facingNS( from ) )
ItemID = Utility.RandomList( 0x1E6F, 0x1E71, 0x1E76, 0x1E80 );
else
ItemID = Utility.RandomList( 0x1E78, 0x1E7A, 0x1E7E, 0x1E81 );
BaseWeapon weapon = ( BaseWeapon )( from.FindItemOnLayer( Layer.OneHanded ) );
weapon.PlaySwingAnimation( from );
}
else
{
from.PlaySound( 0x23D );
m_Acts = 0;
switch ( ItemID )
{
case 0x1E6F: Name = "chair"; ItemID = 0x0B4F; break;
case 0x1E71: Name = "drawers"; ItemID = 0x0A2C; break;
case 0x1E76: Name = "shelf"; ItemID = 0x0A9D; break;
case 0x1E80: Name = "crate"; ItemID = 0x1FFF; break;
case 0x1E78: Name = "chair"; ItemID = 0x0B4E; break;
case 0x1E7A: Name = "drawers"; ItemID = 0x0A34; break;
case 0x1E7E: Name = "shelf"; ItemID = 0x0A9E; break;
case 0x1E81: Name = "crate"; ItemID = 0x0E7E; break;
}
BaseWeapon weapon = ( BaseWeapon )( from.FindItemOnLayer( Layer.OneHanded ) );
weapon.PlaySwingAnimation( from );
}
}
}
else if ( from is Baker )
{
if ( m_Acts == 0 )
{
Name = "flour";
m_Acts = 1;
from.Animate( 230, 5, 1, true, false, 0 );
ItemID = Utility.RandomList( 0x1039, 0x1045 );
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else if ( m_Acts == 1 )
{
Name = "flour";
m_Acts = 2;
from.Animate( 230, 5, 1, true, false, 0 );
ItemID = Utility.RandomList( 0x103A, 0x1046 );
if ( PlayRepetitive )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else if ( m_Acts == 2 )
{
Name = "dough";
m_Acts = 3;
from.Animate( 230, 5, 1, true, false, 0 );
ItemID = 0xA1E;
from.PlaySound( 0x242 );
}
else if ( m_Acts == 3 )
{
if ( Utility.RandomBool() )
{
Name = "dough";
ItemID = 0x103D;
}
else
{
Name = "cookie mix";
ItemID = 0x103F;
}
m_Acts = 4;
from.Animate( 230, 5, 1, true, false, 0 );
if ( PlayRepetitive )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else
{
m_Acts = 0;
if ( ItemID == 0x103D ){ Name = "bread"; ItemID = Utility.RandomList( 0x103C, 0x98C ); }
else { Name = "cookies"; ItemID = Utility.RandomList( 0x160B, 0x160C ); }
from.Animate( 230, 5, 1, true, false, 0 );
if ( PlayRepetitive )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
}
else if ( from is Miner || from is Blacksmith || from is Weaponsmith || from is IronWorker || from is Armorer )
{
if ( ItemID == 0x1775 || ItemID == 0x1776 || ItemID == 0x1777 || ItemID == 0x1778 || ItemID == 0x19B9 )
{
EquipVendor( from, "pick" );
Name = "rock";
BaseWeapon weapon = ( BaseWeapon )( from.FindItemOnLayer( Layer.OneHanded ) );
weapon.PlaySwingAnimation( from );
from.PlaySound( Utility.RandomList( 0x125, 0x126 ) );
if ( m_Acts == 0 ){ ItemID = 0x1776; m_Acts++; }
else if ( m_Acts == 1 ){ ItemID = 0x1775; m_Acts++; }
else if ( m_Acts == 2 ){ ItemID = 0x1777; m_Acts++; }
else if ( m_Acts == 3 ){ ItemID = 0x1778; m_Acts++; }
else { ItemID = 0x19B9; m_Acts = 0; }
}
else if ( ItemID == 0x19B8 || ( ItemID >= 0x1BEF && ItemID <= 0x1BF4 ) )
{
EquipVendor( from, "none" );
if ( ItemID == 0x19B8 )
{
if ( facingNS( from ) )
ItemID = Utility.RandomMinMax( 0x1BF2, 0x1BF4 );
else
ItemID = Utility.RandomMinMax( 0x1BEF, 0x1BF1 );
Name = "ingots";
from.Animate( 230, 5, 1, true, false, 0 );
from.PlaySound( Utility.RandomList( 0x02B, 0x047, 0x208 ) );
}
else
{
ItemID = 0x19B8;
Name = "ore";
from.Animate( 230, 5, 1, true, false, 0 );
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
}
else
{
EquipVendor( from, "hammer" );
Name = "anvil";
if ( m_Acts == 0 )
{
m_Acts = 1;
if ( Utility.RandomBool() )
m_Acts = 2;
from.Animate( 230, 5, 1, true, false, 0 );
if ( facingNS( from ) )
ItemID = 0x2268;
else
ItemID = 0x2252;
if ( PlayRegular )
from.PlaySound( Utility.RandomList( 0x059, 0x057 ) );
}
else if ( m_Acts == 1 )
{
from.PlaySound( 0x2A );
m_Acts = 2;
BaseWeapon weapon = ( BaseWeapon )( from.FindItemOnLayer( Layer.OneHanded ) );
weapon.PlaySwingAnimation( from );
}
else
{
from.PlaySound( 0x2A );
m_Acts = 0;
if ( from is Weaponsmith )
{
if ( facingNS( from ) )
ItemID = Utility.RandomMinMax( 0x2272, 0x227D );
else
ItemID = Utility.RandomMinMax( 0x225C, 0x2267 );
}
else if ( from is Armorer )
{
if ( facingNS( from ) )
ItemID = Utility.RandomMinMax( 0x2269, 0x2271 );
else
ItemID = Utility.RandomMinMax( 0x2253, 0x225B );
}
else
{
if ( facingNS( from ) )
ItemID = Utility.RandomMinMax( 0x2269, 0x227D );
else
ItemID = Utility.RandomMinMax( 0x2253, 0x2267 );
}
BaseWeapon weapon = ( BaseWeapon )( from.FindItemOnLayer( Layer.OneHanded ) );
weapon.PlaySwingAnimation( from );
}
}
}
else if ( from is Bard || from is Minstrel )
{
if ( m_Acts == 0 )
{
SetInstrument( from, this );
m_Acts = 1;
}
else
{
m_Acts = 0;
if ( this.Name == "flute" ){ from.PlaySound( 0x502 ); }
else if ( this.Name == "harp" ){ from.PlaySound( 0x45 ); }
else if ( this.Name == "drum" ){ from.PlaySound( 0x38 ); }
else if ( this.Name == "tambourine" ){ from.PlaySound( 0x52 ); }
else if ( this.Name == "lute" ){ from.PlaySound( 0x4C ); }
else if ( this.Name == "pipes" ){ from.PlaySound( 0x5B8 ); }
}
}
}
public static void EquipVendor( Mobile m, string item )
{
Item one = m.FindItemOnLayer( Layer.OneHanded );
if ( one == null )
one = m.FindItemOnLayer( Layer.FirstValid );
Item two = m.FindItemOnLayer( Layer.TwoHanded );
if ( item == "none" )
{
ClearHands( m );
}
else if ( item == "cleaver" && !(one is Cleaver) )
{
ClearHands( m );
m.AddItem( new Cleaver() );
}
else if ( item == "bow" && !(two is BaseRanged) )
{
ClearHands( m );
switch ( Utility.Random( 4 ) )
{
case 0: m.AddItem( new Bow() ); break;
case 1: m.AddItem( new Bow() ); break;
case 2: m.AddItem( new Crossbow() ); break;
case 3: m.AddItem( new HeavyCrossbow() ); break;
}
}
else if ( item == "pole" && !(two is FishingPole) )
{
ClearHands( m );
m.AddItem( new FishingPole() );
}
else if ( item == "pick" && !(two is Pickaxe) )
{
ClearHands( m );
m.AddItem( new Pickaxe() );
}
else if ( item == "axe" && !(two is Hatchet) )
{
ClearHands( m );
m.AddItem( new Hatchet() );
}
else if ( item == "hammer" && !(one is Club) )
{
ClearHands( m );
Item hammer = new Club();
hammer.Name = "hammer";
hammer.ItemID = 0x13E3;
m.AddItem( hammer );
}
}
public static void ClearHands( Mobile m )
{
Item one = m.FindItemOnLayer( Layer.OneHanded );
if ( one == null )
one = m.FindItemOnLayer( Layer.FirstValid );
Item two = m.FindItemOnLayer( Layer.TwoHanded );
if ( one != null ) { one.Delete(); }
if ( two != null ) { two.Delete(); }
}
public static void SetInstrument( Mobile from, Item instrument )
{
string facing = "east";
if ( from.X == instrument.X )
facing = "south";
if ( facing == "south" )
{
switch ( Utility.Random( 6 ) )
{
case 0: instrument.ItemID = 0x178F; instrument.Name = "lute"; instrument.Z = from.Z + 9; break;
case 1: instrument.ItemID = 0x178D; instrument.Name = "flute"; instrument.Z = from.Z + 11; break;
case 2: instrument.ItemID = 0x178B; instrument.Name = "harp"; instrument.Z = from.Z + 9; break;
case 3: instrument.ItemID = 0x1793; instrument.Name = "drum"; instrument.Z = from.Z + 7; break;
case 4: instrument.ItemID = 0x1791; instrument.Name = "tambourine"; instrument.Z = from.Z + 9; break;
case 5: instrument.ItemID = 0x2131; instrument.Name = "pipes"; instrument.Z = from.Z + 9; break;
}
}
else
{
switch ( Utility.Random( 6 ) )
{
case 0: instrument.ItemID = 0x178E; instrument.Name = "lute"; instrument.Z = from.Z + 9; break;
case 1: instrument.ItemID = 0x178C; instrument.Name = "flute"; instrument.Z = from.Z + 11; break;
case 2: instrument.ItemID = 0x178A; instrument.Name = "harp"; instrument.Z = from.Z + 9; break;
case 3: instrument.ItemID = 0x1792; instrument.Name = "drum"; instrument.Z = from.Z + 7; break;
case 4: instrument.ItemID = 0x1790; instrument.Name = "tambourine"; instrument.Z = from.Z + 9; break;
case 5: instrument.ItemID = 0x2130; instrument.Name = "pipes"; instrument.Z = from.Z + 9; break;
}
}
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( (int) m_Acts );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_Acts = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,221 @@
using System;
using Server;
using Server.Items;
using System.Collections;
using Server.Mobiles;
namespace Server.Items
{
public class CampAAddon : BaseAddon
{
private bool m_Sitting;
private bool m_North;
private bool m_South;
private bool m_East;
private bool m_West;
private static int[,] m_AddOnSimpleComponents = new int[,] {
{7134, 3, 1, 0}, // LOGS
{7137, 1, -2, 0}, // LOGS
{Utility.RandomList(749,2200), -2, -1, 0}, // WAGON
{Utility.RandomList(750,2169), -2, 3, 0}, // WAGON
{2861, 0, 3, 0}, // BENCH
{2861, 0, -2, 0}, // BENCH
{2860, -2, 1, 0}, // BENCH
{2860, 3, 0, 0}, // BENCH
};
[ Constructable ]
public CampAAddon()
{
Weight = -2.0;
int wagon = Utility.Random(3);
int logs = Utility.Random(3);
m_Sitting = true;
if ( Utility.RandomMinMax(1,3) == 1 )
m_Sitting = false;
m_North = true;
m_South = true;
m_East = true;
m_West = true;
int c = 0;
int d = 0;
int e = 0;
bool doit = true;
for (int i = 0; i < m_AddOnSimpleComponents.Length / 4; i++)
{
c++;
if ( m_AddOnSimpleComponents[i,0] == 749 || m_AddOnSimpleComponents[i,0] == 750 || m_AddOnSimpleComponents[i,0] == 2169 || m_AddOnSimpleComponents[i,0] == 2200 )
{
if ( wagon == 1 && ( m_AddOnSimpleComponents[i,0] == 749 || m_AddOnSimpleComponents[i,0] == 2200 ) )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
else if ( wagon == 2 && ( m_AddOnSimpleComponents[i,0] == 750 || m_AddOnSimpleComponents[i,0] == 2169 ) )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
else if ( m_AddOnSimpleComponents[i,0] == 7134 || m_AddOnSimpleComponents[i,0] == 7137 )
{
if ( logs == 1 && m_AddOnSimpleComponents[i,0] == 7134 )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
else if ( logs == 2 && m_AddOnSimpleComponents[i,0] == 7137 )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
else if ( m_Sitting )
{
doit = true;
if ( d < 4 ){ if ( Utility.RandomMinMax(1,4) == 1 ){ doit = false; } }
else if ( d < 3 ){ if ( Utility.RandomMinMax(1,3) == 1 ){ doit = false; } }
else if ( d < 2 ){ if ( Utility.RandomBool() ){ doit = false; } }
if ( e == 0 && c == 7 ){ doit = true; }
if ( e == 1 && c == 8 ){ doit = true; }
if ( !doit )
{
d++;
if ( c == 5 ){ m_North = false; }
else if ( c == 6 ){ m_South = false; }
else if ( c == 7 ){ m_East = false; }
else if ( c == 8 ){ m_West = false; }
}
else
{
e++;
AddonComponent ac = new AddonComponent( m_AddOnSimpleComponents[i,0] );
ac.Weight = -2.0;
AddComponent( ac, m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
}
}
AddComplexComponent( (BaseAddon) this, 4012, 0, 0, 0, 0, 0, "fire", 1);
}
public override void OnAfterSpawn()
{
base.OnAfterSpawn();
int mod = 0;
RemoveCitizens();
BaseCreature north = new CitizenNorth();
BaseCreature south = new CitizenSouth();
BaseCreature east = new CitizenEast();
BaseCreature west = new CitizenWest();
if ( !m_Sitting )
{
north.Delete(); north = new AdventurerNorth();
south.Delete(); south = new AdventurerSouth();
east.Delete(); east = new AdventurerEast();
west.Delete(); west = new AdventurerWest();
if ( Utility.RandomBool() )
{
mod = 1;
BaseMount mountN = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountN.Delete(); mountN = new Llama(); }
mountN.Rider = north;
north.Direction = Direction.North;
BaseMount mountS = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountS.Delete(); mountS = new Llama(); }
mountS.Rider = south;
south.Direction = Direction.South;
BaseMount mountE = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountE.Delete(); mountE = new Llama(); }
mountE.Rider = east;
east.Direction = Direction.East;
BaseMount mountW = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountW.Delete(); mountW = new Llama(); }
mountW.Rider = west;
west.Direction = Direction.West;
}
}
north.MoveToWorld( new Point3D( X, Y+3+mod, Z ), Map );
south.MoveToWorld( new Point3D( X, Y-2-mod, Z ), Map );
east.MoveToWorld( new Point3D( X-2-mod, Y+1, Z ), Map );
west.MoveToWorld( new Point3D( X+3+mod, Y, Z ), Map );
north.RangeHome = 0;
north.Home = north.Location;
north.OnAfterSpawn();
if ( !m_North ){ north.Delete(); }
south.RangeHome = 0;
south.Home = south.Location;
south.OnAfterSpawn();
if ( !m_South ){ south.Delete(); }
east.RangeHome = 0;
east.Home = east.Location;
east.OnAfterSpawn();
if ( !m_East ){ east.Delete(); }
west.RangeHome = 0;
west.Home = west.Location;
west.OnAfterSpawn();
if ( !m_West ){ west.Delete(); }
}
public CampAAddon( Serial serial ) : base( serial )
{
}
public override void OnDelete()
{
RemoveCitizens();
base.OnDelete();
}
public void RemoveCitizens()
{
ArrayList list = new ArrayList();
foreach ( Mobile m in this.GetMobilesInRange( 8 ) )
{
if ( m is Citizen )
list.Add( m );
}
for ( int i = 0; i < list.Count; ++i )
{
Mobile from = (Mobile)list[i];
from.Delete();
}
}
private static void AddComplexComponent(BaseAddon addon, int item, int xoffset, int yoffset, int zoffset, int hue, int lightsource)
{
AddComplexComponent(addon, item, xoffset, yoffset, zoffset, hue, lightsource, null, 1);
}
private static void AddComplexComponent(BaseAddon addon, int item, int xoffset, int yoffset, int zoffset, int hue, int lightsource, string name, int amount)
{
AddonComponent ac;
ac = new AddonComponent(item);
ac.Weight = -2.0;
if (name != null && name.Length > 0)
ac.Name = name;
if (hue != 0)
ac.Hue = hue;
if (amount > 1)
{
ac.Stackable = true;
ac.Amount = amount;
}
if (lightsource != -1)
ac.Light = LightType.Circle300;
addon.AddComponent(ac, xoffset, yoffset, zoffset);
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,221 @@
using System;
using Server;
using Server.Items;
using System.Collections;
using Server.Mobiles;
namespace Server.Items
{
public class CampBAddon : BaseAddon
{
private bool m_Sitting;
private bool m_North;
private bool m_South;
private bool m_East;
private bool m_West;
private static int[,] m_AddOnSimpleComponents = new int[,] {
{Utility.RandomList(750,2169), -2, -2, 0}, // WAGON
{Utility.RandomList(750,2169), 2, -2, 0}, // WAGON
{7137, -1, -2, 0}, // LOGS
{7134, 2, 1, 0}, // LOGS
{2861, 0, 2, 0}, // BENCH
{2861, 0, -2, 0}, // BENCH
{2860, -2, 0, 0}, // BENCH
{2860, 2, 0, 0}, // BENCH
};
[ Constructable ]
public CampBAddon()
{
Weight = -2.0;
int wagon = Utility.Random(3);
int logs = Utility.Random(3);
m_Sitting = true;
if ( Utility.RandomMinMax(1,3) == 1 )
m_Sitting = false;
m_North = true;
m_South = true;
m_East = true;
m_West = true;
int c = 0;
int d = 0;
int e = 0;
bool doit = true;
for (int i = 0; i < m_AddOnSimpleComponents.Length / 4; i++)
{
c++;
if ( m_AddOnSimpleComponents[i,0] == 749 || m_AddOnSimpleComponents[i,0] == 750 || m_AddOnSimpleComponents[i,0] == 2169 || m_AddOnSimpleComponents[i,0] == 2200 )
{
if ( wagon == 1 && m_AddOnSimpleComponents[i,1] == -2 )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
else if ( wagon == 2 && m_AddOnSimpleComponents[i,1] == 2 )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
else if ( m_AddOnSimpleComponents[i,0] == 7134 || m_AddOnSimpleComponents[i,0] == 7137 )
{
if ( logs == 1 && m_AddOnSimpleComponents[i,0] == 7134 )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
else if ( logs == 2 && m_AddOnSimpleComponents[i,0] == 7137 )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
else if ( m_Sitting )
{
doit = true;
if ( d < 4 ){ if ( Utility.RandomMinMax(1,4) == 1 ){ doit = false; } }
else if ( d < 3 ){ if ( Utility.RandomMinMax(1,3) == 1 ){ doit = false; } }
else if ( d < 2 ){ if ( Utility.RandomBool() ){ doit = false; } }
if ( e == 0 && c == 7 ){ doit = true; }
if ( e == 1 && c == 8 ){ doit = true; }
if ( !doit )
{
d++;
if ( c == 5 ){ m_North = false; }
else if ( c == 6 ){ m_South = false; }
else if ( c == 7 ){ m_East = false; }
else if ( c == 8 ){ m_West = false; }
}
else
{
e++;
AddonComponent ac = new AddonComponent( m_AddOnSimpleComponents[i,0] );
ac.Weight = -2.0;
AddComponent( ac, m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
}
}
AddComplexComponent( (BaseAddon) this, 10749, 0, 0, 0, 0, 0, "fire", 1);
}
public override void OnAfterSpawn()
{
base.OnAfterSpawn();
int mod = 0;
RemoveCitizens();
BaseCreature north = new CitizenNorth();
BaseCreature south = new CitizenSouth();
BaseCreature east = new CitizenEast();
BaseCreature west = new CitizenWest();
if ( !m_Sitting )
{
north.Delete(); north = new AdventurerNorth();
south.Delete(); south = new AdventurerSouth();
east.Delete(); east = new AdventurerEast();
west.Delete(); west = new AdventurerWest();
if ( Utility.RandomBool() )
{
mod = 1;
BaseMount mountN = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountN.Delete(); mountN = new Llama(); }
mountN.Rider = north;
north.Direction = Direction.North;
BaseMount mountS = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountS.Delete(); mountS = new Llama(); }
mountS.Rider = south;
south.Direction = Direction.South;
BaseMount mountE = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountE.Delete(); mountE = new Llama(); }
mountE.Rider = east;
east.Direction = Direction.East;
BaseMount mountW = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountW.Delete(); mountW = new Llama(); }
mountW.Rider = west;
west.Direction = Direction.West;
}
}
north.MoveToWorld( new Point3D( X, Y+2+mod, Z ), Map );
south.MoveToWorld( new Point3D( X, Y-2-mod, Z ), Map );
east.MoveToWorld( new Point3D( X-2-mod, Y, Z ), Map );
west.MoveToWorld( new Point3D( X+2+mod, Y, Z ), Map );
north.RangeHome = 0;
north.Home = north.Location;
north.OnAfterSpawn();
if ( !m_North ){ north.Delete(); }
south.RangeHome = 0;
south.Home = south.Location;
south.OnAfterSpawn();
if ( !m_South ){ south.Delete(); }
east.RangeHome = 0;
east.Home = east.Location;
east.OnAfterSpawn();
if ( !m_East ){ east.Delete(); }
west.RangeHome = 0;
west.Home = west.Location;
west.OnAfterSpawn();
if ( !m_West ){ west.Delete(); }
}
public CampBAddon( Serial serial ) : base( serial )
{
}
public override void OnDelete()
{
RemoveCitizens();
base.OnDelete();
}
public void RemoveCitizens()
{
ArrayList list = new ArrayList();
foreach ( Mobile m in this.GetMobilesInRange( 8 ) )
{
if ( m is Citizen )
list.Add( m );
}
for ( int i = 0; i < list.Count; ++i )
{
Mobile from = (Mobile)list[i];
from.Delete();
}
}
private static void AddComplexComponent(BaseAddon addon, int item, int xoffset, int yoffset, int zoffset, int hue, int lightsource)
{
AddComplexComponent(addon, item, xoffset, yoffset, zoffset, hue, lightsource, null, 1);
}
private static void AddComplexComponent(BaseAddon addon, int item, int xoffset, int yoffset, int zoffset, int hue, int lightsource, string name, int amount)
{
AddonComponent ac;
ac = new AddonComponent(item);
ac.Weight = -2.0;
if (name != null && name.Length > 0)
ac.Name = name;
if (hue != 0)
ac.Hue = hue;
if (amount > 1)
{
ac.Stackable = true;
ac.Amount = amount;
}
if (lightsource != -1)
ac.Light = LightType.Circle300;
addon.AddComponent(ac, xoffset, yoffset, zoffset);
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,221 @@
using System;
using Server;
using Server.Items;
using System.Collections;
using Server.Mobiles;
namespace Server.Items
{
public class CampCAddon : BaseAddon
{
private bool m_Sitting;
private bool m_North;
private bool m_South;
private bool m_East;
private bool m_West;
private static int[,] m_AddOnSimpleComponents = new int[,] {
{7135, -3, -2, 0}, // LOGS
{7138, 2, 1, 0}, // LOGS
{Utility.RandomList(749,2200), -3, 2, 0}, // WAGON
{Utility.RandomList(750,2169), -1, -3, 0}, // WAGON
{2861, -1, 3, 0}, // BENCH
{2861, 1, -3, 0}, // BENCH
{2860, -3, 0, 0}, // BENCH
{2860, 3, 0, 0}, // BENCH
};
[ Constructable ]
public CampCAddon()
{
Weight = -2.0;
int wagon = Utility.Random(3);
int logs = Utility.Random(3);
m_Sitting = true;
if ( Utility.RandomMinMax(1,3) == 1 )
m_Sitting = false;
m_North = true;
m_South = true;
m_East = true;
m_West = true;
int c = 0;
int d = 0;
int e = 0;
bool doit = true;
for (int i = 0; i < m_AddOnSimpleComponents.Length / 4; i++)
{
c++;
if ( m_AddOnSimpleComponents[i,0] == 749 || m_AddOnSimpleComponents[i,0] == 750 || m_AddOnSimpleComponents[i,0] == 2169 || m_AddOnSimpleComponents[i,0] == 2200 )
{
if ( wagon == 1 && ( m_AddOnSimpleComponents[i,0] == 749 || m_AddOnSimpleComponents[i,0] == 2200 ) )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
else if ( wagon == 2 && ( m_AddOnSimpleComponents[i,0] == 750 || m_AddOnSimpleComponents[i,0] == 2169 ) )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
else if ( m_AddOnSimpleComponents[i,0] == 7135 || m_AddOnSimpleComponents[i,0] == 7138 )
{
if ( logs == 1 && m_AddOnSimpleComponents[i,0] == 7135 )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
else if ( logs == 2 && m_AddOnSimpleComponents[i,0] == 7138 )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
else if ( m_Sitting )
{
doit = true;
if ( d < 4 ){ if ( Utility.RandomMinMax(1,4) == 1 ){ doit = false; } }
else if ( d < 3 ){ if ( Utility.RandomMinMax(1,3) == 1 ){ doit = false; } }
else if ( d < 2 ){ if ( Utility.RandomBool() ){ doit = false; } }
if ( e == 0 && c == 7 ){ doit = true; }
if ( e == 1 && c == 8 ){ doit = true; }
if ( !doit )
{
d++;
if ( c == 5 ){ m_North = false; }
else if ( c == 6 ){ m_South = false; }
else if ( c == 7 ){ m_East = false; }
else if ( c == 8 ){ m_West = false; }
}
else
{
e++;
AddonComponent ac = new AddonComponent( m_AddOnSimpleComponents[i,0] );
ac.Weight = -2.0;
AddComponent( ac, m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
}
}
AddComplexComponent( (BaseAddon) this, 996, 0, 0, 0, 0, 0, "fire", 1);
}
public override void OnAfterSpawn()
{
base.OnAfterSpawn();
int mod = 0;
RemoveCitizens();
BaseCreature north = new CitizenNorth();
BaseCreature south = new CitizenSouth();
BaseCreature east = new CitizenEast();
BaseCreature west = new CitizenWest();
if ( !m_Sitting )
{
north.Delete(); north = new AdventurerNorth();
south.Delete(); south = new AdventurerSouth();
east.Delete(); east = new AdventurerEast();
west.Delete(); west = new AdventurerWest();
if ( Utility.RandomBool() )
{
mod = 1;
BaseMount mountN = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountN.Delete(); mountN = new Llama(); }
mountN.Rider = north;
north.Direction = Direction.North;
BaseMount mountS = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountS.Delete(); mountS = new Llama(); }
mountS.Rider = south;
south.Direction = Direction.South;
BaseMount mountE = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountE.Delete(); mountE = new Llama(); }
mountE.Rider = east;
east.Direction = Direction.East;
BaseMount mountW = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountW.Delete(); mountW = new Llama(); }
mountW.Rider = west;
west.Direction = Direction.West;
}
}
north.MoveToWorld( new Point3D( X-1, Y+3+mod, Z ), Map );
south.MoveToWorld( new Point3D( X+1, Y-3-mod, Z ), Map );
east.MoveToWorld( new Point3D( X-3-mod, Y, Z ), Map );
west.MoveToWorld( new Point3D( X+3+mod, Y, Z ), Map );
north.RangeHome = 0;
north.Home = north.Location;
north.OnAfterSpawn();
if ( !m_North ){ north.Delete(); }
south.RangeHome = 0;
south.Home = south.Location;
south.OnAfterSpawn();
if ( !m_South ){ south.Delete(); }
east.RangeHome = 0;
east.Home = east.Location;
east.OnAfterSpawn();
if ( !m_East ){ east.Delete(); }
west.RangeHome = 0;
west.Home = west.Location;
west.OnAfterSpawn();
if ( !m_West ){ west.Delete(); }
}
public CampCAddon( Serial serial ) : base( serial )
{
}
public override void OnDelete()
{
RemoveCitizens();
base.OnDelete();
}
public void RemoveCitizens()
{
ArrayList list = new ArrayList();
foreach ( Mobile m in this.GetMobilesInRange( 8 ) )
{
if ( m is Citizen )
list.Add( m );
}
for ( int i = 0; i < list.Count; ++i )
{
Mobile from = (Mobile)list[i];
from.Delete();
}
}
private static void AddComplexComponent(BaseAddon addon, int item, int xoffset, int yoffset, int zoffset, int hue, int lightsource)
{
AddComplexComponent(addon, item, xoffset, yoffset, zoffset, hue, lightsource, null, 1);
}
private static void AddComplexComponent(BaseAddon addon, int item, int xoffset, int yoffset, int zoffset, int hue, int lightsource, string name, int amount)
{
AddonComponent ac;
ac = new AddonComponent(item);
ac.Weight = -2.0;
if (name != null && name.Length > 0)
ac.Name = name;
if (hue != 0)
ac.Hue = hue;
if (amount > 1)
{
ac.Stackable = true;
ac.Amount = amount;
}
if (lightsource != -1)
ac.Light = LightType.Circle300;
addon.AddComponent(ac, xoffset, yoffset, zoffset);
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,222 @@
using System;
using Server;
using Server.Items;
using System.Collections;
using Server.Mobiles;
namespace Server.Items
{
public class CampDAddon : BaseAddon
{
private bool m_Sitting;
private bool m_North;
private bool m_South;
private bool m_East;
private bool m_West;
private static int[,] m_AddOnSimpleComponents = new int[,] {
{Utility.RandomList(749,2200), -1, -2, 0}, // WAGON
{Utility.RandomList(750,2169), -2, 3, 0}, // WAGON2169
{7134, 3, -1, 0}, // LOGS
{7137, 0, -2, 0}, // LOGS
{2861, 0, 3, 0}, // BENCH
{2861, 1, -2, 0}, // BENCH
{2860, -2, 0, 0}, // BENCH
{2860, 3, 0, 0}, // BENCH
};
[ Constructable ]
public CampDAddon()
{
Weight = -2.0;
int wagon = Utility.Random(3);
int logs = Utility.Random(3);
m_Sitting = true;
if ( Utility.RandomMinMax(1,3) == 1 )
m_Sitting = false;
m_North = true;
m_South = true;
m_East = true;
m_West = true;
int c = 0;
int d = 0;
int e = 0;
bool doit = true;
for (int i = 0; i < m_AddOnSimpleComponents.Length / 4; i++)
{
c++;
if ( m_AddOnSimpleComponents[i,0] == 749 || m_AddOnSimpleComponents[i,0] == 750 || m_AddOnSimpleComponents[i,0] == 2169 || m_AddOnSimpleComponents[i,0] == 2200 )
{
if ( wagon == 1 && ( m_AddOnSimpleComponents[i,0] == 749 || m_AddOnSimpleComponents[i,0] == 2200 ) )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
else if ( wagon == 2 && ( m_AddOnSimpleComponents[i,0] == 750 || m_AddOnSimpleComponents[i,0] == 2169 ) )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
else if ( m_AddOnSimpleComponents[i,0] == 7134 || m_AddOnSimpleComponents[i,0] == 7137 )
{
if ( logs == 1 && m_AddOnSimpleComponents[i,0] == 7134 )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
else if ( logs == 2 && m_AddOnSimpleComponents[i,0] == 7137 )
AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
else if ( m_Sitting )
{
doit = true;
if ( d < 4 ){ if ( Utility.RandomMinMax(1,4) == 1 ){ doit = false; } }
else if ( d < 3 ){ if ( Utility.RandomMinMax(1,3) == 1 ){ doit = false; } }
else if ( d < 2 ){ if ( Utility.RandomBool() ){ doit = false; } }
if ( e == 0 && c == 7 ){ doit = true; }
if ( e == 1 && c == 8 ){ doit = true; }
if ( !doit )
{
d++;
if ( c == 5 ){ m_North = false; }
else if ( c == 6 ){ m_South = false; }
else if ( c == 7 ){ m_East = false; }
else if ( c == 8 ){ m_West = false; }
}
else
{
e++;
AddonComponent ac = new AddonComponent( m_AddOnSimpleComponents[i,0] );
ac.Weight = -2.0;
AddComponent( ac, m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );
}
}
}
AddComplexComponent( (BaseAddon) this, 4012, 0, 0, 0, 0, 0, "fire", 1);
AddComplexComponent( (BaseAddon) this, 3555, 0, 0, 2, 0, 0, "fire", 1);
}
public override void OnAfterSpawn()
{
base.OnAfterSpawn();
int mod = 0;
RemoveCitizens();
BaseCreature north = new CitizenNorth();
BaseCreature south = new CitizenSouth();
BaseCreature east = new CitizenEast();
BaseCreature west = new CitizenWest();
if ( !m_Sitting )
{
north.Delete(); north = new AdventurerNorth();
south.Delete(); south = new AdventurerSouth();
east.Delete(); east = new AdventurerEast();
west.Delete(); west = new AdventurerWest();
if ( Utility.RandomBool() )
{
mod = 1;
BaseMount mountN = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountN.Delete(); mountN = new Llama(); }
mountN.Rider = north;
north.Direction = Direction.North;
BaseMount mountS = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountS.Delete(); mountS = new Llama(); }
mountS.Rider = south;
south.Direction = Direction.South;
BaseMount mountE = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountE.Delete(); mountE = new Llama(); }
mountE.Rider = east;
east.Direction = Direction.East;
BaseMount mountW = new Horse(); if ( Utility.RandomMinMax(1,20) == 1 ){ mountW.Delete(); mountW = new Llama(); }
mountW.Rider = west;
west.Direction = Direction.West;
}
}
north.MoveToWorld( new Point3D( X, Y+3+mod, Z ), Map );
south.MoveToWorld( new Point3D( X+1, Y-2-mod, Z ), Map );
east.MoveToWorld( new Point3D( X-2-mod, Y, Z ), Map );
west.MoveToWorld( new Point3D( X+3+mod, Y, Z ), Map );
north.RangeHome = 0;
north.Home = north.Location;
north.OnAfterSpawn();
if ( !m_North ){ north.Delete(); }
south.RangeHome = 0;
south.Home = south.Location;
south.OnAfterSpawn();
if ( !m_South ){ south.Delete(); }
east.RangeHome = 0;
east.Home = east.Location;
east.OnAfterSpawn();
if ( !m_East ){ east.Delete(); }
west.RangeHome = 0;
west.Home = west.Location;
west.OnAfterSpawn();
if ( !m_West ){ west.Delete(); }
}
public CampDAddon( Serial serial ) : base( serial )
{
}
public override void OnDelete()
{
RemoveCitizens();
base.OnDelete();
}
public void RemoveCitizens()
{
ArrayList list = new ArrayList();
foreach ( Mobile m in this.GetMobilesInRange( 8 ) )
{
if ( m is Citizen )
list.Add( m );
}
for ( int i = 0; i < list.Count; ++i )
{
Mobile from = (Mobile)list[i];
from.Delete();
}
}
private static void AddComplexComponent(BaseAddon addon, int item, int xoffset, int yoffset, int zoffset, int hue, int lightsource)
{
AddComplexComponent(addon, item, xoffset, yoffset, zoffset, hue, lightsource, null, 1);
}
private static void AddComplexComponent(BaseAddon addon, int item, int xoffset, int yoffset, int zoffset, int hue, int lightsource, string name, int amount)
{
AddonComponent ac;
ac = new AddonComponent(item);
ac.Weight = -2.0;
if (name != null && name.Length > 0)
ac.Name = name;
if (hue != 0)
ac.Hue = hue;
if (amount > 1)
{
ac.Stackable = true;
ac.Amount = amount;
}
if (lightsource != -1)
ac.Light = LightType.Circle300;
addon.AddComponent(ac, xoffset, yoffset, zoffset);
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( 0 ); // Version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,307 @@
using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;
namespace Server.Mobiles
{
public class Citizen : BaseCreature
{
public override bool ClickTitle{ get{ return false; } }
public override bool ShowFameTitle { get { return false; } }
public override bool DeleteCorpseOnDeath{ get{ return true; } }
public DateTime m_NextTalk;
public DateTime NextTalk{ get{ return m_NextTalk; } set{ m_NextTalk = value; } }
public override void OnMovement( Mobile m, Point3D oldLocation )
{
if ( DateTime.Now >= m_NextTalk && InRange( m, 30 ) )
{
if ( Utility.RandomBool() ){ Server.Misc.CitizenTalking.CitizenTalk( this ); }
m_NextTalk = (DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 15, 45 ) ));
if ( this is CitizenNorth || this is CitizenSouth || this is CitizenEast || this is CitizenWest )
Server.Misc.CitizenDressing.RemoveMyGear( this );
}
}
[Constructable]
public Citizen() : base( AIType.AI_Citizen, FightMode.None, 10, 1, 0.2, 0.4 )
{
SpeechHue = Utility.RandomSpeechHue();
Title = Server.Misc.CitizenTitles.CitizenTitle( this );
Hue = Utility.RandomSkinHue();
CantWalk = true;
NameHue = Utility.RandomOrangeHue();
Invulnerable = true;
Clan = Clan.Citizen;
SetStr( 300 );
SetDex( 300 );
SetInt( 300 );
SetDamage( 30, 50 );
int hair = Utility.RandomHairHue();
if ( this.Female = Utility.RandomBool() )
{
Body = 0x191;
Name = NameList.RandomName( "female" );
}
else
{
Body = 0x190;
Name = NameList.RandomName( "male" );
if ( Utility.RandomBool() ){ Utility.AssignRandomFacialHair( this, hair ); }
}
Utility.AssignRandomHair( this, hair );
Server.Misc.CitizenDressing.CitizenDress( this, 0 );
}
public override void OnThink()
{
}
public override bool IsEnemy( Mobile m )
{
return false;
}
public Citizen( 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 AdventurerEast : Citizen
{
[Constructable]
public AdventurerEast() : base( )
{
Direction = Direction.East;
}
public AdventurerEast( 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 AdventurerWest : Citizen
{
[Constructable]
public AdventurerWest() : base( )
{
Direction = Direction.West;
}
public AdventurerWest( 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 AdventurerSouth : Citizen
{
[Constructable]
public AdventurerSouth() : base( )
{
Direction = Direction.South;
}
public AdventurerSouth( 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 AdventurerNorth : Citizen
{
[Constructable]
public AdventurerNorth() : base( )
{
Direction = Direction.North;
}
public AdventurerNorth( 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 CitizenEast : Citizen
{
[Constructable]
public CitizenEast() : base( )
{
Direction = Direction.East;
}
public CitizenEast( Serial serial ) : base( serial )
{
}
public override void OnAfterSpawn()
{
base.OnAfterSpawn();
Server.Misc.CitizenDressing.RemoveMyGear( this );
}
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 CitizenWest : Citizen
{
[Constructable]
public CitizenWest() : base( )
{
Direction = Direction.West;
}
public CitizenWest( Serial serial ) : base( serial )
{
}
public override void OnAfterSpawn()
{
base.OnAfterSpawn();
Server.Misc.CitizenDressing.RemoveMyGear( this );
}
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 CitizenSouth : Citizen
{
[Constructable]
public CitizenSouth() : base( )
{
Direction = Direction.South;
}
public CitizenSouth( Serial serial ) : base( serial )
{
}
public override void OnAfterSpawn()
{
base.OnAfterSpawn();
Server.Misc.CitizenDressing.RemoveMyGear( this );
}
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 CitizenNorth : Citizen
{
[Constructable]
public CitizenNorth() : base( )
{
Direction = Direction.North;
}
public CitizenNorth( Serial serial ) : base( serial )
{
}
public override void OnThink()
{
Server.Misc.CitizenDressing.RemoveMyGear( this );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,463 @@
using System;
using Server.Items;
using Server.Misc;
namespace Server.Misc
{
class CitizenDressing
{
public static void CitizenDress( Mobile m, int job )
{
bool specific = false;
if ( job > 0 )
specific = true;
if ( job < 1 ){ job = Utility.RandomMinMax(1,3); }
int weapon = Utility.Random( 40 );
bool shield = true;
if ( job == 1 ) // FIGHTER
{
weapon = Utility.RandomMinMax( 4, 32 );
if ( !specific && Utility.RandomMinMax(1,35) == 1 )
weapon = Utility.RandomMinMax( 37, 39 );
if ( Utility.RandomMinMax(1,20) == 1 )
{
if ( Utility.RandomBool() ){ m.AddItem( new BoneArms() ); } else { m.AddItem( new OrcHelm() ); }
m.AddItem( new BoneChest() );
m.AddItem( new BoneGloves() );
m.AddItem( new BoneHelm() );
m.AddItem( new BoneLegs() );
}
else
{
switch ( Utility.Random( 10 ) )
{
case 0: m.AddItem( new PlateHelm() ); break;
case 1: m.AddItem( new ChainCoif() ); break;
case 2: m.AddItem( new Bascinet() ); break;
case 3: m.AddItem( new CloseHelm() ); break;
case 4: m.AddItem( new Helmet() ); break;
case 5: m.AddItem( new NorseHelm() ); break;
}
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new PlateArms() ); break;
case 1: m.AddItem( new RingmailArms() ); break;
}
switch ( Utility.Random( 2 ) )
{
case 0: m.AddItem( new PlateGorget() ); break;
}
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new PlateLegs() ); break;
case 1: m.AddItem( new RingmailLegs() ); break;
case 2: m.AddItem( new ChainLegs() ); break;
}
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new PlateGloves() ); break;
case 1: m.AddItem( new RingmailGloves() ); break;
}
switch ( Utility.Random( 3 ) )
{
case 0: if ( m.Female && Utility.RandomBool() ){ m.AddItem( new FemalePlateChest() ); } else { m.AddItem( new PlateChest() ); } break;
case 1: m.AddItem( new RingmailChest() ); break;
case 2: m.AddItem( new ChainChest() ); break;
}
}
switch ( Utility.Random( 2 ) )
{
case 0: m.AddItem( new Boots() ); break;
case 1: m.AddItem( new ThighBoots() ); break;
}
switch ( Utility.Random( 2 ) )
{
case 0: m.AddItem( new Cloak( Utility.RandomHue() ) ); break;
}
switch ( Utility.Random( 10 ) )
{
case 0: m.AddItem( new Robe( Utility.RandomHue() ) ); break;
}
}
else if ( job == 2 ) // THIEF
{
weapon = Utility.RandomList( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 37, 38, 39 );
switch ( Utility.Random( 2 ) )
{
case 0: m.AddItem( new LeatherCap() ); break;
}
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new StuddedArms() ); break;
case 1: m.AddItem( new LeatherArms() ); break;
}
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new StuddedGorget() ); break;
case 1: m.AddItem( new LeatherGorget() ); break;
}
switch ( Utility.Random( 4 ) )
{
case 0: m.AddItem( new LeatherLegs() ); break;
case 1: m.AddItem( new LeatherShorts() ); break;
case 2: m.AddItem( new LeatherSkirt() ); break;
case 3: m.AddItem( new StuddedLegs() ); break;
}
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new LeatherGloves() ); break;
case 1: m.AddItem( new StuddedGloves() ); break;
}
switch ( Utility.Random( 2 ) )
{
case 0: if ( m.Female && Utility.RandomBool() ){ m.AddItem( new FemaleStuddedChest() ); } else { m.AddItem( new StuddedChest() ); } break;
case 1: if ( m.Female && Utility.RandomBool() ){ m.AddItem( new FemaleLeatherChest() ); } else { m.AddItem( new LeatherChest() ); } break;
}
switch ( Utility.Random( 2 ) )
{
case 0: m.AddItem( new Boots() ); break;
case 1: m.AddItem( new ThighBoots() ); break;
}
switch ( Utility.Random( 2 ) )
{
case 0: m.AddItem( new Cloak( Utility.RandomHue() ) ); break;
}
switch ( Utility.Random( 10 ) )
{
case 0: m.AddItem( new Robe( Utility.RandomHue() ) ); break;
}
}
else if ( job == 3 ) // WIZARD
{
weapon = Utility.RandomList( 0, 1, 2, 3, 5, 7, 9, 30, 33, 34, 35, 36, 38, 39 );
int robeHue = Utility.RandomHue();
int cloakHue = Utility.RandomHue();
int hatHue = Utility.RandomList( robeHue, cloakHue );
bool robed = false;
bool cloaked = false;
switch ( Utility.Random( 5 ) )
{
case 0: m.AddItem( new FancyShirt( Utility.RandomHue() ) ); break;
case 1: m.AddItem( new Doublet( Utility.RandomHue() ) ); break;
case 2: m.AddItem( new Shirt( Utility.RandomHue() ) ); break;
case 3: m.AddItem( new Tunic( Utility.RandomHue() ) ); break;
case 4: m.AddItem( new Surcoat( Utility.RandomHue() ) ); break;
}
if ( m.Female )
{
switch ( Utility.Random( 4 ) )
{
case 0: m.AddItem( new Skirt( Utility.RandomHue() ) ); break;
case 1: m.AddItem( new Kilt( Utility.RandomHue() ) ); break;
case 2: m.AddItem( new LongPants( Utility.RandomHue() ) ); break;
case 3: m.AddItem( new ShortPants( Utility.RandomHue() ) ); break;
}
}
else
{
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new LongPants( Utility.RandomHue() ) ); break;
case 1: m.AddItem( new ShortPants( Utility.RandomHue() ) ); break;
case 2: m.AddItem( new Kilt( Utility.RandomHue() ) ); break;
}
}
switch ( Utility.Random( 4 ) )
{
case 0: m.AddItem( new Shoes( Utility.RandomNeutralHue() ) ); break;
case 1: m.AddItem( new Boots( Utility.RandomNeutralHue() ) ); break;
case 2: m.AddItem( new Sandals( Utility.RandomNeutralHue() ) ); break;
case 3: m.AddItem( new ThighBoots( Utility.RandomNeutralHue() ) ); break;
}
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new LeatherGloves() ); break;
}
if ( Utility.RandomBool() ){ m.AddItem( new Cloak( cloakHue ) ); cloaked = true; }
switch ( Utility.Random( 5 ) )
{
case 0: if ( m.Female ){ m.AddItem( new PlainDress( robeHue ) ); } else { m.AddItem( new Robe( robeHue ) ); } robed = true; break;
case 1: if ( m.Female ){ m.AddItem( new FancyDress( robeHue ) ); } else { m.AddItem( new Robe( robeHue ) ); } robed = true; break;
case 2: m.AddItem( new Robe( robeHue ) ); robed = true; break;
}
if ( robed && !cloaked ){ hatHue = robeHue; }
else if ( !robed && cloaked ){ hatHue = cloakHue; }
switch ( Utility.Random( 13 ) )
{
case 0: m.AddItem( new FloppyHat( hatHue ) ); break;
case 1: m.AddItem( new Hood( hatHue ) ); break;
case 2: m.AddItem( new WideBrimHat( hatHue ) ); break;
case 3: m.AddItem( new Cap( hatHue ) ); break;
case 4: m.AddItem( new SkullCap( hatHue ) ); break;
case 5: m.AddItem( new Bandana( hatHue ) ); break;
case 6: m.AddItem( new FeatheredHat( hatHue ) ); break;
case 7: m.AddItem( new Hood( hatHue ) ); break;
case 8: m.AddItem( new WizardsHat( hatHue ) ); break;
case 9: m.AddItem( new WizardsHat( hatHue ) ); break;
}
}
else if ( job == 4 ) // BRIGAND
{
weapon = Utility.RandomList( 1000 );
switch ( Utility.Random( 8 ))
{
case 0: m.AddItem( new Longsword() ); break;
case 1: m.AddItem( new Cutlass() ); break;
case 2: m.AddItem( new Broadsword() ); break;
case 3: m.AddItem( new Axe() ); break;
case 4: m.AddItem( new Club() ); break;
case 5: m.AddItem( new Dagger() ); break;
case 6: m.AddItem( new Rapier() ); break;
case 7: m.AddItem( new Whip() ); break;
}
if ( Utility.RandomBool() )
{
switch ( Utility.Random( 4 ))
{
case 0: m.AddItem( new Buckler() ); break;
case 1: m.AddItem( new WoodenShield() ); break;
case 2: m.AddItem( new WoodenKiteShield() ); break;
case 3: m.AddItem( new MetalShield() ); break;
}
}
switch ( Utility.Random( 5 ) )
{
case 0: m.AddItem( new FancyShirt( Utility.RandomHue() ) ); break;
case 1: m.AddItem( new Doublet( Utility.RandomHue() ) ); break;
case 2: m.AddItem( new Shirt( Utility.RandomHue() ) ); break;
case 3: m.AddItem( new Tunic( Utility.RandomHue() ) ); break;
case 4: m.AddItem( new Surcoat( Utility.RandomHue() ) ); break;
}
if ( m.Female )
{
switch ( Utility.Random( 4 ) )
{
case 0: m.AddItem( new Skirt( Utility.RandomHue() ) ); break;
case 1: m.AddItem( new Kilt( Utility.RandomHue() ) ); break;
case 2: m.AddItem( new LongPants( Utility.RandomHue() ) ); break;
case 3: m.AddItem( new ShortPants( Utility.RandomHue() ) ); break;
}
}
else
{
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new LongPants( Utility.RandomHue() ) ); break;
case 1: m.AddItem( new ShortPants( Utility.RandomHue() ) ); break;
case 2: m.AddItem( new Kilt( Utility.RandomHue() ) ); break;
}
}
switch ( Utility.Random( 4 ) )
{
case 0: m.AddItem( new Shoes( Utility.RandomNeutralHue() ) ); break;
case 1: m.AddItem( new Boots( Utility.RandomNeutralHue() ) ); break;
case 2: m.AddItem( new Sandals( Utility.RandomNeutralHue() ) ); break;
case 3: m.AddItem( new ThighBoots( Utility.RandomNeutralHue() ) ); break;
}
if ( Utility.RandomBool() )
{
switch ( Utility.Random( 7 ) )
{
case 0: m.AddItem( new FloppyHat( Utility.RandomHue() ) ); break;
case 1: m.AddItem( new Hood( Utility.RandomHue() ) ); break;
case 2: m.AddItem( new WideBrimHat( Utility.RandomHue() ) ); break;
case 3: m.AddItem( new Cap( Utility.RandomHue() ) ); break;
case 4: m.AddItem( new SkullCap( Utility.RandomHue() ) ); break;
case 5: m.AddItem( new Bandana( Utility.RandomHue() ) ); break;
case 6: m.AddItem( new FeatheredHat( Utility.RandomHue() ) ); break;
}
}
if ( Utility.RandomBool() )
{
m.AddItem( new Cloak( Utility.RandomHue() ) );
}
if ( Utility.RandomBool() )
{
m.AddItem( new Robe( Utility.RandomHue() ) );
}
}
else if ( job == 5 ) // EVIL MAGE
{
weapon = 1000;
int robeHue = Utility.RandomEvilHue();
int cloakHue = Utility.RandomEvilHue();
int shirtHue = Utility.RandomEvilHue();
int legsHue = Utility.RandomEvilHue();
int hatHue = Utility.RandomList( robeHue, cloakHue );
bool robed = false;
bool cloaked = false;
switch ( Utility.Random( 5 ) )
{
case 0: m.AddItem( new FancyShirt( shirtHue ) ); break;
case 1: m.AddItem( new Doublet( shirtHue ) ); break;
case 2: m.AddItem( new Shirt( shirtHue ) ); break;
case 3: m.AddItem( new Tunic( shirtHue ) ); break;
case 4: m.AddItem( new Surcoat( shirtHue ) ); break;
}
if ( m.Female )
{
switch ( Utility.Random( 4 ) )
{
case 0: m.AddItem( new Skirt( legsHue ) ); break;
case 1: m.AddItem( new Kilt( legsHue ) ); break;
case 2: m.AddItem( new LongPants( legsHue ) ); break;
case 3: m.AddItem( new ShortPants( legsHue ) ); break;
}
}
else
{
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new LongPants( legsHue ) ); break;
case 1: m.AddItem( new ShortPants( legsHue ) ); break;
case 2: m.AddItem( new Kilt( legsHue ) ); break;
}
}
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new Shoes( Utility.RandomEvilHue() ) ); break;
case 1: m.AddItem( new Boots() ); break;
case 2: m.AddItem( new ThighBoots() ); break;
}
if ( Utility.RandomBool() ){ m.AddItem( new Cloak( cloakHue ) ); cloaked = true; }
switch ( Utility.Random( 3 ) )
{
case 0: if ( m.Female ){ m.AddItem( new PlainDress( robeHue ) ); } else { m.AddItem( new Robe( robeHue ) ); } robed = true; break;
case 1: if ( m.Female ){ m.AddItem( new FancyDress( robeHue ) ); } else { m.AddItem( new Robe( robeHue ) ); } robed = true; break;
case 2: m.AddItem( new Robe( robeHue ) ); robed = true; break;
}
if ( robed && !cloaked ){ hatHue = robeHue; }
else if ( !robed && cloaked ){ hatHue = cloakHue; }
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new Hood( hatHue ) ); break;
case 1: m.AddItem( new WizardsHat( hatHue ) ); break;
}
}
switch ( weapon )
{
case 0: m.AddItem( new ButcherKnife() ); break;
case 1: m.AddItem( new Cleaver() ); break;
case 2: m.AddItem( new Dagger() ); break;
case 3: m.AddItem( new SkinningKnife() ); break;
case 4: m.AddItem( new Broadsword() ); break;
case 5: m.AddItem( new Cutlass() ); break;
case 6: m.AddItem( new Katana() ); break;
case 7: m.AddItem( new Kryss() ); break;
case 8: m.AddItem( new Longsword() ); break;
case 9: m.AddItem( new Scimitar() ); break;
case 10: m.AddItem( new ThinLongsword() ); break;
case 11: m.AddItem( new VikingSword() ); break;
case 12: m.AddItem( new Scythe() ); shield = false; break;
case 13: m.AddItem( new Rapier() ); break;
case 14: m.AddItem( new BattleAxe() ); shield = false; break;
case 15: m.AddItem( new DoubleAxe() ); shield = false; break;
case 16: m.AddItem( new GreatAxe() ); shield = false; break;
case 17: m.AddItem( new LargeBattleAxe() ); shield = false; break;
case 18: m.AddItem( new Pickaxe() ); shield = false; break;
case 19: m.AddItem( new TwoHandedAxe() ); shield = false; break;
case 20: m.AddItem( new WarAxe() ); shield = false; break;
case 21: m.AddItem( new Axe() ); shield = false; break;
case 22: m.AddItem( new Spear() ); shield = false; break;
case 23: m.AddItem( new Pitchfork() ); shield = false; break;
case 24: m.AddItem( new Pike() ); shield = false; break;
case 25: m.AddItem( new Bardiche() ); shield = false; break;
case 26: m.AddItem( new Halberd() ); shield = false; break;
case 27: m.AddItem( new Club() ); break;
case 28: m.AddItem( new HammerPick() ); break;
case 29: m.AddItem( new Mace() ); break;
case 30: m.AddItem( new Maul() ); break;
case 31: m.AddItem( new WarHammer() ); break;
case 32: m.AddItem( new WarMace() ); break;
case 33: m.AddItem( new BlackStaff() ); shield = false; break;
case 34: m.AddItem( new GnarledStaff() ); shield = false; break;
case 35: m.AddItem( new QuarterStaff() ); shield = false; break;
case 36: m.AddItem( new ShepherdsCrook() ); shield = false; break;
case 37: m.AddItem( new HeavyCrossbow() ); shield = false; break;
case 38: m.AddItem( new Bow() ); shield = false; break;
case 39: m.AddItem( new Crossbow() ); shield = false; break;
}
if ( shield && job == 1 && Utility.RandomBool() )
{
switch ( Utility.Random( 8 ) )
{
case 0: m.AddItem( new BronzeShield() ); break;
case 1: m.AddItem( new ChaosShield() ); break;
case 2: m.AddItem( new HeaterShield() ); break;
case 3: m.AddItem( new MetalKiteShield() ); break;
case 4: m.AddItem( new MetalShield() ); break;
case 5: m.AddItem( new OrderShield() ); break;
case 6: m.AddItem( new WoodenKiteShield() ); break;
case 7: m.AddItem( new WoodenShield() ); break;
}
}
else if ( shield && job == 2 && Utility.RandomBool() )
{
switch ( Utility.Random( 3 ) )
{
case 0: m.AddItem( new Buckler() ); break;
case 1: m.AddItem( new WoodenKiteShield() ); break;
case 2: m.AddItem( new WoodenShield() ); break;
}
}
else if ( shield && job == 3 && Utility.RandomBool() )
{
switch ( Utility.Random( 4 ) )
{
case 0: m.AddItem( new Buckler() ); break;
}
}
}
public static void RemoveMyGear( Mobile m )
{
if ( m.FindItemOnLayer( Layer.OneHanded ) != null ) { m.FindItemOnLayer( Layer.OneHanded ).Delete(); }
if ( m.FindItemOnLayer( Layer.TwoHanded ) != null ) { m.FindItemOnLayer( Layer.TwoHanded ).Delete(); }
if ( m.FindItemOnLayer( Layer.FirstValid ) != null ) { m.FindItemOnLayer( Layer.FirstValid ).Delete(); }
if ( m.FindItemOnLayer( Layer.Helm ) != null ) { m.FindItemOnLayer( Layer.Helm ).Delete(); }
if ( m.FindItemOnLayer( Layer.Gloves ) != null ) { m.FindItemOnLayer( Layer.Gloves ).Delete(); }
}
}
}

View file

@ -0,0 +1,165 @@
using System;
using Server.Items;
using Server.Misc;
namespace Server.Misc
{
class CitizenTalking
{
public static void CitizenTalk( Mobile m )
{
string sSourceName = NameList.RandomName( "male" );
string sSourceJob = NameList.RandomName( "career" );
if ( Utility.RandomBool() )
sSourceName = NameList.RandomName( "female" );
string sSource = "I heard about";
switch( Utility.RandomMinMax( 1, 13 ) )
{
case 1: sSource = "Rumors are spoken about"; break;
case 2: sSource = "They are talking about"; break;
case 3: sSource = "There are rumors about"; break;
case 4: sSource = "I was told about"; break;
case 5: sSource = "I heard someone talking about"; break;
case 6: sSource = "There is a story about"; break;
case 7: sSource = sSourceName + " told me about"; break;
case 8: sSource = sSourceName + " the " + sSourceJob + " told me about"; break;
case 9: sSource = "Some " + sSourceJob + " told me about"; break;
case 10: sSource = sSourceName + " the " + sSourceJob + " heard about"; break;
case 11: sSource = "Some " + sSourceJob + " heard about"; break;
case 12: sSource = sSourceName + " the " + sSourceJob + " learned about"; break;
case 13: sSource = "Some " + sSourceJob + " learned about"; break;
}
string sPren = "this";
switch( Utility.RandomMinMax( 1, 4 ) )
{
case 1: sPren = "a"; break;
case 2: sPren = "the"; break;
case 3: sPren = "that"; break;
}
string sThey = NameList.RandomName( "male" );
if ( Utility.RandomBool() )
sThey = NameList.RandomName( "female" );
string city = NameList.RandomName( "city" );
string dungeon = NameList.RandomName( "dungeon" );
string sAdventurer = NameList.RandomName( "adventurer" );
string sDebt = NameList.RandomName( "debt" );
int relic = Utility.RandomMinMax( 1, 59 );
string sSpeech = "We are supposed to wait for " + sThey + ".";
switch( Utility.RandomMinMax( 1, 10 ) )
{
case 1: sSpeech = "We are supposed to wait for " + sThey + "."; break;
case 2: sSpeech = sThey + " lives somewhere near " + city + "."; break;
case 3: sSpeech = "We will go find " + sThey + " tomorrow."; break;
case 4: sSpeech = "We need to split this loot we have."; break;
case 5: sSpeech = sThey + " still owes me " + Utility.RandomMinMax( 5, 200 ) + " gold " + sDebt + "."; break;
case 6: sSpeech = "I think " + sThey + " stole it while we were " + NameList.RandomName( "action" ) + "."; break;
case 7: sSpeech = sThey + " will bring it here when they find it."; break;
case 8: sSpeech = NameList.RandomName( "question" ) + " " + sThey + "?"; break;
case 9: sSpeech = sThey + " sold " + sPren + " " + NameList.RandomName( "describe" ) + " " + NameList.RandomName( "item" ) + " for " + Utility.RandomMinMax( 5, 200 ) + " gold."; break;
case 10: sSpeech = "I paid " + sThey + " " + Utility.RandomMinMax( 5, 200 ) + " gold for " + sPren + " " + NameList.RandomName( "describe" ) + " " + NameList.RandomName( "item" ) + "."; break;
}
string sHappen = "A friend of mine died"; string sEnd = ".";
switch( Utility.RandomMinMax( 0, 35 ) )
{
case 0: sHappen = "A friend of mine was lost in"; sEnd = "."; break;
case 1: sHappen = "A friend of mine died in"; sEnd = "."; break;
case 2: sHappen = "I lost that weapon in"; sEnd = "."; break;
case 3: sHappen = "Have you ever been to"; sEnd = "?"; break;
case 4: sHappen = "Have you ever heard of"; sEnd = "?"; break;
case 5: sHappen = "When did you go to"; sEnd = "?"; break;
case 6: sHappen = "How did you get to"; sEnd = "?"; break;
case 7: sHappen = "Why did you go to"; sEnd = "?"; break;
case 8: sHappen = "What did you find in"; sEnd = "?"; break;
case 9: sHappen = "You found that in"; sEnd = "?"; break;
case 10: sHappen = "They died in"; sEnd = "."; break;
case 11: sHappen = "I have never been to"; sEnd = "."; break;
case 12: sHappen = "That artifact came from"; sEnd = "."; break;
case 13: sHappen = "They got lost in"; sEnd = "."; break;
case 14: sHappen = "They vanished in"; sEnd = "."; break;
case 15: sHappen = "I almost didn't make it out of"; sEnd = "."; break;
case 16: sHappen = "They didn't make it out of"; sEnd = "."; break;
case 17: sHappen = "I lost that magic item in"; sEnd = "."; break;
case 18: sHappen = "Did you lose it in"; sEnd = "?"; break;
case 19: sHappen = "We should go search in"; sEnd = "."; break;
case 20: sHappen = "We should go explore in"; sEnd = "."; break;
case 21: sHappen = "Tonight we will go to"; sEnd = "."; break;
case 22: sHappen = sThey + " was lost in"; sEnd = "."; break;
case 23: sHappen = sThey + " died in"; sEnd = "."; break;
case 24: sHappen = sThey + " lost that weapon in"; sEnd = "."; break;
case 25: sHappen = "When did " + sThey + " go to"; sEnd = "?"; break;
case 26: sHappen = "How did " + sThey + " get to"; sEnd = "?"; break;
case 27: sHappen = "Why did " + sThey + " go to"; sEnd = "?"; break;
case 28: sHappen = "What did " + sThey + " find in"; sEnd = "?"; break;
case 29: sHappen = sThey + " found that in"; sEnd = "?"; break;
case 30: sHappen = sThey + " has never been to"; sEnd = "."; break;
case 31: sHappen = sThey + " vanished in"; sEnd = "."; break;
case 32: sHappen = sThey + " almost didn't make it out of"; sEnd = "."; break;
case 33: sHappen = sThey + " didn't make it out of"; sEnd = "."; break;
case 34: sHappen = sThey + " lost that magic item in"; sEnd = "."; break;
case 35: sHappen = "Did " + sThey + " lose it in"; sEnd = "?"; break;
}
string sEvent = sHappen + " " + dungeon + sEnd;
int iWillSay = Utility.RandomMinMax( 1, 8 );
if ( iWillSay < 3 )
{
switch( Utility.RandomMinMax( 1, 39 ) )
{
case 1: m.PlaySound( m.Female ? 778 : 1049 ); m.Say( "*ah!*" ); break;
case 2: m.PlaySound( m.Female ? 779 : 1050 ); m.Say( "Ah ha!" ); break;
case 3: m.PlaySound( m.Female ? 780 : 1051 ); m.Say( "*applauds*" ); break;
case 4: m.PlaySound( m.Female ? 781 : 1052 ); m.Say( "*blows nose*" ); break;
case 5: m.PlaySound( m.Female ? 786 : 1057 ); m.Say( "*cough*" ); break;
case 6: m.PlaySound( m.Female ? 782 : 1053 ); m.Say( "*burp*" ); break;
case 7: m.PlaySound( m.Female ? 784 : 1055 ); m.Say( "*clears throat*" ); break;
case 8: m.PlaySound( m.Female ? 785 : 1056 ); m.Say( "*cough*" ); break;
case 9: m.PlaySound( m.Female ? 787 : 1058 ); m.Say( "*cries*" ); break;
case 10: m.PlaySound( m.Female ? 792 : 1064 ); m.Say( "*farts*" ); break;
case 11: m.PlaySound( m.Female ? 793 : 1065 ); m.Say( "*gasp*" ); break;
case 12: m.PlaySound( m.Female ? 794 : 1066 ); m.Say( "*giggles*" ); break;
case 13: m.PlaySound( m.Female ? 0x31B : 0x42B ); m.Say( "*groans*" ); break;
case 14: m.PlaySound( m.Female ? 0x338 : 0x44A ); m.Say( "*growls*" ); break;
case 15: m.PlaySound( m.Female ? 797 : 1069 ); m.Say( "Hey!" ); break;
case 16: m.PlaySound( m.Female ? 798 : 1070 ); m.Say( "*hiccup*" ); break;
case 17: m.PlaySound( m.Female ? 799 : 1071 ); m.Say( "Huh?" ); break;
case 18: m.PlaySound( m.Female ? 801 : 1073 ); m.Say( "*laughs*" ); break;
case 19: m.PlaySound( m.Female ? 802 : 1074 ); m.Say( "No!" ); break;
case 20: m.PlaySound( m.Female ? 803 : 1075 ); m.Say( "Oh!" ); break;
case 21: m.PlaySound( m.Female ? 811 : 1085 ); m.Say( "Oooh." ); break;
case 22: m.PlaySound( m.Female ? 812 : 1086 ); m.Say( "Oops!" ); break;
case 23: m.PlaySound( m.Female ? 0x32E : 0x440 ); m.Say( "Ahhhh!" ); break;
case 24: m.PlaySound( m.Female ? 815 : 1089 ); m.Say( "Shhh!" ); break;
case 25: m.PlaySound( m.Female ? 816 : 1090 ); m.Say( "*sigh*" ); break;
case 26: m.PlaySound( m.Female ? 817 : 1091 ); m.Say( "Ahh-choo!" ); break;
case 27: m.PlaySound( m.Female ? 818 : 1092 ); m.Say( "*sniff*" ); break;
case 28: m.PlaySound( m.Female ? 819 : 1093 ); m.Say( "*snore*" ); break;
case 29: m.PlaySound( m.Female ? 820 : 1094 ); m.Say( "*spits*" ); break;
case 30: m.PlaySound( m.Female ? 821 : 1095 ); m.Say( "*whistles*" ); break;
case 31: m.PlaySound( m.Female ? 783 : 1054 ); m.Say( "Woohoo!" ); break;
case 32: m.PlaySound( m.Female ? 822 : 1096 ); m.Say( "*yawns*" ); break;
case 33: m.PlaySound( m.Female ? 823 : 1097 ); m.Say( "Yea!" ); break;
case 34: m.PlaySound( m.Female ? 0x31C : 0x42C ); m.Say( "*yells*" ); break;
case 35: m.PlaySound( Utility.RandomList( 0x30, 0x2D6 ) ); break;
case 36: m.PlaySound( Utility.RandomList( 0x30, 0x2D6 ) ); break;
case 37: m.PlaySound( Utility.RandomList( 0x30, 0x2D6 ) ); break;
case 38: m.PlaySound( Utility.RandomList( 0x30, 0x2D6 ) ); break;
case 39: m.PlaySound( Utility.RandomList( 0x30, 0x2D6 ) ); break;
}
}
else if ( iWillSay < 5 ){ m.Say( sEvent ); }
else { m.Say( sSpeech ); }
}
}
}

View file

@ -0,0 +1,264 @@
using System;
using Server.Items;
using Server.Misc;
namespace Server.Misc
{
class CitizenTitles
{
public static string CitizenTitle( Mobile m )
{
string sTitle = "";
string myTitle = "";
int otitle = Utility.RandomMinMax( 1, 33 );
if (otitle == 1){sTitle = "of the North";}
else if (otitle == 2){sTitle = "of the South";}
else if (otitle == 3){sTitle = "of the East";}
else if (otitle == 4){sTitle = "of the West";}
else if (otitle == 5){sTitle = "of the City";}
else if (otitle == 6){sTitle = "of the Hills";}
else if (otitle == 7){sTitle = "of the Mountains";}
else if (otitle == 8){sTitle = "of the Plains";}
else if (otitle == 9){sTitle = "of the Woods";}
else if (otitle == 10){sTitle = "of the Light";}
else if (otitle == 11){sTitle = "of the Dark";}
else if (otitle == 12){sTitle = "of the Night";}
else if (otitle == 13){sTitle = "of the Sea";}
else if (otitle == 14){sTitle = "of the Desert";}
else if (otitle == 15){sTitle = "of the Order";}
else if (otitle == 16){sTitle = "of the Forest";}
else if (otitle == 17){sTitle = "of the Snow";}
else if (otitle == 18){sTitle = "of the Coast";}
else if (otitle == 19){sTitle = "of the Arid Wastes";}
else if (otitle == 20){sTitle = "of the Beetling Brow";}
else if (otitle == 21){sTitle = "of the Cyclopean City";}
else if (otitle == 22){sTitle = "of the Dread Wilds";}
else if (otitle == 23){sTitle = "of the Eerie Eyes";}
else if (otitle == 24){sTitle = "of the Foetid Swamp";}
else if (otitle == 25){sTitle = "of the Forgotten City";}
else if (otitle == 26){sTitle = "of the Haunted Heath";}
else if (otitle == 27){sTitle = "of the Hidden Valley";}
else if (otitle == 28){sTitle = "of the Howling Hills";}
else if (otitle == 29){sTitle = "of the Jagged Peaks";}
else if (otitle == 30){sTitle = "of the Menacing Mien";}
else if (otitle == 31){sTitle = "of the Savage Isle";}
else if (otitle == 32){sTitle = "of the Tangled Woods";}
else {sTitle = "of the Watchful Eyes";}
string sColor = "Red";
switch( Utility.RandomMinMax( 0, 9 ) )
{
case 0: sColor = "Black"; break;
case 1: sColor = "Blue"; break;
case 2: sColor = "Gray"; break;
case 3: sColor = "Green"; break;
case 4: sColor = "Red"; break;
case 5: sColor = "Brown"; break;
case 6: sColor = "Orange"; break;
case 7: sColor = "Yellow"; break;
case 8: sColor = "Purple"; break;
case 9: sColor = "White"; break;
}
string gColor = "Gold";
switch( Utility.RandomMinMax( 0, 11 ) )
{
case 0: gColor = "Gold"; break;
case 1: gColor = "Silver"; break;
case 2: gColor = "Arcane"; break;
case 3: gColor = "Iron"; break;
case 4: gColor = "Steel"; break;
case 5: gColor = "Emerald"; break;
case 6: gColor = "Ruby"; break;
case 7: gColor = "Bronze"; break;
case 8: gColor = "Jade"; break;
case 9: gColor = "Sapphire"; break;
case 10: gColor = "Copper"; break;
case 11: gColor = "Royal"; break;
}
string kKiller = "Giants";
switch( Utility.RandomMinMax( 0, 12 ) )
{
case 0: kKiller = "Giants"; break;
case 1: kKiller = "Dragons"; break;
case 2: kKiller = "Ogres"; break;
case 3: kKiller = "Trolls"; break;
case 4: kKiller = "Daemons"; break;
case 5: kKiller = "Devils"; break;
case 6: kKiller = "Lizards"; break;
case 7: kKiller = "Orcs"; break;
case 8: kKiller = "Minotaurs"; break;
case 9: kKiller = "Monsters"; break;
case 10: kKiller = "Undead"; break;
case 11: kKiller = "Serpents"; break;
case 12: kKiller = "Vampires"; break;
}
string mKiller = "Giant";
switch( Utility.RandomMinMax( 0, 12 ) )
{
case 0: mKiller = "Giant"; break;
case 1: mKiller = "Dragon"; break;
case 2: mKiller = "Ogre"; break;
case 3: mKiller = "Troll"; break;
case 4: mKiller = "Daemon"; break;
case 5: mKiller = "Devil"; break;
case 6: mKiller = "Lizard"; break;
case 7: mKiller = "Orc"; break;
case 8: mKiller = "Minotaur"; break;
case 9: mKiller = "Monster"; break;
case 10: mKiller = "Undead"; break;
case 11: mKiller = "Serpent"; break;
case 12: mKiller = "Vampire"; break;
}
string aKiller = "Slayer";
switch( Utility.RandomMinMax( 0, 4 ) )
{
case 0: aKiller = "Slayer"; break;
case 1: aKiller = "Killer"; break;
case 2: aKiller = "Butcher"; break;
case 3: aKiller = "Executioner"; break;
case 4: aKiller = "Hunter"; break;
}
switch ( Utility.RandomMinMax( 0, 107 ) )
{
case 0: myTitle = "from Above"; break;
case 1: myTitle = "from Afar"; break;
case 2: myTitle = "from Below"; break;
case 3: myTitle = "of the " + sColor + " Cloak"; break;
case 4: myTitle = "of the " + sColor + " Robe"; break;
case 5: myTitle = "of the " + sColor + " Order"; break;
case 6: myTitle = "of the " + gColor + " Shield"; break;
case 7: myTitle = "of the " + gColor + " Sword"; break;
case 8: myTitle = "of the " + gColor + " Helm"; break;
case 9: myTitle = sTitle; break;
case 10: myTitle = sTitle; break;
case 11: myTitle = sTitle; break;
case 12: myTitle = sTitle; break;
case 13: myTitle = sTitle; break;
case 14: myTitle = sTitle; break;
case 15: myTitle = sTitle; break;
case 16: myTitle = sTitle; break;
case 17: myTitle = sTitle; break;
case 18: myTitle = sTitle; break;
case 19: myTitle = sTitle; break;
case 20: myTitle = sTitle; break;
case 21: myTitle = sTitle; break;
case 22: myTitle = "the " + sColor; break;
case 23: myTitle = "the Adept"; break;
case 24: myTitle = "the Nomad"; break;
case 25: myTitle = "the Antiquarian"; break;
case 26: myTitle = "the Arcane"; break;
case 27: myTitle = "the Archaic"; break;
case 28: myTitle = "the Barbarian"; break;
case 29: myTitle = "the Batrachian"; break;
case 30: myTitle = "the Battler"; break;
case 31: myTitle = "the Bilious"; break;
case 32: myTitle = "the Bold"; break;
case 33: myTitle = "the Fearless"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Brave";} break;
case 34: myTitle = "the Savage"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Civilized";} break;
case 35: myTitle = "the Collector"; break;
case 36: myTitle = "the Cryptic"; break;
case 37: myTitle = "the Curious"; break;
case 38: myTitle = "the Dandy"; break;
case 39: myTitle = "the Daring"; break;
case 40: myTitle = "the Decadent"; break;
case 41: myTitle = "the Delver"; break;
case 42: myTitle = "the Distant"; break;
case 43: myTitle = "the Eldritch"; break;
case 44: myTitle = "the Exotic"; break;
case 45: myTitle = "the Explorer"; break;
case 46: myTitle = "the Fair"; break;
case 47: myTitle = "the Strong"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Weak";} break;
case 48: myTitle = "the Fickle"; break;
case 49:
int iDice = Utility.RandomMinMax( 1, 10 );
if (iDice == 1){myTitle = "the First";}
else if (iDice == 2){myTitle = "the Second";}
else if (iDice == 3){myTitle = "the Third";}
else if (iDice == 4){myTitle = "the Fourth";}
else if (iDice == 5){myTitle = "the Fifth";}
else if (iDice == 6){myTitle = "the Sixth";}
else if (iDice == 7){myTitle = "the Seventh";}
else if (iDice == 8){myTitle = "the Eighth";}
else if (iDice == 9){myTitle = "the Ninth";}
else {myTitle = "the Tenth";}
break;
case 50: myTitle = "the Foul"; break;
case 51: myTitle = "the Furtive"; break;
case 52: myTitle = "the Gambler"; break;
case 53: myTitle = "the Ghastly"; break;
case 54: myTitle = "the Gibbous"; break;
case 55: myTitle = "the Great"; break;
case 56: myTitle = "the Grizzled"; break;
case 57: myTitle = "the Gruff"; break;
case 58: myTitle = "the Spiritual"; break;
case 59: myTitle = "the Haunted"; break;
case 60: myTitle = "the Calm"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Frantic";} break;
case 61:
int iDice2 = Utility.RandomMinMax( 1, 4 );
if (iDice2 == 1){myTitle = "the Hooded";}
else if (iDice2 == 2){myTitle = "the Cloaked";}
else if (iDice2 == 3){myTitle = "the Cowled";}
else {myTitle = "the Robed";}
break;
case 62: myTitle = "the Hunter"; break;
case 63: myTitle = "the Imposing"; break;
case 64: myTitle = "the Irreverent"; break;
case 65: myTitle = "the Loathsome"; break;
case 66:
int iDice3 = Utility.RandomMinMax( 1, 3 );
if (iDice3 == 1){myTitle = "the Quiet";}
else if (iDice3 == 2){myTitle = "the Silent";}
else {myTitle = "the Loud";}
break;
case 67: myTitle = "the Lovely"; break;
case 68: myTitle = "the Mantled"; break;
case 69: myTitle = "the Masked"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Veiled";} break;
case 70: myTitle = "the Merciful"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Merciless";} break;
case 71: myTitle = "the Mercurial"; break;
case 72: myTitle = "the Mighty"; break;
case 73: myTitle = "the Morose"; break;
case 74: myTitle = "the Mutable"; break;
case 75: myTitle = "the Mysterious"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Unknown";} break;
case 76: myTitle = "the Obscure"; break;
case 77: myTitle = "the Old"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Young";} break;
case 78: myTitle = "the Ominous"; break;
case 79: myTitle = "the Peculiar"; break;
case 80: myTitle = "the Perceptive"; break;
case 81: myTitle = "the Pious"; break;
case 82: myTitle = "the Quick"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Slow";} break;
case 83: myTitle = "the Ragged"; break;
case 84: myTitle = "the Ready"; break;
case 85: myTitle = "the Rough"; break;
case 86: myTitle = "the Rugose"; break;
case 87: myTitle = "the Scarred"; break;
case 88: myTitle = "the Searcher"; break;
case 89: myTitle = "the Shadowy"; break;
case 90: myTitle = "the Short"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Tall";} break;
case 91: myTitle = "the Steady"; break;
case 92: myTitle = "the Uncanny"; break;
case 93: myTitle = "the Unexpected"; break;
case 94: myTitle = "the Unknowable"; break;
case 95: myTitle = "the Verbose"; break;
case 96: myTitle = "the Vigorous"; break;
case 97: myTitle = "the Traveler"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Wanderer";} break;
case 98: myTitle = "the Wary"; break;
case 99: myTitle = "the Weird"; break;
case 100: myTitle = "the Steady"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Unready";} break;
case 101: myTitle = "the Gentle"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Cruel";} break;
case 102: myTitle = "the Lost"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Exiled";} break;
case 103: myTitle = "the Careless"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Clumsy";} break;
case 104: myTitle = "the Hopeful"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Trustful";} break;
case 105: myTitle = "the Angry"; if (Utility.RandomMinMax( 1, 2 ) == 1){myTitle = "the Timid";} break;
case 106: myTitle = "the " + aKiller + " of " + kKiller; break;
case 107: myTitle = "the " + mKiller + " " + aKiller; break;
}
return myTitle;
}
}
}

View file

@ -0,0 +1,202 @@
using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;
using Server.Spells.Seventh;
namespace Server.Mobiles
{
public class Guard : BaseCreature
{
public override bool ClickTitle{ get{ return false; } }
public override bool DeleteCorpseOnDeath{ get{ return true; } }
[Constructable]
public Guard() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
SpeechHue = Utility.RandomSpeechHue();
Title = "the guard";
Hue = Utility.RandomSkinHue();
NameHue = 1154;
Clan = Clan.Citizen;
int hair = Utility.RandomHairHue();
if ( this.Female = Utility.RandomBool() )
{
Body = 0x191;
Name = NameList.RandomName( "female" );
}
else
{
Body = 0x190;
Name = NameList.RandomName( "male" );
if ( Utility.RandomBool() ){ Utility.AssignRandomFacialHair( this, hair ); }
}
Utility.AssignRandomHair( this, hair );
SetStr( 300 );
SetDex( 100 );
SetInt( 75 );
SetDamage( 30, 50 );
SetSkill( SkillName.MagicResist, 100.0 );
SetSkill( SkillName.Swords, 100.0 );
SetSkill( SkillName.Fencing, 100.0 );
SetSkill( SkillName.Parry, 100.0 );
SetSkill( SkillName.Tactics, 100.0 );
}
public override void OnAfterSpawn()
{
if ( X > 936 && Y > 694 && X < 1660 && Y < 1040 ) // YEW
{
AddItem( new Bascinet() );
AddItem( new StuddedArms() );
AddItem( new StuddedChest() );
AddItem( new StuddedGorget() );
AddItem( new StuddedLegs() );
AddItem( new StuddedGloves() );
AddItem( new Longsword() );
AddItem( new WoodenShield() );
AddItem( new Boots() );
}
else if ( X > 1867 && Y > 1953 && X < 2147 && Y < 2204 ) // PAWS
{
AddItem( new Helmet() );
AddItem( new RingmailArms() );
AddItem( new RingmailChest() );
AddItem( new StuddedGorget() );
AddItem( new RingmailLegs() );
AddItem( new RingmailGloves() );
AddItem( new Spear() );
AddItem( new Boots() );
}
else if ( X > 2439 && Y > 1354 && X < 2844 && Y < 1528 ) // COVE
{
AddItem( new ChainCoif() );
AddItem( new LeatherArms() );
AddItem( new LeatherChest() );
AddItem( new LeatherGorget() );
AddItem( new LeatherLegs() );
AddItem( new LeatherGloves() );
AddItem( new Longsword() );
AddItem( new WoodenKiteShield() );
AddItem( new Boots() );
}
else if ( X > 2565 && Y > 322 && X < 3096 && Y < 655 ) // MINOC
{
AddItem( new NorseHelm() );
AddItem( new RingmailArms() );
AddItem( new RingmailChest() );
AddItem( new StuddedGorget() );
AddItem( new RingmailLegs() );
AddItem( new RingmailGloves() );
AddItem( new Pike() );
AddItem( new Cloak( Utility.RandomNeutralHue() ) );
AddItem( new Boots() );
}
else
{
AddItem( new PlateHelm() );
AddItem( new PlateArms() );
AddItem( new PlateChest() );
AddItem( new PlateGorget() );
AddItem( new PlateLegs() );
AddItem( new PlateGloves() );
AddItem( new Halberd() );
}
}
public override bool IsEnemy( Mobile m )
{
if ( !(this.CanSee( m )) || !(this.InLOS( m )) )
return false;
if ( m.AccessLevel > AccessLevel.Player )
return false;
if ( DisguiseTimers.IsDisguised( m ) )
return false;
if( !m.CanBeginAction( typeof( PolymorphSpell ) ) )
return false;
if ( m is Guard )
return false;
if ( m is PlayerMobile && ( m.Kills >= 5 || m.Criminal ) )
return true;
if ( m is BaseCreature && ((BaseCreature)m).ControlMaster != null && ((BaseCreature)m).ControlMaster is PlayerMobile && ((BaseCreature)m).ControlMaster == m && ( m.Kills >= 5 || m.Criminal ) )
return true;
if ( m is BaseCreature && ((BaseCreature)m).SummonMaster != null && ((BaseCreature)m).SummonMaster is PlayerMobile && ((BaseCreature)m).SummonMaster == m && ( m.Kills >= 5 || m.Criminal ) )
return true;
if ( m is BaseCreature && ((BaseCreature)m).FightMode == FightMode.Closest )
return true;
if ( m is BaseCreature && ((BaseCreature)m).FightMode == FightMode.Aggressor && ((BaseCreature)m).AI == AIType.AI_Animal && m.Fame > 150 && m.Combatant is PlayerMobile )
return true;
return false;
}
public override void OnGotMeleeAttack( Mobile attacker )
{
base.OnGotMeleeAttack( attacker );
Hits = HitsMax;
Stam = StamMax;
}
public override void OnThink()
{
if ( ( Math.Abs( this.X-this.Home.X ) > 8 || Math.Abs( this.Y-this.Home.Y ) > 8 || Math.Abs( this.Z-this.Home.Z ) > 8 ) && Combatant == null )
{
this.Location = this.Home;
}
base.OnThink();
}
public override void OnGaveMeleeAttack( Mobile defender )
{
base.OnGaveMeleeAttack( defender );
Hits = HitsMax;
Stam = StamMax;
switch ( Utility.Random( 8 ))
{
case 0: Say("Die villian!"); break;
case 1: Say("I will bring you justice!"); break;
case 2: Say("So, " + defender.Name + "? Your evil ends here!"); break;
case 3: Say("We have been told to watch for " + defender.Name + "!"); break;
case 4: Say("Fellow guardsmen, " + defender.Name + " is here!"); break;
case 5: Say("We have ways of dealing with the likes of " + defender.Name + "!"); break;
case 6: Say("Give up! We do not fear " + defender.Name + "!"); break;
case 7: Say("So, " + defender.Name + "? I sentence you to death!"); break;
};
}
public Guard( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using System.Collections;
using Server;
namespace Server.Mobiles
{
public class AlchemistGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.AlchemistsGuild; } }
[Constructable]
public AlchemistGuildmaster() : base( "alchemist" )
{
SetSkill( SkillName.MagicResist, 64.0, 100.0 );
SetSkill( SkillName.HandToHand, 60.0, 83.0 );
SetSkill( SkillName.Meditation, 85.0, 100.0 );
SetSkill( SkillName.Bludgeoning, 36.0, 68.0 );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBAlchemist() );
SBInfos.Add( new SBGuildAlchemist() );
SBInfos.Add( new SBGuildMage() );
}
public AlchemistGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,74 @@
using System;
using System.Collections;
using Server;
using Server.Items;
namespace Server.Mobiles
{
public class AssassinGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.AssassinsGuild; } }
[Constructable]
public AssassinGuildmaster() : base( "assassin" )
{
SetSkill( SkillName.Hiding, 65.0, 88.0 );
SetSkill( SkillName.Poisoning, 60.0, 83.0 );
SetSkill( SkillName.Fencing, 75.0, 98.0 );
SetSkill( SkillName.Stealth, 85.0, 100.0 );
SetSkill( SkillName.Tactics, 85.0, 100.0 );
}
public override void InitOutfit()
{
int color = 0x966;
Item L1 = new LeatherArms(); L1.Hue = color;
Item L2 = new LeatherChest(); L2.Hue = color;
Item L3 = new LeatherGloves(); L3.Hue = color;
Item L4 = new LeatherGorget(); L4.Hue = color;
Item L5 = new LeatherLegs(); L5.Hue = color;
AddItem( L1 );
AddItem( L2 );
AddItem( L3 );
AddItem( L4 );
AddItem( L5 );
AddItem( new Hood( color ) );
AddItem( new Dagger() );
AddItem( new Boots() );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBAssassin() );
SBInfos.Add( new SBKnifeWeapon() );
SBInfos.Add( new SBLeatherArmor() );
SBInfos.Add( new SBStuddedArmor() );
}
public override void SayWelcomeTo( Mobile m )
{
SayTo( m, 1008053 ); // Welcome to the guild! Stay to the shadows, friend.
}
public AssassinGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,52 @@
using System;
using System.Collections;
using Server;
using Server.Items;
namespace Server.Mobiles
{
public class BardGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.BardsGuild; } }
[Constructable]
public BardGuildmaster() : base( "bard" )
{
SetSkill( SkillName.Archery, 80.0, 100.0 );
SetSkill( SkillName.Discordance, 80.0, 100.0 );
SetSkill( SkillName.Musicianship, 80.0, 100.0 );
SetSkill( SkillName.Peacemaking, 80.0, 100.0 );
SetSkill( SkillName.Provocation, 80.0, 100.0 );
SetSkill( SkillName.Swords, 80.0, 100.0 );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBBard() );
}
public override void InitOutfit()
{
base.InitOutfit();
AddItem( new FeatheredHat( Utility.RandomHue() ) );
}
public BardGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,49 @@
using System;
using System.Collections;
using Server;
namespace Server.Mobiles
{
public class BlacksmithGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.BlacksmithsGuild; } }
[Constructable]
public BlacksmithGuildmaster() : base( "blacksmith" )
{
SetSkill( SkillName.Bludgeoning, 36.0, 68.0 );
SetSkill( SkillName.Parry, 36.0, 68.0 );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBBlacksmith() );
SBInfos.Add( new SBMiner() );
SBInfos.Add( new SBGuildSmith() );
}
public override void InitOutfit()
{
base.InitOutfit();
AddItem( new Server.Items.FullApron() );
}
public BlacksmithGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,44 @@
using System;
using System.Collections;
using Server;
namespace Server.Mobiles
{
public class CarpentryGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.CarpentryGuild; } }
[Constructable]
public CarpentryGuildmaster() : base( "carpentry" )
{
SetSkill( SkillName.Bludgeoning, 36.0, 68.0 );
SetSkill( SkillName.Parry, 36.0, 68.0 );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBStavesWeapon() );
SBInfos.Add( new SBCarpenter() );
SBInfos.Add( new SBWoodenShields() );
SBInfos.Add( new SBGuildCarpenter() );
}
public CarpentryGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,50 @@
using System;
using System.Collections;
using Server;
namespace Server.Mobiles
{
public class HealerGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.HealersGuild; } }
[Constructable]
public HealerGuildmaster() : base( "healer" )
{
SetSkill( SkillName.Healing, 90.0, 100.0 );
SetSkill( SkillName.MagicResist, 75.0, 98.0 );
SetSkill( SkillName.HandToHand, 60.0, 83.0 );
SetSkill( SkillName.Bludgeoning, 36.0, 68.0 );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBHealer() );
SBInfos.Add( new SBGuildHealer() );
}
public override void InitOutfit()
{
base.InitOutfit();
AddItem( new Server.Items.GnarledStaff() );
}
public HealerGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,53 @@
using System;
using System.Collections;
using Server;
namespace Server.Mobiles
{
public class LibraryGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.LibrariansGuild; } }
[Constructable]
public LibraryGuildmaster() : base( "librarian" )
{
SetSkill( SkillName.Concentration, 85.0, 100.0 );
SetSkill( SkillName.MagicResist, 64.0, 100.0 );
SetSkill( SkillName.Magery, 90.0, 100.0 );
SetSkill( SkillName.HandToHand, 60.0, 83.0 );
SetSkill( SkillName.Meditation, 85.0, 100.0 );
SetSkill( SkillName.Bludgeoning, 36.0, 68.0 );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBScribe() );
SBInfos.Add( new SBMapmaker() );
SBInfos.Add( new SBGuildScribe() );
}
public override void InitOutfit()
{
base.InitOutfit();
AddItem( new Server.Items.GnarledStaff() );
}
public LibraryGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,52 @@
using System;
using System.Collections;
using Server;
namespace Server.Mobiles
{
public class MageGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.MagesGuild; } }
[Constructable]
public MageGuildmaster() : base( "mage" )
{
SetSkill( SkillName.Concentration, 85.0, 100.0 );
SetSkill( SkillName.MagicResist, 64.0, 100.0 );
SetSkill( SkillName.Magery, 90.0, 100.0 );
SetSkill( SkillName.HandToHand, 60.0, 83.0 );
SetSkill( SkillName.Meditation, 85.0, 100.0 );
SetSkill( SkillName.Bludgeoning, 36.0, 68.0 );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBMage() );
SBInfos.Add( new SBGuildMage() );
}
public override void InitOutfit()
{
base.InitOutfit();
AddItem( new Server.Items.GnarledStaff() );
}
public MageGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,48 @@
using System;
using System.Collections;
using Server;
using Server.Items;
namespace Server.Mobiles
{
public class MarinerGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.MarinersGuild; } }
[Constructable]
public MarinerGuildmaster() : base( "mariner" )
{
SetSkill( SkillName.Bludgeoning, 56.0, 88.0 );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBShipwright() );
SBInfos.Add( new SBFisherman() );
}
public override void InitOutfit()
{
base.InitOutfit();
AddItem( new TricorneHat( Utility.RandomHue() ) );
}
public MarinerGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,71 @@
using System;
using System.Collections;
using Server;
using Server.Items;
namespace Server.Mobiles
{
public class RangerGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.RangersGuild; } }
[Constructable]
public RangerGuildmaster() : base( "ranger" )
{
SetSkill( SkillName.Hiding, 75.0, 98.0 );
SetSkill( SkillName.MagicResist, 75.0, 98.0 );
SetSkill( SkillName.Tactics, 65.0, 88.0 );
SetSkill( SkillName.Archery, 90.0, 100.0 );
SetSkill( SkillName.Tracking, 90.0, 100.0 );
SetSkill( SkillName.Stealth, 60.0, 83.0 );
SetSkill( SkillName.Fencing, 36.0, 68.0 );
SetSkill( SkillName.Swords, 45.0, 68.0 );
}
public override void InitOutfit()
{
AddItem( new StuddedArms() );
AddItem( new StuddedChest() );
AddItem( new StuddedGloves() );
AddItem( new StuddedGorget() );
AddItem( new StuddedLegs() );
AddItem( new LeatherCap() );
AddItem( new Boots() );
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;
}
}
public override void InitSBInfo()
{
SBInfos.Add( new SBBowyer() );
SBInfos.Add( new SBRangedWeapon() );
SBInfos.Add( new SBLeatherArmor() );
SBInfos.Add( new SBStuddedArmor() );
SBInfos.Add( new SBGuildRanger() );
}
public RangerGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,41 @@
using System;
using System.Collections;
using Server;
namespace Server.Mobiles
{
public class TailorGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.TailorsGuild; } }
[Constructable]
public TailorGuildmaster() : base( "tailor" )
{
}
public override void InitSBInfo()
{
SBInfos.Add( new SBTailor() );
SBInfos.Add( new SBWeaver() );
SBInfos.Add( new SBGuildTailor() );
}
public TailorGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,68 @@
using System;
using System.Collections;
using Server;
using Server.Items;
namespace Server.Mobiles
{
public class ThiefGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.ThievesGuild; } }
[Constructable]
public ThiefGuildmaster() : base( "thief" )
{
SetSkill( SkillName.Searching, 75.0, 98.0 );
SetSkill( SkillName.Hiding, 65.0, 88.0 );
SetSkill( SkillName.Lockpicking, 85.0, 100.0 );
SetSkill( SkillName.Stealing, 90.0, 100.0 );
SetSkill( SkillName.Fencing, 75.0, 98.0 );
SetSkill( SkillName.Stealth, 85.0, 100.0 );
SetSkill( SkillName.RemoveTrap, 85.0, 100.0 );
}
public override void InitOutfit()
{
AddItem( new LeatherArms() );
AddItem( new LeatherChest() );
AddItem( new LeatherGloves() );
AddItem( new LeatherGorget() );
AddItem( new LeatherLegs() );
AddItem( new Hood( 0x83E ) );
AddItem( new Dagger() );
AddItem( new Boots() );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBThief() );
SBInfos.Add( new SBGuildThief() );
SBInfos.Add( new SBKnifeWeapon() );
SBInfos.Add( new SBLeatherArmor() );
SBInfos.Add( new SBStuddedArmor() );
}
public override void SayWelcomeTo( Mobile m )
{
SayTo( m, 1008053 ); // Welcome to the guild! Stay to the shadows, friend.
}
public ThiefGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Server;
using Server.Items;
using Server.ContextMenus;
namespace Server.Mobiles
{
public class TinkerGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.TinkersGuild; } }
[Constructable]
public TinkerGuildmaster() : base( "tinker" )
{
SetSkill( SkillName.Lockpicking, 65.0, 88.0 );
SetSkill( SkillName.RemoveTrap, 85.0, 100.0 );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBTinker() );
SBInfos.Add( new SBGuildSmith() );
}
public TinkerGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,76 @@
using System;
using System.Collections;
using Server;
using Server.Items;
namespace Server.Mobiles
{
public class WarriorGuildmaster : BaseGuildmaster
{
public override NpcGuild NpcGuild{ get{ return NpcGuild.WarriorsGuild; } }
[Constructable]
public WarriorGuildmaster() : base( "warrior" )
{
SetSkill( SkillName.Parry, 85.0, 100.0 );
SetSkill( SkillName.MagicResist, 60.0, 83.0 );
SetSkill( SkillName.Tactics, 85.0, 100.0 );
SetSkill( SkillName.Swords, 90.0, 100.0 );
SetSkill( SkillName.Bludgeoning, 60.0, 83.0 );
SetSkill( SkillName.Fencing, 60.0, 83.0 );
}
public override void InitSBInfo()
{
SBInfos.Add( new SBMetalShields() );
SBInfos.Add( new SBPlateArmor() );
SBInfos.Add( new SBHelmetArmor() );
SBInfos.Add( new SBChainmailArmor() );
SBInfos.Add( new SBRingmailArmor() );
SBInfos.Add( new SBAxeWeapon() );
SBInfos.Add( new SBKnifeWeapon() );
SBInfos.Add( new SBMaceWeapon() );
SBInfos.Add( new SBPoleArmWeapon() );
SBInfos.Add( new SBSpearForkWeapon() );
SBInfos.Add( new SBSwordWeapon() );
}
public override void InitOutfit()
{
AddItem( new PlateArms() );
AddItem( new PlateChest() );
AddItem( new PlateGloves() );
AddItem( new PlateGorget() );
AddItem( new PlateLegs() );
switch ( Utility.Random( 4 ) )
{
case 0: AddItem( new PlateHelm() ); break;
case 1: AddItem( new NorseHelm() ); break;
case 2: AddItem( new CloseHelm() ); break;
case 3: AddItem( new Helmet() ); break;
}
AddItem( new Broadsword() );
AddItem( new MetalShield() );
}
public WarriorGuildmaster( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,70 @@
using System;
using Server;
namespace Server.Mobiles
{
public class Healer : BaseHealer
{
public override bool CanTeach{ get{ return true; } }
public override bool CheckTeach( SkillName skill, Mobile from )
{
if ( !base.CheckTeach( skill, from ) )
return false;
return ( skill == SkillName.Healing );
}
[Constructable]
public Healer()
{
Title = "the healer";
SetSkill( SkillName.Healing, 80.0, 100.0 );
}
public override bool IsActiveVendor{ get{ return true; } }
public override void InitSBInfo()
{
SBInfos.Add( new SBHealer() );
}
public override bool CheckResurrect( Mobile m )
{
if ( m.Criminal && !Server.Misc.NotorietyHandlers.CriminalTolerated( m ) )
{
Say( 501222 ); // Thou art a criminal. I shall not resurrect thee.
return false;
}
else if ( m.Kills >= 5 && !Server.Misc.NotorietyHandlers.CriminalTolerated( m ) )
{
Say( 501223 ); // Thou'rt not a decent and good person. I shall not resurrect thee.
return false;
}
else if ( m.Karma < 0 )
{
Say( 501224 ); // Thou hast strayed from the path of virtue, but thou still deservest a second chance.
}
return true;
}
public Healer( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBChainmailArmor: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBChainmailArmor()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( ChainCoif ), 17, 20, 0x13BB, 0 ) );
Add( new GenericBuyInfo( typeof( ChainChest ), 143, 20, 0x13BF, 0 ) );
Add( new GenericBuyInfo( typeof( ChainLegs ), 149, 20, 0x13BE, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( ChainCoif ), 6 );
Add( typeof( ChainChest ), 71 );
Add( typeof( ChainLegs ), 74 );
}
}
}
}

View file

@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBHelmetArmor: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBHelmetArmor()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( PlateHelm ), 21, 20, 0x1412, 0 ) );
Add( new GenericBuyInfo( typeof( CloseHelm ), 18, 20, 0x1408, 0 ) );
Add( new GenericBuyInfo( typeof( CloseHelm ), 18, 20, 0x1409, 0 ) );
Add( new GenericBuyInfo( typeof( Helmet ), 31, 20, 0x140A, 0 ) );
Add( new GenericBuyInfo( typeof( Helmet ), 18, 20, 0x140B, 0 ) );
Add( new GenericBuyInfo( typeof( NorseHelm ), 18, 20, 0x140E, 0 ) );
Add( new GenericBuyInfo( typeof( NorseHelm ), 18, 20, 0x140F, 0 ) );
Add( new GenericBuyInfo( typeof( Bascinet ), 18, 20, 0x140C, 0 ) );
Add( new GenericBuyInfo( typeof( PlateHelm ), 21, 20, 0x1419, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Bascinet ), 9 );
Add( typeof( CloseHelm ), 9 );
Add( typeof( Helmet ), 9 );
Add( typeof( NorseHelm ), 9 );
Add( typeof( PlateHelm ), 10 );
}
}
}
}

View file

@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBLeatherArmor: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBLeatherArmor()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( LeatherArms ), 80, 20, 0x13CD, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherChest ), 101, 20, 0x13CC, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherGloves ), 60, 20, 0x13C6, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherGorget ), 74, 20, 0x13C7, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherLegs ), 80, 20, 0x13cb, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherCap ), 10, 20, 0x1DB9, 0 ) );
Add( new GenericBuyInfo( typeof( FemaleLeatherChest ), 116, 20, 0x1C06, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherBustierArms ), 97, 20, 0x1C0A, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherShorts ), 86, 20, 0x1C00, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherSkirt ), 87, 20, 0x1C08, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( LeatherArms ), 40 );
Add( typeof( LeatherChest ), 52 );
Add( typeof( LeatherGloves ), 30 );
Add( typeof( LeatherGorget ), 37 );
Add( typeof( LeatherLegs ), 40 );
Add( typeof( LeatherCap ), 5 );
Add( typeof( FemaleLeatherChest ), 18 );
Add( typeof( FemaleStuddedChest ), 25 );
Add( typeof( LeatherShorts ), 14 );
Add( typeof( LeatherSkirt ), 11 );
Add( typeof( LeatherBustierArms ), 11 );
Add( typeof( StuddedBustierArms ), 27 );
}
}
}
}

View file

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBMetalShields : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBMetalShields()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( BronzeShield ), 66, 20, 0x1B72, 0 ) );
Add( new GenericBuyInfo( typeof( Buckler ), 50, 20, 0x1B73, 0 ) );
Add( new GenericBuyInfo( typeof( MetalKiteShield ), 123, 20, 0x1B74, 0 ) );
Add( new GenericBuyInfo( typeof( HeaterShield ), 231, 20, 0x1B76, 0 ) );
Add( new GenericBuyInfo( typeof( MetalShield ), 121, 20, 0x1B7B, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Buckler ), 25 );
Add( typeof( BronzeShield ), 33 );
Add( typeof( MetalShield ), 60 );
Add( typeof( MetalKiteShield ), 62 );
Add( typeof( HeaterShield ), 115 );
}
}
}
}

View file

@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBPlateArmor: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBPlateArmor()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( PlateGorget ), 104, 20, 0x1413, 0 ) );
Add( new GenericBuyInfo( typeof( PlateChest ), 243, 20, 0x1415, 0 ) );
Add( new GenericBuyInfo( typeof( PlateLegs ), 218, 20, 0x1411, 0 ) );
Add( new GenericBuyInfo( typeof( PlateArms ), 188, 20, 0x1410, 0 ) );
Add( new GenericBuyInfo( typeof( PlateGloves ), 155, 20, 0x1414, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( PlateArms ), 94 );
Add( typeof( PlateChest ), 121 );
Add( typeof( PlateGloves ), 72 );
Add( typeof( PlateGorget ), 52 );
Add( typeof( PlateLegs ), 109 );
Add( typeof( FemalePlateChest ), 113 );
}
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBRingmailArmor: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBRingmailArmor()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( RingmailChest ), 121, 20, 0x13ec, 0 ) );
Add( new GenericBuyInfo( typeof( RingmailLegs ), 90, 20, 0x13F0, 0 ) );
Add( new GenericBuyInfo( typeof( RingmailArms ), 85, 20, 0x13EE, 0 ) );
Add( new GenericBuyInfo( typeof( RingmailGloves ), 93, 20, 0x13eb, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( RingmailArms ), 42 );
Add( typeof( RingmailChest ), 60 );
Add( typeof( RingmailGloves ), 26 );
Add( typeof( RingmailLegs ), 45 );
}
}
}
}

View file

@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBStuddedArmor: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBStuddedArmor()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( StuddedArms ), 87, 20, 0x13DC, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedChest ), 128, 20, 0x13DB, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedGloves ), 79, 20, 0x13D5, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedGorget ), 73, 20, 0x13D6, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedLegs ), 103, 20, 0x13DA, 0 ) );
Add( new GenericBuyInfo( typeof( FemaleStuddedChest ), 142, 20, 0x1C02, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedBustierArms ), 120, 20, 0x1c0c, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( StuddedArms ), 43 );
Add( typeof( StuddedChest ), 64 );
Add( typeof( StuddedGloves ), 39 );
Add( typeof( StuddedGorget ), 36 );
Add( typeof( StuddedLegs ), 51 );
Add( typeof( FemaleStuddedChest ), 71 );
Add( typeof( StuddedBustierArms ), 60 );
}
}
}
}

View file

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBWoodenShields: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBWoodenShields()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( WoodenShield ), 30, 20, 0x1B7A, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenKiteShield ), 70, 20, 0x1B78, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( WoodenShield ), 15 );
Add( typeof( WoodenKiteShield ), 35 );
}
}
}
}

View file

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

View file

@ -0,0 +1,103 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBArchitect : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBArchitect()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( "1041280", typeof( InteriorDecorator ), 500, 20, 0x1EBA, 0 ) );
Add( new GenericBuyInfo( "1060651", typeof( HousePlacementTool ), 25, 20, 0x14F0, 0 ));
Add( new GenericBuyInfo( typeof( LadderEastAddonDeed ), 800, 10, 0x3DB5, 0 ) );
Add( new GenericBuyInfo( typeof( LadderSouthAddonDeed ), 800, 10, 0x3DB4, 0 ) );
Add( new GenericBuyInfo( typeof( MyTentEastAddonDeed ), 1200, 10, 0xA59, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( MyTentSouthAddonDeed ), 1200, 10, 0xA59, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( HouseSignAlchemy ), 120, 10, 0x0BC5, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignArchery ), 120, 10, 0x0BCD, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignArms ), 120, 10, 0x0908, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignBard ), 120, 10, 0x0BBB, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignBowyer ), 120, 10, 0x0BBD, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignBrass ), 120, 10, 0x0BD1, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignButcher ), 120, 10, 0x0BA9, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignCarpenter ), 120, 10, 0x0BAF, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignDocks ), 120, 10, 0x0906, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignFisherman ), 120, 10, 0x0B3B, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignFood ), 120, 10, 0x0BA3, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignGold ), 120, 10, 0x0C0B, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignHealer ), 120, 10, 0x0BAB, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignHerbalist ), 120, 10, 0x0A96, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignInn ), 120, 10, 0x0BB3, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignJewels ), 120, 10, 0x0BC1, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignLibrary ), 120, 10, 0x0B95, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignMage ), 120, 10, 0x0BAD, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignMaps ), 120, 10, 0x0BB1, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignMiner ), 120, 10, 0x0AA7, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignProvisions ), 120, 10, 0x0BCB, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignShipbuilder ), 120, 10, 0x0BB5, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignSmithing ), 120, 10, 0x0BC7, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignStable ), 120, 10, 0x0BB7, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignTailor ), 120, 10, 0x0BA5, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignTavern ), 120, 10, 0x0BC3, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignTinker ), 120, 10, 0x0BA7, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignWeapons ), 120, 10, 0x0BBF, 0 ) );
Add( new GenericBuyInfo( typeof( HouseSignWooden ), 120, 10, 0x0BCF, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( InteriorDecorator ), 5000 );
Add( typeof( HousePlacementTool ), 301 );
Add( typeof( MyTentEastAddonDeed ), 600 );
Add( typeof( MyTentSouthAddonDeed ), 600 );
Add( typeof( LadderEastAddonDeed ), 400 );
Add( typeof( LadderSouthAddonDeed ), 400 );
Add( typeof( HouseSignAlchemy ), 60 );
Add( typeof( HouseSignArchery ), 60 );
Add( typeof( HouseSignArms ), 60 );
Add( typeof( HouseSignBard ), 60 );
Add( typeof( HouseSignBowyer ), 60 );
Add( typeof( HouseSignBrass ), 60 );
Add( typeof( HouseSignButcher ), 60 );
Add( typeof( HouseSignCarpenter ), 60 );
Add( typeof( HouseSignDocks ), 60 );
Add( typeof( HouseSignFisherman ), 60 );
Add( typeof( HouseSignFood ), 60 );
Add( typeof( HouseSignGold ), 60 );
Add( typeof( HouseSignHealer ), 60 );
Add( typeof( HouseSignHerbalist ), 60 );
Add( typeof( HouseSignInn ), 60 );
Add( typeof( HouseSignJewels ), 60 );
Add( typeof( HouseSignLibrary ), 60 );
Add( typeof( HouseSignMage ), 60 );
Add( typeof( HouseSignMaps ), 60 );
Add( typeof( HouseSignMiner ), 60 );
Add( typeof( HouseSignProvisions ), 60 );
Add( typeof( HouseSignShipbuilder ), 60 );
Add( typeof( HouseSignSmithing ), 60 );
Add( typeof( HouseSignStable ), 60 );
Add( typeof( HouseSignTailor ), 60 );
Add( typeof( HouseSignTavern ), 60 );
Add( typeof( HouseSignTinker ), 60 );
Add( typeof( HouseSignWeapons ), 60 );
Add( typeof( HouseSignWooden ), 60 );
}
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBAssassin : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBAssassin()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( LesserPoisonPotion ), 15, Utility.RandomMinMax(50,100), 0xF0A, 0 ) );
Add( new GenericBuyInfo( typeof( PoisonPotion ), 85, Utility.RandomMinMax(25,50), 0xF0A, 0 ) );
Add( new GenericBuyInfo( typeof( GreaterPoisonPotion ), 210, Utility.RandomMinMax(12,25), 0xF0A, 0 ) );
Add( new GenericBuyInfo( typeof( OilCloth ), 28, 20, 0x175D, 2001 ) );
Add( new GenericBuyInfo( typeof( HairDye ), 37, 20, 0xEFF, 0 ) );
Add( new GenericBuyInfo( typeof( DisguiseKit ), 700, 20, 0xE05, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( OilCloth ), 14 );
Add( typeof( LesserPoisonPotion ), 7 );
Add( typeof( PoisonPotion ), 42 );
Add( typeof( GreaterPoisonPotion ), 105 );
Add( typeof( HairDye ), 19 );
Add( typeof( DisguiseKit ), 300 );
}
}
}
}

View file

@ -0,0 +1,58 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBBaker : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBBaker()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( BreadLoaf ), 6, 20, 0x103B, 0 ) );
Add( new GenericBuyInfo( typeof( BreadLoaf ), 5, 20, 0x103C, 0 ) );
Add( new GenericBuyInfo( typeof( ApplePie ), 7, 20, 0x1041, 0 ) ); //OSI just has Pie, not Apple/Fruit/Meat
Add( new GenericBuyInfo( typeof( Cake ), 13, 20, 0x9E9, 0 ) );
Add( new GenericBuyInfo( typeof( Muffins ), 3, 20, 0x9EA, 0 ) );
Add( new GenericBuyInfo( typeof( SackFlour ), 3, 20, 0x1039, 0 ) );
Add( new GenericBuyInfo( typeof( FrenchBread ), 5, 20, 0x98C, 0 ) );
Add( new GenericBuyInfo( typeof( Cookies ), 3, 20, 0x160b, 0 ) );
Add( new GenericBuyInfo( typeof( CheesePizza ), 8, 10, 0x1040, 0 ) ); // OSI just has Pizza
Add( new GenericBuyInfo( typeof( JarHoney ), 3, 20, 0x9ec, 0 ) );
Add (new GenericBuyInfo( typeof( BowlFlour ), 7, 20, 0xA1E, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( BreadLoaf ), 3 );
Add( typeof( FrenchBread ), 1 );
Add( typeof( Cake ), 5 );
Add( typeof( Cookies ), 3 );
Add( typeof( Muffins ), 2 );
Add( typeof( CheesePizza ), 4 );
Add( typeof( ApplePie ), 5 );
Add( typeof( PeachCobbler ), 5 );
Add( typeof( Quiche ), 6 );
Add( typeof( Dough ), 4 );
Add( typeof( JarHoney ), 1 );
Add( typeof( Pitcher ), 5 );
Add( typeof( SackFlour ), 1 );
Add( typeof( Eggs ), 1 );
}
}
}
}

View file

@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBBard: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBBard()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Drums ), 21, ( 10 ), 0x0E9C, 0 ) );
Add( new GenericBuyInfo( typeof( Tambourine ), 21, ( 10 ), 0x0E9E, 0 ) );
Add( new GenericBuyInfo( typeof( LapHarp ), 21, ( 10 ), 0x0EB2, 0 ) );
Add( new GenericBuyInfo( typeof( Lute ), 21, ( 10 ), 0x0EB3, 0 ) );
Add( new GenericBuyInfo( typeof( Flute ), 21, ( 10 ), 0x134E, 0 ) );
Add( new GenericBuyInfo( typeof( Pipes ), 21, ( 10 ), 0x212E, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( LapHarp ), 10 );
Add( typeof( Lute ), 10 );
Add( typeof( Drums ), 10 );
Add( typeof( Harp ), 10 );
Add( typeof( Tambourine ), 10 );
Add( typeof( Horn ), 10 );
Add( typeof( Flute ), 10 );
Add( typeof( Pipes ), 10 );
}
}
}
}

View file

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

View file

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBBeekeeper : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBBeekeeper()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( JarHoney ), 3, 20, 0x9EC, 0 ) );
Add( new GenericBuyInfo( typeof( Beeswax ), 2, Utility.RandomMinMax(40,80), 0x1422, 0 ) );
Add( new GenericBuyInfo( typeof( CandleShort ), 80, 20, 0x142F, 0 ) );
Add( new GenericBuyInfo( typeof( CandleMedium ), 160, 20, 0x1437, 0 ) );
Add( new GenericBuyInfo( typeof( CandleLong ), 190, 20, 0x1433, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( JarHoney ), 1 );
Add( typeof( Beeswax ), 1 );
Add( typeof( CandleShort ), 6 );
Add( typeof( CandleMedium ), 9 );
Add( typeof( CandleLong ), 12 );
Add( typeof( CandleSkull ), 15 );
}
}
}
}

View file

@ -0,0 +1,198 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBBlacksmith : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBBlacksmith()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( IronIngot ), 5, 16, 0x1BF2, 0 ) );
Add( new GenericBuyInfo( typeof( Tongs ), 13, 14, 0xFBB, 0 ) );
Add( new GenericBuyInfo( typeof( BronzeShield ), 66, 20, 0x1B72, 0 ) );
Add( new GenericBuyInfo( typeof( Buckler ), 50, 20, 0x1B73, 0 ) );
Add( new GenericBuyInfo( typeof( MetalKiteShield ), 123, 20, 0x1B74, 0 ) );
Add( new GenericBuyInfo( typeof( HeaterShield ), 231, 20, 0x1B76, 0 ) );
Add( new GenericBuyInfo( typeof( MetalShield ), 121, 20, 0x1B7B, 0 ) );
Add( new GenericBuyInfo( typeof( PlateGorget ), 104, 20, 0x1413, 0 ) );
Add( new GenericBuyInfo( typeof( PlateChest ), 243, 20, 0x1415, 0 ) );
Add( new GenericBuyInfo( typeof( PlateLegs ), 218, 20, 0x1411, 0 ) );
Add( new GenericBuyInfo( typeof( PlateArms ), 188, 20, 0x1410, 0 ) );
Add( new GenericBuyInfo( typeof( PlateGloves ), 155, 20, 0x1414, 0 ) );
Add( new GenericBuyInfo( typeof( PlateHelm ), 21, 20, 0x1412, 0 ) );
Add( new GenericBuyInfo( typeof( CloseHelm ), 18, 20, 0x1408, 0 ) );
Add( new GenericBuyInfo( typeof( CloseHelm ), 18, 20, 0x1409, 0 ) );
Add( new GenericBuyInfo( typeof( Helmet ), 31, 20, 0x140A, 0 ) );
Add( new GenericBuyInfo( typeof( Helmet ), 18, 20, 0x140B, 0 ) );
Add( new GenericBuyInfo( typeof( NorseHelm ), 18, 20, 0x140E, 0 ) );
Add( new GenericBuyInfo( typeof( NorseHelm ), 18, 20, 0x140F, 0 ) );
Add( new GenericBuyInfo( typeof( Bascinet ), 18, 20, 0x140C, 0 ) );
Add( new GenericBuyInfo( typeof( PlateHelm ), 21, 20, 0x1419, 0 ) );
Add( new GenericBuyInfo( typeof( ChainCoif ), 17, 20, 0x13BB, 0 ) );
Add( new GenericBuyInfo( typeof( ChainChest ), 143, 20, 0x13BF, 0 ) );
Add( new GenericBuyInfo( typeof( ChainLegs ), 149, 20, 0x13BE, 0 ) );
Add( new GenericBuyInfo( typeof( RingmailChest ), 121, 20, 0x13ec, 0 ) );
Add( new GenericBuyInfo( typeof( RingmailLegs ), 90, 20, 0x13F0, 0 ) );
Add( new GenericBuyInfo( typeof( RingmailArms ), 85, 20, 0x13EE, 0 ) );
Add( new GenericBuyInfo( typeof( RingmailGloves ), 93, 20, 0x13eb, 0 ) );
Add( new GenericBuyInfo( typeof( GreatAxe ), 30, 20, 0xF45, 0 ) );
Add( new GenericBuyInfo( typeof( Bardiche ), 60, 20, 0xF4D, 0 ) );
Add( new GenericBuyInfo( typeof( BattleAxe ), 26, 20, 0xF47, 0 ) );
Add( new GenericBuyInfo( typeof( TwoHandedAxe ), 32, 20, 0x1443, 0 ) );
Add( new GenericBuyInfo( typeof( Bow ), 35, 20, 0x13B2, 0 ) );
Add( new GenericBuyInfo( typeof( ButcherKnife ), 14, 20, 0x13F6, 0 ) );
Add( new GenericBuyInfo( typeof( Crossbow ), 46, 20, 0xF50, 0 ) );
Add( new GenericBuyInfo( typeof( HeavyCrossbow ), 55, 20, 0x13FD, 0 ) );
Add( new GenericBuyInfo( typeof( Cutlass ), 24, 20, 0x1441, 0 ) );
Add( new GenericBuyInfo( typeof( Dagger ), 21, 20, 0xF52, 0 ) );
Add( new GenericBuyInfo( typeof( Halberd ), 42, 20, 0x143E, 0 ) );
Add( new GenericBuyInfo( typeof( HammerPick ), 26, 20, 0x143D, 0 ) );
Add( new GenericBuyInfo( typeof( Katana ), 33, 20, 0x13FF, 0 ) );
Add( new GenericBuyInfo( typeof( Kryss ), 32, 20, 0x1401, 0 ) );
Add( new GenericBuyInfo( typeof( Broadsword ), 35, 20, 0xF5E, 0 ) );
Add( new GenericBuyInfo( typeof( Longsword ), 55, 20, 0xF61, 0 ) );
Add( new GenericBuyInfo( typeof( ThinLongsword ), 27, 20, 0x13B8, 0 ) );
Add( new GenericBuyInfo( typeof( VikingSword ), 55, 20, 0x13B9, 0 ) );
Add( new GenericBuyInfo( typeof( Cleaver ), 15, 20, 0xEC3, 0 ) );
Add( new GenericBuyInfo( typeof( Axe ), 40, 20, 0xF49, 0 ) );
Add( new GenericBuyInfo( typeof( DoubleAxe ), 52, 20, 0xF4B, 0 ) );
Add( new GenericBuyInfo( typeof( Pickaxe ), 22, 20, 0xE86, 0 ) );
Add( new GenericBuyInfo( typeof( Pitchfork ), 19, 20, 0xE87, 0 ) );
Add( new GenericBuyInfo( typeof( Scimitar ), 36, 20, 0x13B6, 0 ) );
Add( new GenericBuyInfo( typeof( SkinningKnife ), 14, 20, 0xEC4, 0 ) );
Add( new GenericBuyInfo( typeof( LargeBattleAxe ), 33, 20, 0x13FB, 0 ) );
Add( new GenericBuyInfo( typeof( WarAxe ), 29, 20, 0x13B0, 0 ) );
Add( new GenericBuyInfo( typeof( Pike ), 39, 20, 0x26BE, 0 ) );
Add( new GenericBuyInfo( typeof( Scythe ), 39, 20, 0x26BA, 0 ) );
Add( new GenericBuyInfo( typeof( BlackStaff ), 22, 20, 0xDF1, 0 ) );
Add( new GenericBuyInfo( typeof( Club ), 16, 20, 0x13B4, 0 ) );
Add( new GenericBuyInfo( typeof( GnarledStaff ), 16, 20, 0x13F8, 0 ) );
Add( new GenericBuyInfo( typeof( Mace ), 28, 20, 0xF5C, 0 ) );
Add( new GenericBuyInfo( typeof( Maul ), 21, 20, 0x143B, 0 ) );
Add( new GenericBuyInfo( typeof( QuarterStaff ), 19, 20, 0xE89, 0 ) );
Add( new GenericBuyInfo( typeof( ShepherdsCrook ), 20, 20, 0xE81, 0 ) );
Add( new GenericBuyInfo( typeof( SmithHammer ), 21, 20, 0x13E3, 0 ) );
Add( new GenericBuyInfo( typeof( Rapier ), 23, 20, 0x1403, 0 ) );
Add( new GenericBuyInfo( typeof( Spear ), 31, 20, 0xF62, 0 ) );
Add( new GenericBuyInfo( typeof( WarHammer ), 25, 20, 0x1439, 0 ) );
Add( new GenericBuyInfo( typeof( WarMace ), 31, 20, 0x1407, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Tongs ), 7 );
Add( typeof( IronIngot ), 4 );
Add( typeof( Buckler ), 25 );
Add( typeof( BronzeShield ), 33 );
Add( typeof( MetalShield ), 60 );
Add( typeof( MetalKiteShield ), 62 );
Add( typeof( HeaterShield ), 115 );
Add( typeof( PlateArms ), 94 );
Add( typeof( PlateChest ), 121 );
Add( typeof( PlateGloves ), 72 );
Add( typeof( PlateGorget ), 52 );
Add( typeof( PlateLegs ), 109 );
Add( typeof( FemalePlateChest ), 113 );
Add( typeof( FemaleLeatherChest ), 18 );
Add( typeof( FemaleStuddedChest ), 25 );
Add( typeof( LeatherShorts ), 14 );
Add( typeof( LeatherSkirt ), 11 );
Add( typeof( LeatherBustierArms ), 11 );
Add( typeof( StuddedBustierArms ), 27 );
Add( typeof( Bascinet ), 9 );
Add( typeof( CloseHelm ), 9 );
Add( typeof( Helmet ), 9 );
Add( typeof( NorseHelm ), 9 );
Add( typeof( PlateHelm ), 10 );
Add( typeof( ChainCoif ), 6 );
Add( typeof( ChainChest ), 71 );
Add( typeof( ChainLegs ), 74 );
Add( typeof( RingmailArms ), 42 );
Add( typeof( RingmailChest ), 60 );
Add( typeof( RingmailGloves ), 26 );
Add( typeof( RingmailLegs ), 45 );
Add( typeof( BattleAxe ), 13 );
Add( typeof( DoubleAxe ), 26 );
Add( typeof( GreatAxe ), 15 );
Add( typeof( LargeBattleAxe ),16 );
Add( typeof( Pickaxe ), 11 );
Add( typeof( TwoHandedAxe ), 16 );
Add( typeof( WarAxe ), 14 );
Add( typeof( Axe ), 20 );
Add( typeof( Bardiche ), 30 );
Add( typeof( Halberd ), 21 );
Add( typeof( ButcherKnife ), 7 );
Add( typeof( Cleaver ), 7 );
Add( typeof( Dagger ), 10 );
Add( typeof( SkinningKnife ), 7 );
Add( typeof( Club ), 8 );
Add( typeof( HammerPick ), 13 );
Add( typeof( Mace ), 14 );
Add( typeof( Maul ), 10 );
Add( typeof( WarHammer ), 12 );
Add( typeof( WarMace ), 15 );
Add( typeof( HeavyCrossbow ), 27 );
Add( typeof( Bow ), 17 );
Add( typeof( Crossbow ), 23 );
Add( typeof( Scythe ), 19 );
Add( typeof( Pike ), 19 );
Add( typeof( Spear ), 15 );
Add( typeof( Pitchfork ), 9 );
Add( typeof( BlackStaff ), 11 );
Add( typeof( GnarledStaff ), 8 );
Add( typeof( QuarterStaff ), 9 );
Add( typeof( ShepherdsCrook ), 10 );
Add( typeof( SmithHammer ), 10 );
Add( typeof( Broadsword ), 17 );
Add( typeof( Cutlass ), 12 );
Add( typeof( Katana ), 16 );
Add( typeof( Kryss ), 16 );
Add( typeof( Longsword ), 27 );
Add( typeof( Rapier ), 11 );
Add( typeof( Scimitar ), 18 );
Add( typeof( ThinLongsword ), 13 );
Add( typeof( VikingSword ), 27 );
}
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBBowyer : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBBowyer()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( FletcherTools ), 2, 20, 0x1022, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( FletcherTools ), 1 );
}
}
}
}

View file

@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBButcher : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBButcher()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Bacon ), 7, 20, 0x979, 0 ) );
Add( new GenericBuyInfo( typeof( Ham ), 26, 20, 0x9C9, 0 ) );
Add( new GenericBuyInfo( typeof( Sausage ), 18, 20, 0x9C0, 0 ) );
Add( new GenericBuyInfo( typeof( RawChickenLeg ), 6, 20, 0x1607, 0 ) );
Add( new GenericBuyInfo( typeof( RawBird ), 9, 20, 0x9B9, 0 ) );
Add( new GenericBuyInfo( typeof( RawHam ), 9, 20, 0x096F, 0 ) );
Add( new GenericBuyInfo( typeof( RawLambLeg ), 9, 20, 0x1609, 0 ) );
Add( new GenericBuyInfo( typeof( RawSlabOfBacon ), 9, 20, 0x0E0F, 0 ) );
Add( new GenericBuyInfo( typeof( RawRibs ), 16, 20, 0x9F1, 0 ) );
Add( new GenericBuyInfo( typeof( ButcherKnife ), 13, 20, 0x13F6, 0 ) );
Add( new GenericBuyInfo( typeof( Cleaver ), 13, 20, 0xEC3, 0 ) );
Add( new GenericBuyInfo( typeof( SkinningKnife ), 13, 20, 0xEC4, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( RawRibs ), 8 );
Add( typeof( RawLambLeg ), 4 );
Add( typeof( RawChickenLeg ), 3 );
Add( typeof( RawHam ), 4 );
Add( typeof( RawBird ), 4 );
Add( typeof( RawSlabOfBacon ), 4 );
Add( typeof( Bacon ), 3 );
Add( typeof( Sausage ), 9 );
Add( typeof( Ham ), 13 );
Add( typeof( ButcherKnife ), 7 );
Add( typeof( Cleaver ), 7 );
Add( typeof( SkinningKnife ), 7 );
}
}
}
}

View file

@ -0,0 +1,88 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBCarpenter: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBCarpenter()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Nails ), 3, 20, 0x102E, 0 ) );
Add( new GenericBuyInfo( typeof( Axle ), 2, 20, 0x105B, 0 ) );
Add( new GenericBuyInfo( typeof( WoodBoard ), 3, 20, 0x1BD7, 0 ) );
Add( new GenericBuyInfo( typeof( DrawKnife ), 10, 20, 0x10E4, 0 ) );
Add( new GenericBuyInfo( typeof( Froe ), 10, 20, 0x10E5, 0 ) );
Add( new GenericBuyInfo( typeof( Scorp ), 10, 20, 0x10E7, 0 ) );
Add( new GenericBuyInfo( typeof( Inshave ), 10, 20, 0x10E6, 0 ) );
Add( new GenericBuyInfo( typeof( DovetailSaw ), 12, 20, 0x1028, 0 ) );
Add( new GenericBuyInfo( typeof( Saw ), 15, 20, 0x1034, 0 ) );
Add( new GenericBuyInfo( typeof( Hammer ), 17, 20, 0x102A, 0 ) );
Add( new GenericBuyInfo( typeof( MouldingPlane ), 11, 20, 0x102C, 0 ) );
Add( new GenericBuyInfo( typeof( SmoothingPlane ), 10, 20, 0x1032, 0 ) );
Add( new GenericBuyInfo( typeof( JointingPlane ), 11, 20, 0x1030, 0 ) );
Add( new GenericBuyInfo( typeof( Hatchet ), 25, 20, 0xF44, 0 ) );
Add( new GenericBuyInfo( typeof( Hatchet ), 27, 20, 0xF43, 0 ) );
Add( new GenericBuyInfo( typeof( FurnitureDyeTub ), 1000, 20, 0xFAB, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( WoodenBox ), 7 );
Add( typeof( SmallCrate ), 5 );
Add( typeof( MediumCrate ), 6 );
Add( typeof( LargeCrate ), 7 );
Add( typeof( WoodenChest ), 15 );
Add( typeof( LargeTable ), 10 );
Add( typeof( Nightstand ), 7 );
Add( typeof( YewWoodTable ), 10 );
Add( typeof( Throne ), 24 );
Add( typeof( WoodenThrone ), 6 );
Add( typeof( Stool ), 6 );
Add( typeof( FootStool ), 6 );
Add( typeof( FancyWoodenChairCushion ), 12 );
Add( typeof( WoodenChairCushion ), 10 );
Add( typeof( WoodenChair ), 8 );
Add( typeof( BambooChair ), 6 );
Add( typeof( WoodenBench ), 6 );
Add( typeof( Saw ), 9 );
Add( typeof( Scorp ), 6 );
Add( typeof( SmoothingPlane ), 6 );
Add( typeof( DrawKnife ), 6 );
Add( typeof( Froe ), 6 );
Add( typeof( Hammer ), 14 );
Add( typeof( Inshave ), 6 );
Add( typeof( JointingPlane ), 6 );
Add( typeof( MouldingPlane ), 6 );
Add( typeof( DovetailSaw ), 7 );
Add( typeof( Axle ), 1 );
Add( typeof( Club ), 8 );
Add( typeof( Hatchet ), 13 );
Add( typeof( WoodBoard ), 1 );
Add( typeof( FurnitureDyeTub ), 500 );
}
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBCobbler : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBCobbler()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( ThighBoots ), 15, 20, 0x1711, Utility.RandomNeutralHue() ) );
Add( new GenericBuyInfo( typeof( Shoes ), 8, 20, 0x170f, Utility.RandomNeutralHue() ) );
Add( new GenericBuyInfo( typeof( Boots ), 10, 20, 0x170b, Utility.RandomNeutralHue() ) );
Add( new GenericBuyInfo( typeof( Sandals ), 5, 20, 0x170d, Utility.RandomNeutralHue() ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Shoes ), 4 );
Add( typeof( Boots ), 5 );
Add( typeof( ThighBoots ), 7 );
Add( typeof( Sandals ), 2 );
}
}
}
}

View file

@ -0,0 +1,89 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBCook : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBCook()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( BreadLoaf ), 5, 20, 0x103B, 0 ) );
Add( new GenericBuyInfo( typeof( BreadLoaf ), 5, 20, 0x103C, 0 ) );
Add( new GenericBuyInfo( typeof( ApplePie ), 7, 20, 0x1041, 0 ) ); //OSI just has Pie, not Apple/Fruit/Meat
Add( new GenericBuyInfo( typeof( Cake ), 13, 20, 0x9E9, 0 ) );
Add( new GenericBuyInfo( typeof( Muffins ), 3, 20, 0x9EA, 0 ) );
Add( new GenericBuyInfo( typeof( CheeseWheel ), 21, 10, 0x97E, 0 ) );
Add( new GenericBuyInfo( typeof( CookedBird ), 17, 20, 0x9B7, 0 ) );
Add( new GenericBuyInfo( typeof( LambLeg ), 8, 20, 0x160A, 0 ) );
Add( new GenericBuyInfo( typeof( ChickenLeg ), 5, 20, 0x1608, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfCarrots ), 3, 20, 0x15F9, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfCorn ), 3, 20, 0x15FA, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfLettuce ), 3, 20, 0x15FB, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfPeas ), 3, 20, 0x15FC, 0 ) );
Add( new GenericBuyInfo( typeof( EmptyPewterBowl ), 2, 20, 0x15FD, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfCorn ), 3, 20, 0x15FE, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfLettuce ), 3, 20, 0x15FF, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfPeas ), 3, 20, 0x1600, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfPotatos ), 3, 20, 0x1601, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfStew ), 3, 20, 0x1604, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfTomatoSoup ), 3, 20, 0x1606, 0 ) );
Add( new GenericBuyInfo( typeof( RoastPig ), 106, 20, 0x9BB, 0 ) );
Add( new GenericBuyInfo( typeof( SackFlour ), 3, 20, 0x1039, 0 ) );
Add( new GenericBuyInfo( typeof( JarHoney ), 3, 20, 0x9EC, 0 ) );
Add( new GenericBuyInfo( typeof( RollingPin ), 2, 20, 0x1043, 0 ) );
Add( new GenericBuyInfo( typeof( FlourSifter ), 2, 20, 0x103E, 0 ) );
Add( new GenericBuyInfo( "1044567", typeof( Skillet ), 3, 20, 0x97F, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( CheeseWheel ), 12 );
Add( typeof( CookedBird ), 8 );
Add( typeof( RoastPig ), 53 );
Add( typeof( Cake ), 5 );
Add( typeof( JarHoney ), 1 );
Add( typeof( SackFlour ), 1 );
Add( typeof( BreadLoaf ), 2 );
Add( typeof( ChickenLeg ), 3 );
Add( typeof( LambLeg ), 4 );
Add( typeof( Skillet ), 1 );
Add( typeof( FlourSifter ), 1 );
Add( typeof( RollingPin ), 1 );
Add( typeof( Muffins ), 1 );
Add( typeof( ApplePie ), 3 );
Add( typeof( WoodenBowlOfCarrots ), 1 );
Add( typeof( WoodenBowlOfCorn ), 1 );
Add( typeof( WoodenBowlOfLettuce ), 1 );
Add( typeof( WoodenBowlOfPeas ), 1 );
Add( typeof( EmptyPewterBowl ), 1 );
Add( typeof( PewterBowlOfCorn ), 1 );
Add( typeof( PewterBowlOfLettuce ), 1 );
Add( typeof( PewterBowlOfPeas ), 1 );
Add( typeof( PewterBowlOfPotatos ), 1 );
Add( typeof( WoodenBowlOfStew ), 1 );
Add( typeof( WoodenBowlOfTomatoSoup ), 1 );
}
}
}
}

View file

@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBFarmer : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBFarmer()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Cabbage ), 5, 20, 0xC7B, 0 ) );
Add( new GenericBuyInfo( typeof( Cantaloupe ), 6, 20, 0xC79, 0 ) );
Add( new GenericBuyInfo( typeof( Carrot ), 3, 20, 0xC78, 0 ) );
Add( new GenericBuyInfo( typeof( HoneydewMelon ), 7, 20, 0xC74, 0 ) );
Add( new GenericBuyInfo( typeof( Squash ), 3, 20, 0xC72, 0 ) );
Add( new GenericBuyInfo( typeof( Lettuce ), 5, 20, 0xC70, 0 ) );
Add( new GenericBuyInfo( typeof( Onion ), 3, 20, 0xC6D, 0 ) );
Add( new GenericBuyInfo( typeof( Pumpkin ), 11, 20, 0xC6A, 0 ) );
Add( new GenericBuyInfo( typeof( GreenGourd ), 3, 20, 0xC66, 0 ) );
Add( new GenericBuyInfo( typeof( YellowGourd ), 3, 20, 0xC64, 0 ) );
//Add( new GenericBuyInfo( typeof( Turnip ), 6, 20, XXXXXX, 0 ) );
Add( new GenericBuyInfo( typeof( Watermelon ), 7, 20, 0xC5C, 0 ) );
//Add( new GenericBuyInfo( typeof( EarOfCorn ), 3, 20, XXXXXX, 0 ) );
Add( new GenericBuyInfo( typeof( Eggs ), 3, 20, 0x9B5, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Milk, 7, 20, 0x9AD, 0 ) );
Add( new GenericBuyInfo( typeof( Peach ), 3, 20, 0x9D2, 0 ) );
Add( new GenericBuyInfo( typeof( Pear ), 3, 20, 0x994, 0 ) );
Add( new GenericBuyInfo( typeof( Lemon ), 3, 20, 0x1728, 0 ) );
Add( new GenericBuyInfo( typeof( Lime ), 3, 20, 0x172A, 0 ) );
Add( new GenericBuyInfo( typeof( Grapes ), 3, 20, 0x9D1, 0 ) );
Add( new GenericBuyInfo( typeof( Apple ), 3, 20, 0x9D0, 0 ) );
Add( new GenericBuyInfo( typeof( SheafOfHay ), 2, 20, 0xF36, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Pitcher ), 5 );
Add( typeof( Eggs ), 1 );
Add( typeof( Apple ), 1 );
Add( typeof( Grapes ), 1 );
Add( typeof( Watermelon ), 3 );
Add( typeof( YellowGourd ), 1 );
Add( typeof( GreenGourd ), 1 );
Add( typeof( Pumpkin ), 5 );
Add( typeof( Onion ), 1 );
Add( typeof( Lettuce ), 2 );
Add( typeof( Squash ), 1 );
Add( typeof( Carrot ), 1 );
Add( typeof( HoneydewMelon ), 3 );
Add( typeof( Cantaloupe ), 3 );
Add( typeof( Cabbage ), 2 );
Add( typeof( Lemon ), 1 );
Add( typeof( Lime ), 1 );
Add( typeof( Peach ), 1 );
Add( typeof( Pear ), 1 );
Add( typeof( SheafOfHay ), 1 );
}
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBFisherman : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBFisherman()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( RawFishSteak ), 3, 20, 0x97A, 0 ) );
//TODO: Add( new GenericBuyInfo( typeof( SmallFish ), 3, 20, 0xDD6, 0 ) );
//TODO: Add( new GenericBuyInfo( typeof( SmallFish ), 3, 20, 0xDD7, 0 ) );
Add( new GenericBuyInfo( typeof( Fish ), 6, 80, 0x9CC, 0 ) );
Add( new GenericBuyInfo( typeof( Fish ), 6, 80, 0x9CD, 0 ) );
Add( new GenericBuyInfo( typeof( Fish ), 6, 80, 0x9CE, 0 ) );
Add( new GenericBuyInfo( typeof( Fish ), 6, 80, 0x9CF, 0 ) );
Add( new GenericBuyInfo( typeof( FishingPole ), 15, 20, 0xDC0, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( RawFishSteak ), 1 );
Add( typeof( Fish ), 1 );
//TODO: Add( typeof( SmallFish ), 1 );
Add( typeof( FishingPole ), 7 );
}
}
}
}

View file

@ -0,0 +1,171 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBGuildAlchemist : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBGuildAlchemist(){ }
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalSellInfo : GenericSellInfo {public InternalSellInfo(){}}
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( SupplyBottles ), 500, 20, 0x1709, 0 ) );
}
}
}
public class SBGuildCarpenter : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBGuildCarpenter(){ }
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalSellInfo : GenericSellInfo {public InternalSellInfo(){}}
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( SupplyBoards ), 300, 20, 0x17BB, 0 ) );
Add( new GenericBuyInfo( typeof( SupplyLogs ), 300, 20, 0x172F, 0 ) );
}
}
}
public class SBGuildSmith : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBGuildSmith(){ }
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalSellInfo : GenericSellInfo {public InternalSellInfo(){}}
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( SupplyIngots ), 500, 20, 0x17BC, 0 ) );
}
}
}
public class SBGuildTailor : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBGuildTailor(){ }
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalSellInfo : GenericSellInfo {public InternalSellInfo(){}}
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( SupplyCloth ), 600, 20, 0x1730, 0 ) );
}
}
}
public class SBGuildScribe : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBGuildScribe(){ }
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalSellInfo : GenericSellInfo {public InternalSellInfo(){}}
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( SupplyScrolls ), 500, 20, 0x1794, 0 ) );
Add( new GenericBuyInfo( typeof( SupplyMaps ), 500, 20, 0x1644, 0 ) );
}
}
}
public class SBGuildHealer : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBGuildHealer(){ }
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalSellInfo : GenericSellInfo {public InternalSellInfo(){}}
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( SupplyBandages ), 200, 20, 0x1795, 0 ) );
Add( new GenericBuyInfo( typeof( SupplyGarlic ), 300, 20, 0x17B5, 0 ) );
Add( new GenericBuyInfo( typeof( SupplyGinseng ), 300, 20, 0x17B6, 0 ) );
}
}
}
public class SBGuildRanger : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBGuildRanger(){ }
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalSellInfo : GenericSellInfo {public InternalSellInfo(){}}
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( SupplyArrows ), 200, 20, 0xF41, 0 ) );
Add( new GenericBuyInfo( typeof( SupplyBolts ), 200, 20, 0x1BFD, 0 ) );
}
}
}
public class SBGuildMage : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBGuildMage(){ }
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalSellInfo : GenericSellInfo {public InternalSellInfo(){}}
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( SupplyBlackPearl ), 500, 20, 0x17B3, 0 ) );
Add( new GenericBuyInfo( typeof( SupplyBloodmoss ), 500, 20, 0x17B4, 0 ) );
Add( new GenericBuyInfo( typeof( SupplyGarlic ), 300, 20, 0x17B5, 0 ) );
Add( new GenericBuyInfo( typeof( SupplyGinseng ), 300, 20, 0x17B6, 0 ) );
Add( new GenericBuyInfo( typeof( SupplyMandrakeRoot ), 300, 20, 0x17B7, 0 ) );
Add( new GenericBuyInfo( typeof( SupplyNightshade ), 300, 20, 0x17B8, 0 ) );
Add( new GenericBuyInfo( typeof( SupplySpidersSilk ), 300, 20, 0x17B9, 0 ) );
Add( new GenericBuyInfo( typeof( SupplySulfurousAsh ), 300, 20, 0x17BA, 0 ) );
}
}
}
public class SBGuildThief : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBGuildThief(){ }
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalSellInfo : GenericSellInfo {public InternalSellInfo(){}}
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( SupplyLockpicks ), 600, 20, 0x14FD, 0 ) );
}
}
}
}

View file

@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBGypsy : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBGypsy()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Candle ), 6, 5, 0xA28, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Wine, 7, 20, 0x9C7, 0 ) );
Add( new GenericBuyInfo( typeof( Garlic ), 3, 20, 0xF84, 0 ) );
Add( new GenericBuyInfo( typeof( Ginseng ), 3, 20, 0xF85, 0 ) );
Add( new GenericBuyInfo( typeof( Nightshade ), 3, 20, 0xF88, 0 ) );
Add( new GenericBuyInfo( typeof( Bottle ), 5, 20, 0xF0E, 0 ) );
Add( new GenericBuyInfo( typeof( RedBook ), 15, 5, 0xFF1, 0 ) );
Add( new GenericBuyInfo( typeof( MortarPestle ), 8, 5, 0xE9B, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Candle ), 3 );
Add( typeof( RedBook ), 7 );
Add( typeof( Garlic ), 2 );
Add( typeof( Ginseng ), 2 );
Add( typeof( Nightshade ), 2 );
Add( typeof( Bottle ), 3 );
Add( typeof( MortarPestle ), 4 );
}
}
}
}

View file

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBHairStylist : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBHairStylist()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( "special beard dye", typeof( SpecialBeardDye ), 500000, 20, 0xE26, 0 ) );
Add( new GenericBuyInfo( "special hair dye", typeof( SpecialHairDye ), 500000, 20, 0xE26, 0 ) );
Add( new GenericBuyInfo( "1041060", typeof( HairDye ), 60, 20, 0xEFF, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( HairDye ), 30 );
Add( typeof( SpecialBeardDye ), 250000 );
Add( typeof( SpecialHairDye ), 250000 );
}
}
}
}

View file

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBHealer : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBHealer()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Bandage ), 2, 20, 0xE21, 0 ) );
Add( new GenericBuyInfo( typeof( LesserHealPotion ), 15, 20, 0xF0C, 0 ) );
Add( new GenericBuyInfo( typeof( Ginseng ), 3, 20, 0xF85, 0 ) );
Add( new GenericBuyInfo( typeof( Garlic ), 3, 20, 0xF84, 0 ) );
Add( new GenericBuyInfo( typeof( RefreshPotion ), 15, 20, 0xF0B, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( LesserHealPotion ), 7 );
Add( typeof( RefreshPotion ), 7 );
Add( typeof( Garlic ), 2 );
Add( typeof( Ginseng ), 2 );
}
}
}
}

View file

@ -0,0 +1,79 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBHerbalist : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBHerbalist()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Ginseng ), 3, 20, 0xF85, 0 ) );
Add( new GenericBuyInfo( typeof( Garlic ), 3, 20, 0xF84, 0 ) );
Add( new GenericBuyInfo( typeof( MandrakeRoot ), 3, 20, 0xF86, 0 ) );
Add( new GenericBuyInfo( typeof( Nightshade ), 3, 20, 0xF88, 0 ) );
Add( new GenericBuyInfo( typeof( Bloodmoss ), 5, 20, 0xF7B, 0 ) );
Add( new GenericBuyInfo( typeof( MortarPestle ), 8, 20, 0xE9B, 0 ) );
Add( new GenericBuyInfo( typeof( Bottle ), 5, 20, 0xF0E, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantA ), 528, 5, 0x18B8, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantB ), 528, 5, 0x18B9, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantC ), 528, 5, 0x18BA, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantD ), 528, 5, 0x18BB, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantE ), 528, 5, 0x18BC, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantF ), 528, 5, 0x18BD, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantG ), 528, 5, 0x18BE, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantH ), 528, 5, 0x18BF, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantI ), 528, 5, 0x18C0, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantJ ), 528, 5, 0x18C1, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantK ), 528, 5, 0x18C2, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantL ), 528, 5, 0x18C3, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantM ), 528, 5, 0x18C4, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantN ), 528, 5, 0x18C5, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantO ), 528, 5, 0x18C6, 0 ) );
Add( new GenericBuyInfo( typeof( HousePlantP ), 528, 5, 0x18C7, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Bloodmoss ), 3 );
Add( typeof( MandrakeRoot ), 2 );
Add( typeof( Garlic ), 2 );
Add( typeof( Ginseng ), 2 );
Add( typeof( Nightshade ), 2 );
Add( typeof( Bottle ), 3 );
Add( typeof( MortarPestle ), 4 );
Add( typeof( HousePlantA ), 264 );
Add( typeof( HousePlantB ), 264 );
Add( typeof( HousePlantC ), 264 );
Add( typeof( HousePlantD ), 264 );
Add( typeof( HousePlantE ), 264 );
Add( typeof( HousePlantF ), 264 );
Add( typeof( HousePlantG ), 264 );
Add( typeof( HousePlantH ), 264 );
Add( typeof( HousePlantI ), 264 );
Add( typeof( HousePlantJ ), 264 );
Add( typeof( HousePlantK ), 264 );
Add( typeof( HousePlantL ), 264 );
Add( typeof( HousePlantM ), 264 );
Add( typeof( HousePlantN ), 264 );
Add( typeof( HousePlantO ), 264 );
Add( typeof( HousePlantP ), 264 );
}
}
}
}

View file

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public abstract class SBInfo
{
public SBInfo()
{
}
public abstract IShopSellInfo SellInfo { get; }
public abstract List<GenericBuyInfo> BuyInfo { get; }
}
}

View file

@ -0,0 +1,113 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBInnKeeper : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBInnKeeper()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Ale, 10, 20, 0x99F, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Wine, 7, 20, 0x9C7, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Liquor, 5, 20, 0x99B, 0 ) );
Add( new BeverageBuyInfo( typeof( Jug ), BeverageType.Cider, 13, 20, 0x9C8, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Milk, 7, 20, 0x9F0, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Ale, 16, 20, 0x1F95, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Cider, 11, 20, 0x1F97, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Liquor, 9, 20, 0x1F99, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Wine, 11, 20, 0x1F9B, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Water, 11, 20, 0x1F9D, 0 ) );
Add( new GenericBuyInfo( typeof( BreadLoaf ), 6, 10, 0x103B, 0 ) );
Add( new GenericBuyInfo( typeof( CheeseWheel ), 21, 10, 0x97E, 0 ) );
Add( new GenericBuyInfo( typeof( CookedBird ), 17, 20, 0x9B7, 0 ) );
Add( new GenericBuyInfo( typeof( LambLeg ), 8, 20, 0x160A, 0 ) );
Add( new GenericBuyInfo( typeof( ChickenLeg ), 5, 20, 0x1608, 0 ) );
Add( new GenericBuyInfo( typeof( Ribs ), 7, 20, 0x9F2, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfCarrots ), 3, 20, 0x15F9, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfCorn ), 3, 20, 0x15FA, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfLettuce ), 3, 20, 0x15FB, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfPeas ), 3, 20, 0x15FC, 0 ) );
Add( new GenericBuyInfo( typeof( EmptyPewterBowl ), 2, 20, 0x15FD, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfCorn ), 3, 20, 0x15FE, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfLettuce ), 3, 20, 0x15FF, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfPeas ), 3, 20, 0x1600, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfPotatos ), 3, 20, 0x1601, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfStew ), 3, 20, 0x1604, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfTomatoSoup ), 3, 20, 0x1606, 0 ) );
Add( new GenericBuyInfo( typeof( ApplePie ), 7, 20, 0x1041, 0 ) ); //OSI just has Pie, not Apple/Fruit/Meat
Add( new GenericBuyInfo( typeof( Peach ), 3, 20, 0x9D2, 0 ) );
Add( new GenericBuyInfo( typeof( Pear ), 3, 20, 0x994, 0 ) );
Add( new GenericBuyInfo( typeof( Grapes ), 3, 20, 0x9D1, 0 ) );
Add( new GenericBuyInfo( typeof( Apple ), 3, 20, 0x9D0, 0 ) );
Add( new GenericBuyInfo( typeof( Banana ), 2, 20, 0x171F, 0 ) );
Add( new GenericBuyInfo( typeof( Torch ), 7, 20, 0xF6B, 0 ) );
Add( new GenericBuyInfo( typeof( Candle ), 6, 20, 0xA28, 0 ) );
Add( new GenericBuyInfo( typeof( Backpack ), 15, 20, 0x9B2, 0 ) );
Add( new GenericBuyInfo( "1016450", typeof( Chessboard ), 2, 20, 0xFA6, 0 ) );
Add( new GenericBuyInfo( "1016449", typeof( CheckerBoard ), 2, 20, 0xFA6, 0 ) );
Add( new GenericBuyInfo( typeof( Backgammon ), 2, 20, 0xE1C, 0 ) );
Add( new GenericBuyInfo( typeof( Dices ), 2, 20, 0xFA7, 0 ) );
Add( new GenericBuyInfo( "a barkeep contract", typeof( BarkeepContract ), 1252, 20, 0x14F0, 0 ) );
Add( new GenericBuyInfo( "1041243", typeof( ContractOfEmployment ), 1252, 20, 0x14F0, 0 ) );
if ( Multis.BaseHouse.NewVendorSystem )
Add( new GenericBuyInfo( "1062332", typeof( VendorRentalContract ), 1252, 20, 0x14F0, 0x672 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( BeverageBottle ), 3 );
Add( typeof( Jug ), 6 );
Add( typeof( Pitcher ), 5 );
Add( typeof( GlassMug ), 1 );
Add( typeof( BreadLoaf ), 3 );
Add( typeof( CheeseWheel ), 12 );
Add( typeof( Ribs ), 6 );
Add( typeof( Peach ), 1 );
Add( typeof( Pear ), 1 );
Add( typeof( Grapes ), 1 );
Add( typeof( Apple ), 1 );
Add( typeof( Banana ), 1 );
Add( typeof( Torch ), 3 );
Add( typeof( Candle ), 3 );
Add( typeof( Chessboard ), 1 );
Add( typeof( CheckerBoard ), 1 );
Add( typeof( Backgammon ), 1 );
Add( typeof( Dices ), 1 );
Add( typeof( ContractOfEmployment ), 626 );
Add( typeof( WoodenBowlOfCarrots ), 1 );
Add( typeof( WoodenBowlOfCorn ), 1 );
Add( typeof( WoodenBowlOfLettuce ), 1 );
Add( typeof( WoodenBowlOfPeas ), 1 );
Add( typeof( EmptyPewterBowl ), 1 );
Add( typeof( PewterBowlOfCorn ), 1 );
Add( typeof( PewterBowlOfLettuce ), 1 );
Add( typeof( PewterBowlOfPeas ), 1 );
Add( typeof( PewterBowlOfPotatos ), 1 );
Add( typeof( WoodenBowlOfStew ), 1 );
Add( typeof( WoodenBowlOfTomatoSoup ), 1 );
}
}
}
}

View file

@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBJester : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBJester()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Lockpick ), 12, 20, 0x14FC, 0 ) );
Add( new GenericBuyInfo( typeof( Dices ), 2, 20, 0xFA7, 0 ) );
Add( new GenericBuyInfo( typeof( Dagger ), 21, 20, 0xF52, 0 ) );
Add( new GenericBuyInfo( typeof( JesterSuit ), 26, 20, 0x1F9F, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( JesterHat ), 12, 20, 0x171C, Utility.RandomHue() ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Liquor, 5, 20, 0x99B, 0 ) );
Add( new GenericBuyInfo( typeof( ApplePie ), 7, 20, 0x1041, 0 ) );
Add( new GenericBuyInfo( typeof( AgilityPotion ), 15, 10, 0xF08, 0 ) );
Add( new GenericBuyInfo( typeof( LesserExplosionPotion ), 21, 10, 0xF0D, 0 ) );
Add( new GenericBuyInfo( typeof( HairDye ), 37, 20, 0xEFF, 0 ) );
Add( new GenericBuyInfo( typeof( DisguiseKit ), 700, 20, 0xE05, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Lockpick ), 6 );
Add( typeof( AgilityPotion ), 7 );
Add( typeof( LesserExplosionPotion ), 10 );
Add( typeof( BeverageBottle ), 3 );
Add( typeof( Dices ), 1 );
Add( typeof( Dagger ), 10 );
Add( typeof( JesterHat ), 6 );
Add( typeof( JesterSuit ), 13 );
Add( typeof( HairDye ), 19 );
Add( typeof( DisguiseKit ), 300 );
}
}
}
}

View file

@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBJewel: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBJewel()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( GoldRing ), 27, 20, 0x108A, 0 ) );
Add( new GenericBuyInfo( typeof( Necklace ), 26, 20, 0x1085, 0 ) );
Add( new GenericBuyInfo( typeof( GoldNecklace ), 27, 20, 0x1088, 0 ) );
Add( new GenericBuyInfo( typeof( GoldBeadNecklace ), 27, 20, 0x1089, 0 ) );
Add( new GenericBuyInfo( typeof( Beads ), 27, 20, 0x108B, 0 ) );
Add( new GenericBuyInfo( typeof( GoldBracelet ), 27, 20, 0x1086, 0 ) );
Add( new GenericBuyInfo( typeof( GoldEarrings ), 27, 20, 0x1087, 0 ) );
Add( new GenericBuyInfo( typeof( StarSapphire ), 125, 20, 0xF21, 0 ) );
Add( new GenericBuyInfo( typeof( Emerald ), 100, 20, 0xF10, 0 ) );
Add( new GenericBuyInfo( typeof( Sapphire ), 100, 20, 0xF19, 0 ) );
Add( new GenericBuyInfo( typeof( Ruby ), 75, 20, 0xF13, 0 ) );
Add( new GenericBuyInfo( typeof( Citrine ), 50, 20, 0xF15, 0 ) );
Add( new GenericBuyInfo( typeof( Amethyst ), 100, 20, 0xF16, 0 ) );
Add( new GenericBuyInfo( typeof( Tourmaline ), 75, 20, 0xF2D, 0 ) );
Add( new GenericBuyInfo( typeof( Amber ), 50, 20, 0xF25, 0 ) );
Add( new GenericBuyInfo( typeof( Diamond ), 200, 20, 0xF26, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Amber ), 25 );
Add( typeof( Amethyst ), 50 );
Add( typeof( Citrine ), 25 );
Add( typeof( Diamond ), 100 );
Add( typeof( Emerald ), 50 );
Add( typeof( Ruby ), 37 );
Add( typeof( Sapphire ), 50 );
Add( typeof( StarSapphire ), 62 );
Add( typeof( Tourmaline ), 47 );
Add( typeof( GoldRing ), 13 );
Add( typeof( SilverRing ), 10 );
Add( typeof( Necklace ), 13 );
Add( typeof( GoldNecklace ), 13 );
Add( typeof( GoldBeadNecklace ), 13 );
Add( typeof( SilverNecklace ), 10 );
Add( typeof( SilverBeadNecklace ), 10 );
Add( typeof( Beads ), 13 );
Add( typeof( GoldBracelet ), 13 );
Add( typeof( SilverBracelet ), 10 );
Add( typeof( GoldEarrings ), 13 );
Add( typeof( SilverEarrings ), 10 );
}
}
}
}

View file

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBLeatherWorker: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBLeatherWorker()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Hides ), 4, 20, 0x1078, 0 ) );
Add( new GenericBuyInfo( typeof( ThighBoots ), 56, 10, 0x1711, 0 ) );
Add( new GenericBuyInfo( typeof( Whip ), 16, 20, 0x26BB, 0x4A8 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Hides ), 2 );
Add( typeof( ThighBoots ), 28 );
Add( typeof( Whip ), 8 );
}
}
}
}

View file

@ -0,0 +1,87 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBMage : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBMage()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Spellbook ), 18, 10, 0xEFA, 0 ) );
Add( new GenericBuyInfo( typeof( ScribesPen ), 8, 10, 0xFBF, 0 ) );
Add( new GenericBuyInfo( typeof( BlankScroll ), 5, 20, 0x0E34, 0 ) );
Add( new GenericBuyInfo( typeof( RefreshPotion ), 15, 10, 0xF0B, 0 ) );
Add( new GenericBuyInfo( typeof( AgilityPotion ), 15, 10, 0xF08, 0 ) );
Add( new GenericBuyInfo( typeof( NightSightPotion ), 15, 10, 0xF06, 0 ) );
Add( new GenericBuyInfo( typeof( LesserHealPotion ), 15, 10, 0xF0C, 0 ) );
Add( new GenericBuyInfo( typeof( StrengthPotion ), 15, 10, 0xF09, 0 ) );
Add( new GenericBuyInfo( typeof( LesserPoisonPotion ), 15, 10, 0xF0A, 0 ) );
Add( new GenericBuyInfo( typeof( LesserCurePotion ), 15, 10, 0xF07, 0 ) );
Add( new GenericBuyInfo( typeof( LesserExplosionPotion ), 21, 10, 0xF0D, 0 ) );
Add( new GenericBuyInfo( typeof( BlackPearl ), 5, 20, 0xF7A, 0 ) );
Add( new GenericBuyInfo( typeof( Bloodmoss ), 5, 20, 0xF7B, 0 ) );
Add( new GenericBuyInfo( typeof( Garlic ), 3, 20, 0xF84, 0 ) );
Add( new GenericBuyInfo( typeof( Ginseng ), 3, 20, 0xF85, 0 ) );
Add( new GenericBuyInfo( typeof( MandrakeRoot ), 3, 20, 0xF86, 0 ) );
Add( new GenericBuyInfo( typeof( Nightshade ), 3, 20, 0xF88, 0 ) );
Add( new GenericBuyInfo( typeof( SpidersSilk ), 3, 20, 0xF8D, 0 ) );
Add( new GenericBuyInfo( typeof( SulfurousAsh ), 3, 20, 0xF8C, 0 ) );
Type[] types = Loot.RegularScrollTypes;
int circles = 3;
for ( int i = 0; i < circles*8 && i < types.Length; ++i )
{
int itemID = 0x1F2E + i;
if ( i == 6 )
itemID = 0x1F2D;
else if ( i > 6 )
--itemID;
Add( new GenericBuyInfo( types[i], 12 + ((i / 8) * 10), 20, itemID, 0 ) );
}
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( WizardsHat ), 15 );
Add( typeof( BlackPearl ), 3 );
Add( typeof( Bloodmoss ),4 );
Add( typeof( MandrakeRoot ), 2 );
Add( typeof( Garlic ), 2 );
Add( typeof( Ginseng ), 2 );
Add( typeof( Nightshade ), 2 );
Add( typeof( SpidersSilk ), 2 );
Add( typeof( SulfurousAsh ), 2 );
Add( typeof( Spellbook ), 25 );
Type[] types = Loot.RegularScrollTypes;
for ( int i = 0; i < types.Length; ++i )
Add(types[i], i + 3 + (i / 4)); // This is NOT 100% OSI accurate. Two spells per circle will be off by 1gp, as OSI's math is slightly different.
}
}
}
}

View file

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBMapmaker : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBMapmaker()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( BlankMap ), 5, 40, 0x14EC, 0 ) );
Add( new GenericBuyInfo( typeof( MapmakersPen ), 8, 20, 0x0FBF, 0 ) );
Add( new GenericBuyInfo( typeof( Sextant ), 13, 20, 0x1057, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( MapmakersPen ), 4 );
Add( typeof( BlankMap ), 2 );
Add( typeof( CityMap ), 3 );
Add( typeof( LocalMap ), 3 );
Add( typeof( WorldMap ), 3 );
Add( typeof( PresetMapEntry ), 3 );
Add( typeof( Sextant ), 6 );
}
}
}
}

View file

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBMiller : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBMiller()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( SackFlour ), 3, 20, 0x1039, 0 ) );
Add( new GenericBuyInfo( typeof( SheafOfHay ), 2, 20, 0xF36, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( SackFlour ), 1 );
Add( typeof( SheafOfHay ), 1 );
}
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBMiner: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBMiner()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Bag ), 6, 20, 0xE76, 0 ) );
Add( new GenericBuyInfo( typeof( Candle ), 6, 10, 0xA28, 0 ) );
Add( new GenericBuyInfo( typeof( Torch ), 8, 10, 0xF6B, 0 ) );
Add( new GenericBuyInfo( typeof( Lantern ), 2, 10, 0xA25, 0 ) );
Add( new GenericBuyInfo( typeof( Pickaxe ), 25, 20, 0xE86, 0 ) );
Add( new GenericBuyInfo( typeof( Shovel ), 12, 20, 0xF39, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Pickaxe ), 12 );
Add( typeof( Shovel ), 6 );
Add( typeof( Lantern ), 1 );
Add( typeof( Torch ), 3 );
Add( typeof( Bag ), 3 );
Add( typeof( Candle ), 3 );
}
}
}
}

View file

@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBPlayerBarkeeper : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBPlayerBarkeeper()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Ale, 10, 20, 0x99F, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Wine, 7, 20, 0x9C7, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Liquor, 5, 20, 0x99B, 0 ) );
Add( new BeverageBuyInfo( typeof( Jug ), BeverageType.Cider, 13, 20, 0x9C8, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Milk, 7, 20, 0x9F0, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Ale, 16, 20, 0x1F95, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Cider, 11, 20, 0x1F97, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Liquor, 9, 20, 0x1F99, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Wine, 11, 20, 0x1F9B, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Water, 11, 20, 0x1F9D, 0 ) );
Add( new GenericBuyInfo( "1016450", typeof( Chessboard ), 2, 20, 0xFA6, 0 ) );
Add( new GenericBuyInfo( "1016449", typeof( CheckerBoard ), 2, 20, 0xFA6, 0 ) );
Add( new GenericBuyInfo( typeof( Backgammon ), 2, 20, 0xE1C, 0 ) );
Add( new GenericBuyInfo( typeof( Dices ), 2, 20, 0xFA7, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
}
}
}
}

View file

@ -0,0 +1,156 @@
using System;
using System.Collections.Generic;
using Server.Items;
using Server.Guilds;
namespace Server.Mobiles
{
public class SBProvisioner : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBProvisioner()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Arrow ), 2, 20, 0xF3F, 0 ) );
Add( new GenericBuyInfo( typeof( Bolt ), 5, 20, 0x1BFB, 0 ) );
Add( new GenericBuyInfo( typeof( Backpack ), 15, 20, 0x9B2, 0 ) );
Add( new GenericBuyInfo( typeof( Pouch ), 6, 20, 0xE79, 0 ) );
Add( new GenericBuyInfo( typeof( Bag ), 6, 20, 0xE76, 0 ) );
Add( new GenericBuyInfo( typeof( BigBag ), 10, 20, 0x2115, 0x49E ) );
Add( new GenericBuyInfo( typeof( Candle ), 6, 20, 0xA28, 0 ) );
Add( new GenericBuyInfo( typeof( Torch ), 8, 20, 0xF6B, 0 ) );
Add( new GenericBuyInfo( typeof( Lantern ), 2, 20, 0xA25, 0 ) );
Add( new GenericBuyInfo( typeof( Lockpick ), 12, 20, 0x14FC, 0 ) );
Add( new GenericBuyInfo( typeof( FloppyHat ), 7, 20, 0x1713, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( Hood ), 7, 20, 0x141B, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( WideBrimHat ), 8, 20, 0x1714, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( Cap ), 10, 20, 0x1715, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( TallStrawHat ), 8, 20, 0x1716, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( StrawHat ), 7, 20, 0x1717, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( WizardsHat ), 11, 20, 0x1718, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( LeatherCap ), 10, 20, 0x1DB9, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( FeatheredHat ), 10, 20, 0x171A, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( TricorneHat ), 8, 20, 0x171B, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( Bandana ), 6, 20, 0x1540, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( SkullCap ), 7, 20, 0x1544, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( BreadLoaf ), 6, 10, 0x103B, 0 ) );
Add( new GenericBuyInfo( typeof( LambLeg ), 8, 20, 0x160A, 0 ) );
Add( new GenericBuyInfo( typeof( ChickenLeg ), 5, 20, 0x1608, 0 ) );
Add( new GenericBuyInfo( typeof( CookedBird ), 17, 20, 0x9B7, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Ale, 10, 20, 0x99F, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Wine, 7, 20, 0x9C7, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Liquor, 5, 20, 0x99B, 0 ) );
Add( new BeverageBuyInfo( typeof( Jug ), BeverageType.Cider, 13, 20, 0x9C8, 0 ) );
Add( new GenericBuyInfo( typeof( Pear ), 3, 20, 0x994, 0 ) );
Add( new GenericBuyInfo( typeof( Apple ), 3, 20, 0x9D0, 0 ) );
Add( new GenericBuyInfo( typeof( Garlic ), 3, 20, 0xF84, 0 ) );
Add( new GenericBuyInfo( typeof( Ginseng ), 3, 20, 0xF85, 0 ) );
Add( new GenericBuyInfo( typeof( Bottle ), 5, 20, 0xF0E, 0 ) );
Add( new GenericBuyInfo( typeof( RedBook ), 15, 20, 0xFF1, 0 ) );
Add( new GenericBuyInfo( typeof( BlueBook ), 15, 20, 0xFF2, 0 ) );
Add( new GenericBuyInfo( typeof( TanBook ), 15, 20, 0xFF0, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBox ), 14, 20, 0xE7D, 0 ) );
Add( new GenericBuyInfo( typeof( Key ), 2, 20, 0x100E, 0 ) );
Add( new GenericBuyInfo( typeof( BedRolled ), 5, 20, 0xA59, 0 ) );
Add( new GenericBuyInfo( typeof( Kindling ), 2, 20, 0xDE1, 0 ) );
Add( new GenericBuyInfo( "1041205", typeof( Multis.SmallBoatDeed ), 10177, 20, 0x14F2, 0 ) );
Add( new GenericBuyInfo( "1041060", typeof( HairDye ), 60, 20, 0xEFF, 0 ) );
Add( new GenericBuyInfo( "1016450", typeof( Chessboard ), 2, 20, 0xFA6, 0 ) );
Add( new GenericBuyInfo( "1016449", typeof( CheckerBoard ), 2, 20, 0xFA6, 0 ) );
Add( new GenericBuyInfo( typeof( Backgammon ), 2, 20, 0xE1C, 0 ) );
Add( new GenericBuyInfo( typeof( Dices ), 2, 20, 0xFA7, 0 ) );
if( !Guild.NewGuildSystem )
Add( new GenericBuyInfo( "1041055", typeof( GuildDeed ), 12450, 20, 0x14F0, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Arrow ), 1 );
Add( typeof( Bolt ), 2 );
Add( typeof( Backpack ), 7 );
Add( typeof( Pouch ), 3 );
Add( typeof( BigBag ), 5 );
Add( typeof( Bag ), 3 );
Add( typeof( Candle ), 3 );
Add( typeof( Torch ), 4 );
Add( typeof( Lantern ), 1 );
Add( typeof( Lockpick ), 6 );
Add( typeof( FloppyHat ), 3 );
Add( typeof( Hood ), 3 );
Add( typeof( WideBrimHat ), 4 );
Add( typeof( Cap ), 5 );
Add( typeof( TallStrawHat ), 4 );
Add( typeof( StrawHat ), 3 );
Add( typeof( WizardsHat ), 5 );
Add( typeof( LeatherCap ), 5 );
Add( typeof( FeatheredHat ), 5 );
Add( typeof( TricorneHat ), 4 );
Add( typeof( Bandana ), 3 );
Add( typeof( SkullCap ), 3 );
Add( typeof( Bottle ), 3 );
Add( typeof( RedBook ), 7 );
Add( typeof( BlueBook ), 7 );
Add( typeof( TanBook ), 7 );
Add( typeof( WoodenBox ), 7 );
Add( typeof( Kindling ), 1 );
Add( typeof( HairDye ), 30 );
Add( typeof( Chessboard ), 1 );
Add( typeof( CheckerBoard ), 1 );
Add( typeof( Backgammon ), 1 );
Add( typeof( Dices ), 1 );
Add( typeof( Amber ), 25 );
Add( typeof( Amethyst ), 50 );
Add( typeof( Citrine ), 25 );
Add( typeof( Diamond ), 100 );
Add( typeof( Emerald ), 50 );
Add( typeof( Ruby ), 37 );
Add( typeof( Sapphire ), 50 );
Add( typeof( StarSapphire ), 62 );
Add( typeof( Tourmaline ), 47 );
Add( typeof( GoldRing ), 13 );
Add( typeof( SilverRing ), 10 );
Add( typeof( Necklace ), 13 );
Add( typeof( GoldNecklace ), 13 );
Add( typeof( GoldBeadNecklace ), 13 );
Add( typeof( SilverNecklace ), 10 );
Add( typeof( SilverBeadNecklace ), 10 );
Add( typeof( Beads ), 13 );
Add( typeof( GoldBracelet ), 13 );
Add( typeof( SilverBracelet ), 10 );
Add( typeof( GoldEarrings ), 13 );
Add( typeof( SilverEarrings ), 10 );
if( !Guild.NewGuildSystem )
Add( typeof( GuildDeed ), 6225 );
}
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBRanger : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBRanger()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new AnimalBuyInfo( 1, typeof( PackLlama ), 491, 20, 292, 0 ) );
Add( new AnimalBuyInfo( 1, typeof( PackHorse ), 606, 20, 291, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
}
}
}
}

View file

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBScribe: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBScribe()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( ScribesPen ), 8, 20, 0xFBF, 0 ) );
Add( new GenericBuyInfo( typeof( BlankScroll ), 5, 20, 0x0E34, 0 ) );
Add( new GenericBuyInfo( typeof( ScribesPen ), 8, 20, 0xFC0, 0 ) );
Add( new GenericBuyInfo( typeof( BrownBook ), 15, 10, 0xFEF, 0 ) );
Add( new GenericBuyInfo( typeof( TanBook ), 15, 10, 0xFF0, 0 ) );
Add( new GenericBuyInfo( typeof( BlueBook ), 15, 10, 0xFF2, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( ScribesPen ), 4 );
Add( typeof( BrownBook ), 7 );
Add( typeof( TanBook ), 7 );
Add( typeof( BlueBook ), 7 );
Add( typeof( BlankScroll ), 3 );
}
}
}
}

View file

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using Server.Items;
using Server.Multis;
namespace Server.Mobiles
{
public class SBShipwright : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBShipwright()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( "1041205", typeof( SmallBoatDeed ), 10177, 20, 0x14F2, 0 ) );
Add( new GenericBuyInfo( "1041206", typeof( SmallDragonBoatDeed ), 10177, 20, 0x14F2, 0 ) );
Add( new GenericBuyInfo( "1041207", typeof( MediumBoatDeed ), 11552, 20, 0x14F2, 0 ) );
Add( new GenericBuyInfo( "1041208", typeof( MediumDragonBoatDeed ), 11552, 20, 0x14F2, 0 ) );
Add( new GenericBuyInfo( "1041209", typeof( LargeBoatDeed ), 12927, 20, 0x14F2, 0 ) );
Add( new GenericBuyInfo( "1041210", typeof( LargeDragonBoatDeed ), 12927, 20, 0x14F2, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
//You technically CAN sell them back, *BUT* the vendors do not carry enough money to buy with
}
}
}
}

View file

@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBSmithTools: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBSmithTools()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( IronIngot ), 5, 16, 0x1BF2, 0 ) );
Add( new GenericBuyInfo( typeof( Tongs ), 13, 14, 0xFBB, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Tongs ), 7 );
Add( typeof( IronIngot ), 4 );
}
}
}
}

View file

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBStableMaster : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBStableMaster()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new AnimalBuyInfo( 1, typeof( Horse ), 550, 10, 204, 0 ) );
Add( new AnimalBuyInfo( 1, typeof( Llama ), 492, 10, 220, 0 ) );
Add( new AnimalBuyInfo( 1, typeof( PackHorse ), 631, 10, 291, 0 ) );
Add( new AnimalBuyInfo( 1, typeof( PackLlama ), 565, 10, 292, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
}
}
}
}

View file

@ -0,0 +1,102 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBTailor: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBTailor()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( SewingKit ), 3, 20, 0xF9D, 0 ) );
Add( new GenericBuyInfo( typeof( Scissors ), 11, 20, 0xF9F, 0 ) );
Add( new GenericBuyInfo( typeof( Shirt ), 12, 20, 0x1517, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( ShortPants ), 7, 20, 0x152E, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( FancyShirt ), 21, 20, 0x1EFD, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( LongPants ), 10, 20, 0x1539, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( FancyDress ), 26, 20, 0x1EFF, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( PlainDress ), 13, 20, 0x1F01, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( Kilt ), 11, 20, 0x1537, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( Kilt ), 11, 20, 0x1537, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( HalfApron ), 10, 20, 0x153b, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( Robe ), 18, 20, 0x1F03, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( Cloak ), 8, 20, 0x1515, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( Cloak ), 8, 20, 0x1515, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( Doublet ), 13, 20, 0x1F7B, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( Tunic ), 18, 20, 0x1FA1, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( JesterSuit ), 26, 20, 0x1F9F, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( JesterHat ), 12, 20, 0x171C, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( FloppyHat ), 7, 20, 0x1713, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( Hood ), 7, 20, 0x141B, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( WideBrimHat ), 8, 20, 0x1714, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( Cap ), 10, 20, 0x1715, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( TallStrawHat ), 8, 20, 0x1716, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( StrawHat ), 7, 20, 0x1717, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( WizardsHat ), 11, 20, 0x1718, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( LeatherCap ), 10, 20, 0x1DB9, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( FeatheredHat ), 10, 20, 0x171A, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( TricorneHat ), 8, 20, 0x171B, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( Bandana ), 6, 20, 0x1540, Utility.RandomDyedHue() ) );
Add( new GenericBuyInfo( typeof( SkullCap ), 7, 20, 0x1544, Utility.RandomDyedHue() ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Scissors ), 6 );
Add( typeof( SewingKit ), 1 );
Add( typeof( FancyShirt ), 10 );
Add( typeof( Shirt ), 6 );
Add( typeof( ShortPants ), 3 );
Add( typeof( LongPants ), 5 );
Add( typeof( Cloak ), 4 );
Add( typeof( FancyDress ), 12 );
Add( typeof( Robe ), 9 );
Add( typeof( PlainDress ), 7 );
Add( typeof( Skirt ), 5 );
Add( typeof( Kilt ), 5 );
Add( typeof( Doublet ), 7 );
Add( typeof( Tunic ), 9 );
Add( typeof( JesterSuit ), 13 );
Add( typeof( FullApron ), 5 );
Add( typeof( HalfApron ), 5 );
Add( typeof( JesterHat ), 6 );
Add( typeof( FloppyHat ), 3 );
Add( typeof( Hood ), 3 );
Add( typeof( WideBrimHat ), 4 );
Add( typeof( Cap ), 5 );
Add( typeof( SkullCap ), 3 );
Add( typeof( Bandana ), 3 );
Add( typeof( TallStrawHat ), 4 );
Add( typeof( StrawHat ), 4 );
Add( typeof( WizardsHat ), 5 );
Add( typeof( Bonnet ), 4 );
Add( typeof( FeatheredHat ), 5 );
Add( typeof( TricorneHat ), 4 );
}
}
}
}

View file

@ -0,0 +1,95 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBTanner : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBTanner()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( LeatherGorget ), 31, 20, 0x13C7, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherCap ), 10, 20, 0x1DB9, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherArms ), 37, 20, 0x13CD, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherChest ), 47, 20, 0x13CC, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherLegs ), 36, 20, 0x13CB, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherGloves ), 31, 20, 0x13C6, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedGorget ), 50, 20, 0x13D6, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedArms ), 57, 20, 0x13DC, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedChest ), 75, 20, 0x13DB, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedLegs ), 67, 20, 0x13DA, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedGloves ), 45, 20, 0x13D5, 0 ) );
Add( new GenericBuyInfo( typeof( FemaleStuddedChest ), 62, 20, 0x1C02, 0 ) );
Add( new GenericBuyInfo( typeof( FemalePlateChest ), 207, 20, 0x1C04, 0 ) );
Add( new GenericBuyInfo( typeof( FemaleLeatherChest ), 36, 20, 0x1C06, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherShorts ), 28, 20, 0x1C00, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherSkirt ), 25, 20, 0x1C08, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherBustierArms ), 25, 20, 0x1C0A, 0 ) );
Add( new GenericBuyInfo( typeof( LeatherBustierArms ), 30, 20, 0x1C0B, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedBustierArms ), 50, 20, 0x1C0C, 0 ) );
Add( new GenericBuyInfo( typeof( StuddedBustierArms ), 47, 20, 0x1C0D, 0 ) );
Add( new GenericBuyInfo( typeof( Bag ), 6, 20, 0xE76, 0 ) );
Add( new GenericBuyInfo( typeof( Pouch ), 6, 20, 0xE79, 0 ) );
Add( new GenericBuyInfo( typeof( Backpack ), 15, 20, 0x9B2, 0 ) );
Add( new GenericBuyInfo( typeof( BigBag ), 10, 20, 0x2115, 0x49E ) );
Add( new GenericBuyInfo( typeof( Leather ), 6, 20, 0x1081, 0 ) );
Add( new GenericBuyInfo( typeof( SkinningKnife ), 15, 20, 0xEC4, 0 ) );
Add( new GenericBuyInfo( typeof( TrophyBoard ), 10000, 20, 0x20D4, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Bag ), 3 );
Add( typeof( Pouch ), 3 );
Add( typeof( BigBag ), 5 );
Add( typeof( Backpack ), 7 );
Add( typeof( Leather ), 5 );
Add( typeof( SkinningKnife ), 7 );
Add( typeof( LeatherArms ), 18 );
Add( typeof( LeatherChest ), 23 );
Add( typeof( LeatherGloves ), 15 );
Add( typeof( LeatherGorget ), 15 );
Add( typeof( LeatherLegs ), 18 );
Add( typeof( LeatherCap ), 5 );
Add( typeof( StuddedArms ), 43 );
Add( typeof( StuddedChest ), 37 );
Add( typeof( StuddedGloves ), 39 );
Add( typeof( StuddedGorget ), 22 );
Add( typeof( StuddedLegs ), 33 );
Add( typeof( FemaleStuddedChest ), 31 );
Add( typeof( StuddedBustierArms ), 23 );
Add( typeof( FemalePlateChest), 103 );
Add( typeof( FemaleLeatherChest ), 18 );
Add( typeof( LeatherBustierArms ), 12 );
Add( typeof( LeatherShorts ), 14 );
Add( typeof( LeatherSkirt ), 12 );
}
}
}
}

View file

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

View file

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBThief : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBThief()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Backpack ), 15, 20, 0x9B2, 0 ) );
Add( new GenericBuyInfo( typeof( Pouch ), 6, 20, 0xE79, 0 ) );
Add( new GenericBuyInfo( typeof( Torch ), 8, 20, 0xF6B, 0 ) );
Add( new GenericBuyInfo( typeof( Lantern ), 2, 20, 0xA25, 0 ) );
Add( new GenericBuyInfo( typeof( Lockpick ), 12, 20, 0x14FC, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBox ), 14, 20, 0x9AA, 0 ) );
Add( new GenericBuyInfo( typeof( Key ), 2, 20, 0x100E, 0 ) );
Add( new GenericBuyInfo( typeof( HairDye ), 37, 20, 0xEFF, 0 ) );
Add( new GenericBuyInfo( typeof( DisguiseKit ), 700, 20, 0xE05, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Backpack ), 7 );
Add( typeof( Pouch ), 3 );
Add( typeof( Torch ), 3 );
Add( typeof( Lantern ), 1 );
Add( typeof( Lockpick ), 6 );
Add( typeof( WoodenBox ), 7 );
Add( typeof( HairDye ), 19 );
Add( typeof( DisguiseKit ), 300 );
}
}
}
}

View file

@ -0,0 +1,119 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBTinker: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBTinker()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Clock ), 22, 20, 0x104B, 0 ) );
Add( new GenericBuyInfo( typeof( Nails ), 3, 20, 0x102E, 0 ) );
Add( new GenericBuyInfo( typeof( ClockParts ), 3, 20, 0x104F, 0 ) );
Add( new GenericBuyInfo( typeof( AxleGears ), 3, 20, 0x1051, 0 ) );
Add( new GenericBuyInfo( typeof( Gears ), 2, 20, 0x1053, 0 ) );
Add( new GenericBuyInfo( typeof( Hinge ), 2, 20, 0x1055, 0 ) );
Add( new GenericBuyInfo( typeof( Sextant ), 13, 20, 0x1057, 0 ) );
Add( new GenericBuyInfo( typeof( SextantParts ), 5, 20, 0x1059, 0 ) );
Add( new GenericBuyInfo( typeof( Axle ), 2, 20, 0x105B, 0 ) );
Add( new GenericBuyInfo( typeof( Springs ), 3, 20, 0x105D, 0 ) );
Add( new GenericBuyInfo( "1024111", typeof( Key ), 8, 20, 0x100F, 0 ) );
Add( new GenericBuyInfo( "1024112", typeof( Key ), 8, 20, 0x1010, 0 ) );
Add( new GenericBuyInfo( "1024115", typeof( Key ), 8, 20, 0x1013, 0 ) );
Add( new GenericBuyInfo( typeof( KeyRing ), 8, 20, 0x1010, 0 ) );
Add( new GenericBuyInfo( typeof( Lockpick ), 12, 20, 0x14FC, 0 ) );
Add( new GenericBuyInfo( typeof( TinkersTools ), 7, 20, 0x1EBC, 0 ) );
Add( new GenericBuyInfo( typeof( WoodBoard ), 3, 20, 0x1BD7, 0 ) );
Add( new GenericBuyInfo( typeof( IronIngot ), 5, 16, 0x1BF2, 0 ) );
Add( new GenericBuyInfo( typeof( SewingKit ), 3, 20, 0xF9D, 0 ) );
Add( new GenericBuyInfo( typeof( DrawKnife ), 10, 20, 0x10E4, 0 ) );
Add( new GenericBuyInfo( typeof( Froe ), 10, 20, 0x10E5, 0 ) );
Add( new GenericBuyInfo( typeof( Scorp ), 10, 20, 0x10E7, 0 ) );
Add( new GenericBuyInfo( typeof( Inshave ), 10, 20, 0x10E6, 0 ) );
Add( new GenericBuyInfo( typeof( ButcherKnife ), 13, 20, 0x13F6, 0 ) );
Add( new GenericBuyInfo( typeof( Scissors ), 11, 20, 0xF9F, 0 ) );
Add( new GenericBuyInfo( typeof( Tongs ), 13, 14, 0xFBB, 0 ) );
Add( new GenericBuyInfo( typeof( DovetailSaw ), 12, 20, 0x1028, 0 ) );
Add( new GenericBuyInfo( typeof( Saw ), 15, 20, 0x1034, 0 ) );
Add( new GenericBuyInfo( typeof( Hammer ), 17, 20, 0x102A, 0 ) );
Add( new GenericBuyInfo( typeof( SmithHammer ), 23, 20, 0x13E3, 0 ) );
// TODO: Sledgehammer
Add( new GenericBuyInfo( typeof( Shovel ), 12, 20, 0xF39, 0 ) );
Add( new GenericBuyInfo( typeof( MouldingPlane ), 11, 20, 0x102C, 0 ) );
Add( new GenericBuyInfo( typeof( JointingPlane ), 10, 20, 0x1030, 0 ) );
Add( new GenericBuyInfo( typeof( SmoothingPlane ), 11, 20, 0x1032, 0 ) );
Add( new GenericBuyInfo( typeof( Pickaxe ), 25, 20, 0xE86, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Shovel ), 6 );
Add( typeof( SewingKit ), 1 );
Add( typeof( Scissors ), 6 );
Add( typeof( Tongs ), 7 );
Add( typeof( Key ), 1 );
Add( typeof( DovetailSaw ), 6 );
Add( typeof( MouldingPlane ), 6 );
Add( typeof( Nails ), 1 );
Add( typeof( JointingPlane ), 6 );
Add( typeof( SmoothingPlane ), 6 );
Add( typeof( Saw ), 7 );
Add( typeof( Clock ), 11 );
Add( typeof( ClockParts ), 1 );
Add( typeof( AxleGears ), 1 );
Add( typeof( Gears ), 1 );
Add( typeof( Hinge ), 1 );
Add( typeof( Sextant ), 6 );
Add( typeof( SextantParts ), 2 );
Add( typeof( Axle ), 1 );
Add( typeof( Springs ), 1 );
Add( typeof( DrawKnife ), 5 );
Add( typeof( Froe ), 5 );
Add( typeof( Inshave ), 5 );
Add( typeof( Scorp ), 5 );
Add( typeof( Lockpick ), 6 );
Add( typeof( TinkerTools ), 3 );
Add( typeof( WoodBoard ), 1 );
Add( typeof( Pickaxe ), 16 );
Add( typeof( Hammer ), 3 );
Add( typeof( SmithHammer ), 11 );
Add( typeof( ButcherKnife ), 6 );
}
}
}
}

View file

@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBWaiter : SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBWaiter()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Ale, 10, 20, 0x99F, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Wine, 7, 20, 0x9C7, 0 ) );
Add( new BeverageBuyInfo( typeof( BeverageBottle ), BeverageType.Liquor, 5, 20, 0x99B, 0 ) );
Add( new BeverageBuyInfo( typeof( Jug ), BeverageType.Cider, 13, 20, 0x9C8, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Milk, 7, 20, 0x9F0, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Ale, 16, 20, 0x1F95, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Cider, 11, 20, 0x1F97, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Liquor, 9, 20, 0x1F99, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Wine, 11, 20, 0x1F9B, 0 ) );
Add( new BeverageBuyInfo( typeof( Pitcher ), BeverageType.Water, 11, 20, 0x1F9D, 0 ) );
Add( new GenericBuyInfo( typeof( BreadLoaf ), 6, 10, 0x103B, 0 ) );
Add( new GenericBuyInfo( typeof( CheeseWheel ), 21, 10, 0x97E, 0 ) );
Add( new GenericBuyInfo( typeof( CookedBird ), 17, 20, 0x9B7, 0 ) );
Add( new GenericBuyInfo( typeof( LambLeg ), 8, 20, 0x160A, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfCarrots ), 3, 20, 0x15F9, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfCorn ), 3, 20, 0x15FA, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfLettuce ), 3, 20, 0x15FB, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfPeas ), 3, 20, 0x15FC, 0 ) );
Add( new GenericBuyInfo( typeof( EmptyPewterBowl ), 2, 20, 0x15FD, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfCorn ), 3, 20, 0x15FE, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfLettuce ), 3, 20, 0x15FF, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfPeas ), 3, 20, 0x1600, 0 ) );
Add( new GenericBuyInfo( typeof( PewterBowlOfPotatos ), 3, 20, 0x1601, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfStew ), 3, 20, 0x1604, 0 ) );
Add( new GenericBuyInfo( typeof( WoodenBowlOfTomatoSoup ), 3, 20, 0x1606, 0 ) );
Add( new GenericBuyInfo( typeof( ApplePie ), 7, 20, 0x1041, 0 ) ); //OSI just has Pie, not Apple/Fruit/Meat
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
}
}
}
}

View file

@ -0,0 +1,152 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBWeaponSmith: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBWeaponSmith()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( BlackStaff ), 22, 20, 0xDF1, 0 ) );
Add( new GenericBuyInfo( typeof( Club ), 16, 20, 0x13B4, 0 ) );
Add( new GenericBuyInfo( typeof( GnarledStaff ), 16, 20, 0x13F8, 0 ) );
Add( new GenericBuyInfo( typeof( Mace ), 28, 20, 0xF5C, 0 ) );
Add( new GenericBuyInfo( typeof( Maul ), 21, 20, 0x143B, 0 ) );
Add( new GenericBuyInfo( typeof( QuarterStaff ), 19, 20, 0xE89, 0 ) );
Add( new GenericBuyInfo( typeof( ShepherdsCrook ), 20, 20, 0xE81, 0 ) );
Add( new GenericBuyInfo( typeof( SmithHammer ), 21, 20, 0x13E3, 0 ) );
Add( new GenericBuyInfo( typeof( Rapier ), 23, 20, 0x1403, 0 ) );
Add( new GenericBuyInfo( typeof( Spear ), 31, 20, 0xF62, 0 ) );
Add( new GenericBuyInfo( typeof( WarHammer ), 25, 20, 0x1439, 0 ) );
Add( new GenericBuyInfo( typeof( WarMace ), 31, 20, 0x1407, 0 ) );
Add( new GenericBuyInfo( typeof( Hatchet ), 25, 20, 0xF44, 0 ) );
Add( new GenericBuyInfo( typeof( Hatchet ), 27, 20, 0xF43, 0 ) );
Add( new GenericBuyInfo( typeof( WarFork ), 32, 20, 0x1405, 0 ) );
switch ( Utility.Random( 3 ))
{
case 0:
{
Add( new GenericBuyInfo( typeof( GreatAxe ), 30, 20, 0xF45, 0 ) );
Add( new GenericBuyInfo( typeof( Bardiche ), 60, 20, 0xF4D, 0 ) );
Add( new GenericBuyInfo( typeof( BattleAxe ), 26, 20, 0xF47, 0 ) );
Add( new GenericBuyInfo( typeof( TwoHandedAxe ), 32, 20, 0x1443, 0 ) );
Add( new GenericBuyInfo( typeof( Bow ), 35, 20, 0x13B2, 0 ) );
Add( new GenericBuyInfo( typeof( ButcherKnife ), 14, 20, 0x13F6, 0 ) );
Add( new GenericBuyInfo( typeof( Crossbow ), 46, 20, 0xF50, 0 ) );
Add( new GenericBuyInfo( typeof( HeavyCrossbow ), 55, 20, 0x13FD, 0 ) );
Add( new GenericBuyInfo( typeof( Cutlass ), 24, 20, 0x1441, 0 ) );
Add( new GenericBuyInfo( typeof( Dagger ), 21, 20, 0xF52, 0 ) );
Add( new GenericBuyInfo( typeof( Halberd ), 42, 20, 0x143E, 0 ) );
Add( new GenericBuyInfo( typeof( HammerPick ), 26, 20, 0x143D, 0 ) );
Add( new GenericBuyInfo( typeof( Katana ), 33, 20, 0x13FF, 0 ) );
Add( new GenericBuyInfo( typeof( Kryss ), 32, 20, 0x1401, 0 ) );
Add( new GenericBuyInfo( typeof( Broadsword ), 35, 20, 0xF5E, 0 ) );
Add( new GenericBuyInfo( typeof( Longsword ), 55, 20, 0xF61, 0 ) );
Add( new GenericBuyInfo( typeof( ThinLongsword ), 27, 20, 0x13B8, 0 ) );
Add( new GenericBuyInfo( typeof( VikingSword ), 55, 20, 0x13B9, 0 ) );
Add( new GenericBuyInfo( typeof( Cleaver ), 15, 20, 0xEC3, 0 ) );
Add( new GenericBuyInfo( typeof( Axe ), 40, 20, 0xF49, 0 ) );
Add( new GenericBuyInfo( typeof( DoubleAxe ), 52, 20, 0xF4B, 0 ) );
Add( new GenericBuyInfo( typeof( Pickaxe ), 22, 20, 0xE86, 0 ) );
Add( new GenericBuyInfo( typeof( Pitchfork ), 19, 20, 0xE87, 0 ) );
Add( new GenericBuyInfo( typeof( Scimitar ), 36, 20, 0x13B6, 0 ) );
Add( new GenericBuyInfo( typeof( SkinningKnife ), 14, 20, 0xEC4, 0 ) );
Add( new GenericBuyInfo( typeof( LargeBattleAxe ), 33, 20, 0x13FB, 0 ) );
Add( new GenericBuyInfo( typeof( WarAxe ), 29, 20, 0x13B0, 0 ) );
Add( new GenericBuyInfo( typeof( Pike ), 39, 20, 0x26BE, 0 ) );
Add( new GenericBuyInfo( typeof( Scythe ), 39, 20, 0x26BA, 0 ) );
break;
}
}
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( BattleAxe ), 13 );
Add( typeof( DoubleAxe ), 26 );
Add( typeof( GreatAxe ), 15 );
Add( typeof( LargeBattleAxe ),16 );
Add( typeof( Pickaxe ), 11 );
Add( typeof( TwoHandedAxe ), 16 );
Add( typeof( WarAxe ), 14 );
Add( typeof( Axe ), 20 );
Add( typeof( Bardiche ), 30 );
Add( typeof( Halberd ), 21 );
Add( typeof( ButcherKnife ), 7 );
Add( typeof( Cleaver ), 7 );
Add( typeof( Dagger ), 10 );
Add( typeof( SkinningKnife ), 7 );
Add( typeof( Club ), 8 );
Add( typeof( HammerPick ), 13 );
Add( typeof( Mace ), 14 );
Add( typeof( Maul ), 10 );
Add( typeof( WarHammer ), 12 );
Add( typeof( WarMace ), 15 );
Add( typeof( HeavyCrossbow ), 27 );
Add( typeof( Bow ), 17 );
Add( typeof( Crossbow ), 23 );
Add( typeof( Scythe ), 19 );
Add( typeof( Pike ), 19 );
Add( typeof( Spear ), 15 );
Add( typeof( Pitchfork ), 9 );
Add( typeof( Rapier ), 11 );
Add( typeof( BlackStaff ), 11 );
Add( typeof( GnarledStaff ), 8 );
Add( typeof( QuarterStaff ), 9 );
Add( typeof( ShepherdsCrook ), 10 );
Add( typeof( SmithHammer ), 10 );
Add( typeof( Broadsword ), 17 );
Add( typeof( Cutlass ), 12 );
Add( typeof( Katana ), 16 );
Add( typeof( Kryss ), 16 );
Add( typeof( Longsword ), 27 );
Add( typeof( Scimitar ), 18 );
Add( typeof( ThinLongsword ), 13 );
Add( typeof( VikingSword ), 27 );
Add( typeof( Hatchet ), 13 );
Add( typeof( WarFork ), 16 );
}
}
}
}

View file

@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBWeaver: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBWeaver()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Dyes ), 8, 20, 0xFA9, 0 ) );
Add( new GenericBuyInfo( typeof( DyeTub ), 8, 20, 0xFAB, 0 ) );
Add( new GenericBuyInfo( typeof( PigmentTub ), PigmentTub.tubCost(), 20, 0xFAB, 0 ) );
Add( new GenericBuyInfo( typeof( Scissors ), 11, 20, 0xF9F, 0 ) );
Add( new GenericBuyInfo( typeof( UncutCloth ), 6, 20, 0x1761, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( UncutCloth ), 6, 20, 0x1762, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( UncutCloth ), 6, 20, 0x1763, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( UncutCloth ), 6, 20, 0x1764, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( BoltOfCloth ), 150, 20, 0xf9B, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( BoltOfCloth ), 150, 20, 0xf9C, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( BoltOfCloth ), 150, 20, 0xf96, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( BoltOfCloth ), 150, 20, 0xf97, Utility.RandomHue() ) );
Add( new GenericBuyInfo( typeof( DarkYarn ), 18, 20, 0xE1D, 0 ) );
Add( new GenericBuyInfo( typeof( LightYarn ), 18, 20, 0xE1E, 0 ) );
Add( new GenericBuyInfo( typeof( LightYarnUnraveled ), 18, 20, 0xE1F, 0 ) );
Add( new GenericBuyInfo( typeof( Cotton ), 102, 20, 0xDF9, 0 ) );
Add( new GenericBuyInfo( typeof( Wool ), 62, 20, 0xDF8, 0 ) );
Add( new GenericBuyInfo( typeof( Flax ), 102, 20, 0x1A9C, 0 ) );
Add( new GenericBuyInfo( typeof( SpoolOfThread ), 18, 20, 0xFA0, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Dyes ), 4 );
Add( typeof( DyeTub ), 4 );
Add( typeof( PigmentTub ), (int)(PigmentTub.tubCost()/2) );
Add( typeof( Scissors ), 6 );
Add( typeof( LightYarnUnraveled ), 1 );
Add( typeof( LightYarn ), 1 );
Add( typeof( DarkYarn ), 1 );
Add( typeof( SpoolOfThread ), 1 );
Add( typeof( Flax ), 2 );
Add( typeof( Cotton ), 2 );
Add( typeof( Wool ), 3 );
}
}
}
}

View file

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBAxeWeapon: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBAxeWeapon()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( GreatAxe ), 30, 20, 0xF45, 0 ) );
Add( new GenericBuyInfo( typeof( BattleAxe ), 26, 20, 0xF47, 0 ) );
Add( new GenericBuyInfo( typeof( TwoHandedAxe ), 32, 20, 0x1443, 0 ) );
Add( new GenericBuyInfo( typeof( Axe ), 40, 20, 0xF49, 0 ) );
Add( new GenericBuyInfo( typeof( DoubleAxe ), 52, 20, 0xF4B, 0 ) );
Add( new GenericBuyInfo( typeof( Pickaxe ), 22, 20, 0xE86, 0 ) );
Add( new GenericBuyInfo( typeof( LargeBattleAxe ), 33, 20, 0x13FB, 0 ) );
Add( new GenericBuyInfo( typeof( WarAxe ), 29, 20, 0x13B0, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( BattleAxe ), 13 );
Add( typeof( DoubleAxe ), 26 );
Add( typeof( GreatAxe ), 15 );
Add( typeof( LargeBattleAxe ),16 );
Add( typeof( Pickaxe ), 11 );
Add( typeof( TwoHandedAxe ), 16 );
Add( typeof( WarAxe ), 14 );
Add( typeof( Axe ), 20 );
}
}
}
}

View file

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBKnifeWeapon: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBKnifeWeapon()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( ButcherKnife ), 14, 20, 0x13F6, 0 ) );
Add( new GenericBuyInfo( typeof( Dagger ), 21, 20, 0xF52, 0 ) );
Add( new GenericBuyInfo( typeof( Cleaver ), 15, 20, 0xEC3, 0 ) );
Add( new GenericBuyInfo( typeof( SkinningKnife ), 14, 20, 0xEC4, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( ButcherKnife ), 7 );
Add( typeof( Cleaver ), 7 );
Add( typeof( Dagger ), 10 );
Add( typeof( SkinningKnife ), 7 );
}
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBMaceWeapon: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBMaceWeapon()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( HammerPick ), 26, 20, 0x143D, 0 ) );
Add( new GenericBuyInfo( typeof( Club ), 16, 20, 0x13B4, 0 ) );
Add( new GenericBuyInfo( typeof( Mace ), 28, 20, 0xF5C, 0 ) );
Add( new GenericBuyInfo( typeof( Maul ), 21, 20, 0x143B, 0 ) );
Add( new GenericBuyInfo( typeof( WarHammer ), 25, 20, 0x1439, 0 ) );
Add( new GenericBuyInfo( typeof( WarMace ), 31, 20, 0x1407, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Club ), 8 );
Add( typeof( HammerPick ), 13 );
Add( typeof( Mace ), 14 );
Add( typeof( Maul ), 10 );
Add( typeof( WarHammer ), 12 );
Add( typeof( WarMace ), 15 );
}
}
}
}

View file

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBPoleArmWeapon: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBPoleArmWeapon()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Bardiche ), 60, 20, 0xF4D, 0 ) );
Add( new GenericBuyInfo( typeof( Halberd ), 42, 20, 0x143E, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Bardiche ), 30 );
Add( typeof( Halberd ), 21 );
}
}
}
}

View file

@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBRangedWeapon: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBRangedWeapon()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Crossbow ), 55, 20, 0xF50, 0 ) );
Add( new GenericBuyInfo( typeof( HeavyCrossbow ), 55, 20, 0x13FD, 0 ) );
Add( new GenericBuyInfo( typeof( Bolt ), 2, Utility.Random( 30, 60 ), 0x1BFB, 0 ) );
Add( new GenericBuyInfo( typeof( Bow ), 40, 20, 0x13B2, 0 ) );
Add( new GenericBuyInfo( typeof( Arrow ), 2, Utility.Random( 30, 60 ), 0xF3F, 0 ) );
Add( new GenericBuyInfo( typeof( Feather ), 2, Utility.Random( 30, 60 ), 0x1BD1, 0 ) );
Add( new GenericBuyInfo( typeof( Shaft ), 3, Utility.Random( 30, 60 ), 0x1BD4, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Bolt ), 1 );
Add( typeof( Arrow ), 1 );
Add( typeof( Shaft ), 1 );
Add( typeof( Feather ), 1 );
Add( typeof( HeavyCrossbow ), 27 );
Add( typeof( Bow ), 17 );
Add( typeof( Crossbow ), 25 );
}
}
}
}

View file

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBSpearForkWeapon: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBSpearForkWeapon()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Pike ), 39, 20, 0x26BE, 0 ) );
Add( new GenericBuyInfo( typeof( Pitchfork ), 19, 20, 0xE87, 0 ) );
Add( new GenericBuyInfo( typeof( Spear ), 31, 20, 0xF62, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Spear ), 15 );
Add( typeof( Pitchfork ), 9 );
Add( typeof( Pike ), 19 );
}
}
}
}

View file

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBStavesWeapon: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBStavesWeapon()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( BlackStaff ), 22, 20, 0xDF1, 0 ) );
Add( new GenericBuyInfo( typeof( GnarledStaff ), 16, 20, 0x13F8, 0 ) );
Add( new GenericBuyInfo( typeof( QuarterStaff ), 19, 20, 0xE89, 0 ) );
Add( new GenericBuyInfo( typeof( ShepherdsCrook ), 20, 20, 0xE81, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( BlackStaff ), 11 );
Add( typeof( GnarledStaff ), 8 );
Add( typeof( QuarterStaff ), 9 );
Add( typeof( ShepherdsCrook ), 10 );
}
}
}
}

View file

@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles
{
public class SBSwordWeapon: SBInfo
{
private List<GenericBuyInfo> m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBSwordWeapon()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : List<GenericBuyInfo>
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( Cutlass ), 24, 20, 0x1441, 0 ) );
Add( new GenericBuyInfo( typeof( Katana ), 33, 20, 0x13FF, 0 ) );
Add( new GenericBuyInfo( typeof( Kryss ), 32, 20, 0x1401, 0 ) );
Add( new GenericBuyInfo( typeof( Broadsword ), 35, 20, 0xF5E, 0 ) );
Add( new GenericBuyInfo( typeof( Longsword ), 55, 20, 0xF61, 0 ) );
Add( new GenericBuyInfo( typeof( ThinLongsword ), 27, 20, 0x13B8, 0 ) );
Add( new GenericBuyInfo( typeof( VikingSword ), 55, 20, 0x13B9, 0 ) );
Add( new GenericBuyInfo( typeof( Rapier ), 23, 20, 0x1403, 0 ) );
Add( new GenericBuyInfo( typeof( Scimitar ), 36, 20, 0x13B6, 0 ) );
Add( new GenericBuyInfo( typeof( Scythe ), 39, 20, 0x26BA, 0 ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
Add( typeof( Broadsword ), 17 );
Add( typeof( Cutlass ), 12 );
Add( typeof( Katana ), 16 );
Add( typeof( Kryss ), 16 );
Add( typeof( Longsword ), 27 );
Add( typeof( Scimitar ), 18 );
Add( typeof( ThinLongsword ), 13 );
Add( typeof( VikingSword ), 27 );
Add( typeof( Scythe ), 19 );
Add( typeof( Rapier ), 11 );
}
}
}
}

View file

@ -0,0 +1,560 @@
using System;
using System.Text;
using System.Collections.Generic;
using Server;
using Server.Prompts;
using Server.Gumps;
using Server.Network;
using Server.Items;
using Server.Misc;
using Server.Commands;
namespace Server.Mobiles
{
public interface ITownCrierEntryList
{
List<TownCrierEntry> Entries{ get; }
TownCrierEntry GetRandomEntry();
TownCrierEntry AddEntry( string[] lines, TimeSpan duration );
void RemoveEntry( TownCrierEntry entry );
}
public class GlobalTownCrierEntryList : ITownCrierEntryList
{
private static GlobalTownCrierEntryList m_Instance;
public static void Initialize()
{
CommandSystem.Register( "TownCriers", AccessLevel.GameMaster, new CommandEventHandler( TownCriers_OnCommand ) );
}
[Usage( "TownCriers" )]
[Description( "Manages the global town crier list." )]
public static void TownCriers_OnCommand( CommandEventArgs e )
{
e.Mobile.SendGump( new TownCrierGump( e.Mobile, Instance ) );
}
public static GlobalTownCrierEntryList Instance
{
get
{
if ( m_Instance == null )
m_Instance = new GlobalTownCrierEntryList();
return m_Instance;
}
}
public bool IsEmpty{ get{ return ( m_Entries == null || m_Entries.Count == 0 ); } }
public GlobalTownCrierEntryList()
{
}
private List<TownCrierEntry> m_Entries;
public List<TownCrierEntry> Entries
{
get{ return m_Entries; }
}
public TownCrierEntry GetRandomEntry()
{
if ( m_Entries == null || m_Entries.Count == 0 )
return null;
for ( int i = m_Entries.Count - 1; m_Entries != null && i >= 0; --i )
{
if ( i >= m_Entries.Count )
continue;
TownCrierEntry tce = m_Entries[i];
if ( tce.Expired )
RemoveEntry( tce );
}
if ( m_Entries == null || m_Entries.Count == 0 )
return null;
return m_Entries[Utility.Random( m_Entries.Count )];
}
public TownCrierEntry AddEntry( string[] lines, TimeSpan duration )
{
if ( m_Entries == null )
m_Entries = new List<TownCrierEntry>();
TownCrierEntry tce = new TownCrierEntry( lines, duration );
m_Entries.Add( tce );
List<TownCrier> instances = TownCrier.Instances;
for ( int i = 0; i < instances.Count; ++i )
instances[i].ForceBeginAutoShout();
return tce;
}
public void RemoveEntry( TownCrierEntry tce )
{
if ( m_Entries == null )
return;
m_Entries.Remove( tce );
if ( m_Entries.Count == 0 )
m_Entries = null;
}
}
public class TownCrierEntry
{
private string[] m_Lines;
private DateTime m_ExpireTime;
public string[] Lines{ get{ return m_Lines; } }
public DateTime ExpireTime{ get{ return m_ExpireTime; } }
public bool Expired{ get{ return ( DateTime.Now >= m_ExpireTime ); } }
public TownCrierEntry( string[] lines, TimeSpan duration )
{
m_Lines = lines;
if ( duration < TimeSpan.Zero )
duration = TimeSpan.Zero;
else if ( duration > TimeSpan.FromDays( 365.0 ) )
duration = TimeSpan.FromDays( 365.0 );
m_ExpireTime = DateTime.Now + duration;
}
}
public class TownCrierDurationPrompt : Prompt
{
private ITownCrierEntryList m_Owner;
public TownCrierDurationPrompt( ITownCrierEntryList owner )
{
m_Owner = owner;
}
public override void OnResponse( Mobile from, string text )
{
TimeSpan ts;
if( !TimeSpan.TryParse( text, out ts ) )
{
from.SendMessage( "Value was not properly formatted. Use: <hours:minutes:seconds>" );
from.SendGump( new TownCrierGump( from, m_Owner ) );
return;
}
if ( ts < TimeSpan.Zero )
ts = TimeSpan.Zero;
from.SendMessage( "Duration set to: {0}", ts );
from.SendMessage( "Enter the first line to shout:" );
from.Prompt = new TownCrierLinesPrompt( m_Owner, null, new List<String>(), ts );
}
public override void OnCancel( Mobile from )
{
from.SendLocalizedMessage( 502980 ); // Message entry cancelled.
from.SendGump( new TownCrierGump( from, m_Owner ) );
}
}
public class TownCrierLinesPrompt : Prompt
{
private ITownCrierEntryList m_Owner;
private TownCrierEntry m_Entry;
private List<String> m_Lines;
private TimeSpan m_Duration;
public TownCrierLinesPrompt( ITownCrierEntryList owner, TownCrierEntry entry, List<String> lines, TimeSpan duration )
{
m_Owner = owner;
m_Entry = entry;
m_Lines = lines;
m_Duration = duration;
}
public override void OnResponse( Mobile from, string text )
{
m_Lines.Add( text );
from.SendMessage( "Enter the next line to shout, or press <ESC> if the message is finished." );
from.Prompt = new TownCrierLinesPrompt( m_Owner, m_Entry, m_Lines, m_Duration );
}
public override void OnCancel( Mobile from )
{
if ( m_Entry != null )
m_Owner.RemoveEntry( m_Entry );
if ( m_Lines.Count > 0 )
{
m_Owner.AddEntry( m_Lines.ToArray(), m_Duration );
from.SendMessage( "Message has been set." );
}
else
{
if ( m_Entry != null )
from.SendMessage( "Message deleted." );
else
from.SendLocalizedMessage( 502980 ); // Message entry cancelled.
}
from.SendGump( new TownCrierGump( from, m_Owner ) );
}
}
public class TownCrierGump : Gump
{
private Mobile m_From;
private ITownCrierEntryList m_Owner;
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( info.ButtonID == 1 )
{
m_From.SendMessage( "Enter the duration for the new message. Format: <hours:minutes:seconds>" );
m_From.Prompt = new TownCrierDurationPrompt( m_Owner );
}
else if ( info.ButtonID > 1 )
{
List<TownCrierEntry> entries = m_Owner.Entries;
int index = info.ButtonID - 2;
if ( entries != null && index < entries.Count )
{
TownCrierEntry tce = entries[index];
TimeSpan ts = tce.ExpireTime - DateTime.Now;
if ( ts < TimeSpan.Zero )
ts = TimeSpan.Zero;
m_From.SendMessage( "Editing entry #{0}.", index + 1 );
m_From.SendMessage( "Enter the first line to shout:" );
m_From.Prompt = new TownCrierLinesPrompt( m_Owner, tce, new List<String>(), ts );
}
}
}
public TownCrierGump( Mobile from, ITownCrierEntryList owner ) : base( 50, 50 )
{
m_From = from;
m_Owner = owner;
from.CloseGump( typeof( TownCrierGump ) );
AddPage( 0 );
List<TownCrierEntry> entries = owner.Entries;
owner.GetRandomEntry(); // force expiration checks
int count = 0;
if ( entries != null )
count = entries.Count;
AddImageTiled( 0, 0, 300, 38 + (count == 0 ? 20 : (count * 85)), 0xA40 );
AddAlphaRegion( 1, 1, 298, 36 + (count == 0 ? 20 : (count * 85)) );
AddHtml( 8, 8, 300 - 8 - 30, 20, "<basefont color=#FFFFFF><center>TOWN CRIER MESSAGES</center></basefont>", false, false );
AddButton( 300 - 8 - 30, 8, 0xFAB, 0xFAD, 1, GumpButtonType.Reply, 0 );
if ( count == 0 )
{
AddHtml( 8, 30, 284, 20, "<basefont color=#FFFFFF>The crier has no news.</basefont>", false, false );
}
else
{
for ( int i = 0; i < entries.Count; ++i )
{
TownCrierEntry tce = (TownCrierEntry)entries[i];
TimeSpan toExpire = tce.ExpireTime - DateTime.Now;
if ( toExpire < TimeSpan.Zero )
toExpire = TimeSpan.Zero;
StringBuilder sb = new StringBuilder();
sb.Append( "[Expires: " );
if ( toExpire.TotalHours >= 1 )
{
sb.Append( (int)toExpire.TotalHours );
sb.Append( ':' );
sb.Append( toExpire.Minutes.ToString( "D2" ) );
}
else
{
sb.Append( toExpire.Minutes );
}
sb.Append( ':' );
sb.Append( toExpire.Seconds.ToString( "D2" ) );
sb.Append( "] " );
for ( int j = 0; j < tce.Lines.Length; ++j )
{
if ( j > 0 )
sb.Append( "<br>" );
sb.Append( tce.Lines[j] );
}
AddHtml( 8, 35 + (i * 85), 254, 80, sb.ToString(), true, true );
AddButton( 300 - 8 - 26, 35 + (i * 85), 0x15E1, 0x15E5, 2 + i, GumpButtonType.Reply, 0 );
}
}
}
}
public class TownCrier : Mobile, ITownCrierEntryList
{
private List<TownCrierEntry> m_Entries;
private Timer m_NewsTimer;
private Timer m_AutoShoutTimer;
public List<TownCrierEntry> Entries
{
get{ return m_Entries; }
}
public TownCrierEntry GetRandomEntry()
{
if ( m_Entries == null || m_Entries.Count == 0 )
return GlobalTownCrierEntryList.Instance.GetRandomEntry();
for ( int i = m_Entries.Count - 1; m_Entries != null && i >= 0; --i )
{
if ( i >= m_Entries.Count )
continue;
TownCrierEntry tce = m_Entries[i];
if ( tce.Expired )
RemoveEntry( tce );
}
if ( m_Entries == null || m_Entries.Count == 0 )
return GlobalTownCrierEntryList.Instance.GetRandomEntry();
TownCrierEntry entry = GlobalTownCrierEntryList.Instance.GetRandomEntry();
if ( entry == null || Utility.RandomBool() )
entry = m_Entries[Utility.Random( m_Entries.Count )];
return entry;
}
public void ForceBeginAutoShout()
{
if ( m_AutoShoutTimer == null )
m_AutoShoutTimer = Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), TimeSpan.FromMinutes( 1.0 ), new TimerCallback( AutoShout_Callback ) );
}
public TownCrierEntry AddEntry( string[] lines, TimeSpan duration )
{
if ( m_Entries == null )
m_Entries = new List<TownCrierEntry>();
TownCrierEntry tce = new TownCrierEntry( lines, duration );
m_Entries.Add( tce );
if ( m_AutoShoutTimer == null )
m_AutoShoutTimer = Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), TimeSpan.FromMinutes( 1.0 ), new TimerCallback( AutoShout_Callback ) );
return tce;
}
public void RemoveEntry( TownCrierEntry tce )
{
if ( m_Entries == null )
return;
m_Entries.Remove( tce );
if ( m_Entries.Count == 0 )
m_Entries = null;
if ( m_Entries == null && GlobalTownCrierEntryList.Instance.IsEmpty )
{
if ( m_AutoShoutTimer != null )
m_AutoShoutTimer.Stop();
m_AutoShoutTimer = null;
}
}
private void AutoShout_Callback()
{
TownCrierEntry tce = GetRandomEntry();
if ( tce == null )
{
if ( m_AutoShoutTimer != null )
m_AutoShoutTimer.Stop();
m_AutoShoutTimer = null;
}
else if ( m_NewsTimer == null )
{
m_NewsTimer = Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), TimeSpan.FromSeconds( 3.0 ), new TimerStateCallback( ShoutNews_Callback ), new object[]{ tce, 0 } );
PublicOverheadMessage( MessageType.Regular, 0x3B2, 502976 ); // Hear ye! Hear ye!
}
}
private void ShoutNews_Callback( object state )
{
object[] states = (object[])state;
TownCrierEntry tce = (TownCrierEntry)states[0];
int index = (int)states[1];
if ( index < 0 || index >= tce.Lines.Length )
{
if ( m_NewsTimer != null )
m_NewsTimer.Stop();
m_NewsTimer = null;
}
else
{
PublicOverheadMessage( MessageType.Regular, 0x3B2, false, tce.Lines[index] );
states[1] = index + 1;
}
}
public override void OnDoubleClick( Mobile from )
{
if ( from.AccessLevel >= AccessLevel.GameMaster )
from.SendGump( new TownCrierGump( from, this ) );
else
base.OnDoubleClick( from );
}
public override bool HandlesOnSpeech( Mobile from )
{
return ( m_NewsTimer == null && from.Alive && InRange( from, 12 ) );
}
public override void OnSpeech( SpeechEventArgs e )
{
if ( m_NewsTimer == null && e.HasKeyword( 0x30 ) && e.Mobile.Alive && InRange( e.Mobile, 12 ) ) // *news*
{
Direction = GetDirectionTo( e.Mobile );
TownCrierEntry tce = GetRandomEntry();
if ( tce == null )
{
PublicOverheadMessage( MessageType.Regular, 0x3B2, 1005643 ); // I have no news at this time.
}
else
{
m_NewsTimer = Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), TimeSpan.FromSeconds( 3.0 ), new TimerStateCallback( ShoutNews_Callback ), new object[]{ tce, 0 } );
PublicOverheadMessage( MessageType.Regular, 0x3B2, 502978 ); // Some of the latest news!
}
}
}
private static List<TownCrier> m_Instances = new List<TownCrier>();
public static List<TownCrier> Instances
{
get{ return m_Instances; }
}
[Constructable]
public TownCrier()
{
m_Instances.Add( this );
InitStats( 100, 100, 25 );
Title = "the town crier";
Hue = Utility.RandomSkinHue();
Invulnerable = true;
NameHue = 0x35;
if ( this.Female = Utility.RandomBool() )
{
this.Body = 0x191;
this.Name = NameList.RandomName( "female" );
}
else
{
this.Body = 0x190;
this.Name = NameList.RandomName( "male" );
}
AddItem( new FancyShirt( Utility.RandomBlueHue() ) );
Item skirt;
switch ( Utility.Random( 2 ) )
{
case 0: skirt = new Skirt(); break;
default: case 1: skirt = new Kilt(); break;
}
skirt.Hue = Utility.RandomGreenHue();
AddItem( skirt );
AddItem( new FeatheredHat( Utility.RandomGreenHue() ) );
Item boots;
switch ( Utility.Random( 2 ) )
{
case 0: boots = new Boots(); break;
default: case 1: boots = new ThighBoots(); break;
}
AddItem( boots );
Utility.AssignRandomHair( this );
}
public override void OnDelete()
{
m_Instances.Remove( this );
base.OnDelete();
}
public TownCrier( Serial serial ) : base( serial )
{
m_Instances.Add( this );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,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();
}
}
}

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

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

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

View 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 );
}
}
}
}

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

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

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

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

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

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

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

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

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

Some files were not shown because too many files have changed in this diff Show more