diff --git a/Scripts/Items/Misc/Bedlam/GlobOfMonstreousInterredGrizzle.cs b/Scripts/Items/Misc/Bedlam/GlobOfMonstreousInterredGrizzle.cs
new file mode 100644
index 000000000..b81975702
--- /dev/null
+++ b/Scripts/Items/Misc/Bedlam/GlobOfMonstreousInterredGrizzle.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class GlobOfMonstreousInterredGrizzle : Item
+ {
+ public override int LabelNumber{ get{ return 1072117; } } // Glob of Monsterous Interred Grizzle
+
+ [Constructable]
+ public GlobOfMonstreousInterredGrizzle() : base( 0x2F3 )
+ {
+ }
+
+ public GlobOfMonstreousInterredGrizzle( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Bedlam/GrizzledSkullCollection.cs b/Scripts/Items/Misc/Bedlam/GrizzledSkullCollection.cs
new file mode 100644
index 000000000..fd83cdea5
--- /dev/null
+++ b/Scripts/Items/Misc/Bedlam/GrizzledSkullCollection.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class GrizzledSkullCollection : Item
+ {
+ public override int LabelNumber{ get{ return 1072116; } } // Grizzled Skull collection
+
+ [Constructable]
+ public GrizzledSkullCollection() : base( 0x21FC )
+ {
+ }
+
+ public GrizzledSkullCollection( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Bedlam/MonsterousInterredGrizzleMaggots.cs b/Scripts/Items/Misc/Bedlam/MonsterousInterredGrizzleMaggots.cs
new file mode 100644
index 000000000..f5922e8d5
--- /dev/null
+++ b/Scripts/Items/Misc/Bedlam/MonsterousInterredGrizzleMaggots.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class MonsterousInterredGrizzleMaggots : Item
+ {
+ public override int LabelNumber{ get{ return 1075090; } } // Monsterous Interred Grizzle Maggots
+
+ [Constructable]
+ public MonsterousInterredGrizzleMaggots() : base( 0x2633 )
+ {
+ }
+
+ public MonsterousInterredGrizzleMaggots( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Bedlam/ResolvesBridle.cs b/Scripts/Items/Misc/Bedlam/ResolvesBridle.cs
new file mode 100644
index 000000000..98cc041bd
--- /dev/null
+++ b/Scripts/Items/Misc/Bedlam/ResolvesBridle.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class ResolvesBridle : Item
+ {
+ public override int LabelNumber{ get{ return 1074761; } } // Resolve's Bridle
+
+ [Constructable]
+ public ResolvesBridle() : base( 0x1374 )
+ {
+ }
+
+ public ResolvesBridle( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Bedlam/TombstoneOfTheDamned.cs b/Scripts/Items/Misc/Bedlam/TombstoneOfTheDamned.cs
new file mode 100644
index 000000000..e1cd09e0f
--- /dev/null
+++ b/Scripts/Items/Misc/Bedlam/TombstoneOfTheDamned.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class TombstoneOfTheDamned : Item
+ {
+ public override int LabelNumber{ get{ return 1072123; } } // Tombstone of the Damned
+
+ [Constructable]
+ public TombstoneOfTheDamned() : base( Utility.RandomMinMax( 0xED7, 0xEDE ) )
+ {
+ }
+
+ public TombstoneOfTheDamned( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Blighted Grove/AbscessTail.cs b/Scripts/Items/Misc/Blighted Grove/AbscessTail.cs
new file mode 100644
index 000000000..4e0463349
--- /dev/null
+++ b/Scripts/Items/Misc/Blighted Grove/AbscessTail.cs
@@ -0,0 +1,36 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class AbscessTail : Item
+ {
+ public override int LabelNumber{ get{ return 1074231; } } // Abscess' Tail
+
+ [Constructable]
+ public AbscessTail() : base( 0x1A9D )
+ {
+ LootType = LootType.Blessed;
+ Hue = 0x51D; // TODO check
+ }
+
+ public AbscessTail( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Blighted Grove/CoilsFang.cs b/Scripts/Items/Misc/Blighted Grove/CoilsFang.cs
new file mode 100644
index 000000000..0525efd49
--- /dev/null
+++ b/Scripts/Items/Misc/Blighted Grove/CoilsFang.cs
@@ -0,0 +1,36 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class CoilsFang : Item
+ {
+ public override int LabelNumber{ get{ return 1074229; } } // Coil's Fang
+
+ [Constructable]
+ public CoilsFang() : base( 0x10E8 )
+ {
+ LootType = LootType.Blessed;
+ Hue = 0x487;
+ }
+
+ public CoilsFang( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Blighted Grove/EternallyCorruptTree.cs b/Scripts/Items/Misc/Blighted Grove/EternallyCorruptTree.cs
new file mode 100644
index 000000000..2e210b404
--- /dev/null
+++ b/Scripts/Items/Misc/Blighted Grove/EternallyCorruptTree.cs
@@ -0,0 +1,35 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class EternallyCorruptTree : Item
+ {
+ public override int LabelNumber{ get{ return 1072093; } } // Eternally Corrupt Tree
+
+ [Constructable]
+ public EternallyCorruptTree() : base( 0x20FA )
+ {
+ Hue = Utility.RandomMinMax( 0x899, 0x8B0 );
+ }
+
+ public EternallyCorruptTree( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Blighted Grove/HydraScale.cs b/Scripts/Items/Misc/Blighted Grove/HydraScale.cs
new file mode 100644
index 000000000..53598338a
--- /dev/null
+++ b/Scripts/Items/Misc/Blighted Grove/HydraScale.cs
@@ -0,0 +1,36 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class HydraScale : Item
+ {
+ public override int LabelNumber{ get{ return 1074760; } } // A hydra scale.
+
+ [Constructable]
+ public HydraScale() : base( 0x26B4 )
+ {
+ LootType = LootType.Blessed;
+ Hue = 0xC2; // TODO check
+ }
+
+ public HydraScale( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Blighted Grove/MelisandesFermentedWine.cs b/Scripts/Items/Misc/Blighted Grove/MelisandesFermentedWine.cs
new file mode 100644
index 000000000..6ae6adc9d
--- /dev/null
+++ b/Scripts/Items/Misc/Blighted Grove/MelisandesFermentedWine.cs
@@ -0,0 +1,59 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class MelisandesFermentedWine : GreaterExplosionPotion
+ {
+ public override int LabelNumber{ get{ return 1072114; } } // Melisande's Fermented Wine
+
+ private static int[] m_Hues = new int[]
+ {
+ 0xB, 0xF, 0x48D // TODO update
+ };
+
+ [Constructable]
+ public MelisandesFermentedWine() : base()
+ {
+ Stackable = false;
+ ItemID = 0x99B;
+ Hue = Utility.RandomList( m_Hues );
+ }
+
+ public MelisandesFermentedWine( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Drink( Mobile from )
+ {
+ if ( from.NetState.SupportsExpansion( Expansion.ML ) )
+ base.Drink( from );
+ else
+ from.SendLocalizedMessage( 1072791 ); // You must upgrade to Mondain's Legacy in order to use that item.
+ }
+
+ public override void GetProperties( ObjectPropertyList list )
+ {
+ base.GetProperties( list );
+
+ list.Add( 1074502 ); // It looks explosive.
+ list.Add( 1075085 ); // Requirement: Mondain's Legacy
+ }
+
+ 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();
+ }
+ }
+}
+
+
diff --git a/Scripts/Items/Misc/Blighted Grove/MelisandesHairDye.cs b/Scripts/Items/Misc/Blighted Grove/MelisandesHairDye.cs
new file mode 100644
index 000000000..539642d43
--- /dev/null
+++ b/Scripts/Items/Misc/Blighted Grove/MelisandesHairDye.cs
@@ -0,0 +1,92 @@
+using System;
+using Server;
+using Server.Gumps;
+
+namespace Server.Items
+{
+ public class MelisandesHairDye : Item
+ {
+ public override int LabelNumber{ get{ return 1041088; } } // Hair Dye
+
+ [Constructable]
+ public MelisandesHairDye() : base( 0xEFF )
+ {
+ Hue = Utility.RandomMinMax( 0x47E, 0x499 );
+ }
+
+ public MelisandesHairDye( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void OnDoubleClick( Mobile from )
+ {
+ if ( IsChildOf( from.Backpack ) )
+ {
+ if ( from.NetState.SupportsExpansion( Expansion.ML ) )
+ from.SendGump( new ConfirmGump( this ) );
+ else
+ from.SendLocalizedMessage( 1072791 ); // You must upgrade to Mondain's Legacy in order to use that item.
+ }
+ else
+ from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
+ }
+
+ public override void GetProperties( ObjectPropertyList list )
+ {
+ base.GetProperties( list );
+
+ list.Add( 1075085 ); // Requirement: Mondain's Legacy
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.Write( (int) 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadInt();
+ }
+
+ private class ConfirmGump : BaseConfirmGump
+ {
+ public override int TitleNumber{ get{ return 1074395; } } //
Use Permanent Hair Dye
+ public override int LabelNumber{ get{ return 1074396; } } // This special hair dye is made of a unique mixture of leaves, permanently changing one's hair color until another dye is used.
+
+ private Item m_Item;
+
+ public ConfirmGump( Item item ) : base()
+ {
+ m_Item = item;
+ }
+
+ public override void Confirm( Mobile from )
+ {
+ if ( m_Item != null && !m_Item.Deleted )
+ {
+ if ( from.HairItemID != 0 )
+ {
+ from.HairHue = m_Item.Hue;
+ from.PlaySound( 0x240 );
+ from.SendLocalizedMessage( 502622 ); // You dye your hair.
+ m_Item.Delete();
+ }
+ else
+ from.SendLocalizedMessage( 502623 ); // You have no hair to dye and you cannot use this.
+ }
+ else
+ from.SendLocalizedMessage( 1073461 ); // You don't have enough dye.
+ }
+
+ public override void Refuse( Mobile from )
+ {
+ from.SendLocalizedMessage( 502620 ); // You decide not to dye your hair.
+ }
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Blighted Grove/SalivasFeather.cs b/Scripts/Items/Misc/Blighted Grove/SalivasFeather.cs
new file mode 100644
index 000000000..5798dd5d4
--- /dev/null
+++ b/Scripts/Items/Misc/Blighted Grove/SalivasFeather.cs
@@ -0,0 +1,36 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class SalivasFeather : Item
+ {
+ public override int LabelNumber{ get{ return 1074234; } } // Saliva's Feather
+
+ [Constructable]
+ public SalivasFeather() : base( 0x1020 )
+ {
+ LootType = LootType.Blessed;
+ Hue = 0x5C;
+ }
+
+ public SalivasFeather( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Blighted Grove/SamplesOfCorruptedWater.cs b/Scripts/Items/Misc/Blighted Grove/SamplesOfCorruptedWater.cs
new file mode 100644
index 000000000..0a97f6cc7
--- /dev/null
+++ b/Scripts/Items/Misc/Blighted Grove/SamplesOfCorruptedWater.cs
@@ -0,0 +1,35 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class SamplesOfCorruptedWater : Item
+ {
+ public override int LabelNumber{ get{ return 1074999; } } // samples of corrupted water
+
+ [Constructable]
+ public SamplesOfCorruptedWater() : base( 0xEFE )
+ {
+ LootType = LootType.Blessed;
+ }
+
+ public SamplesOfCorruptedWater( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Blighted Grove/TaintedSeeds.cs b/Scripts/Items/Misc/Blighted Grove/TaintedSeeds.cs
new file mode 100644
index 000000000..b15231edc
--- /dev/null
+++ b/Scripts/Items/Misc/Blighted Grove/TaintedSeeds.cs
@@ -0,0 +1,36 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class TaintedSeeds : Item
+ {
+ public override int LabelNumber{ get{ return 1074233; } } // Tainted Seeds
+
+ [Constructable]
+ public TaintedSeeds() : base( 0xDFA )
+ {
+ LootType = LootType.Blessed;
+ Hue = 0x48; // TODO check
+ }
+
+ public TaintedSeeds( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Blighted Grove/ThorvaldsMedallion.cs b/Scripts/Items/Misc/Blighted Grove/ThorvaldsMedallion.cs
new file mode 100644
index 000000000..79b3980cc
--- /dev/null
+++ b/Scripts/Items/Misc/Blighted Grove/ThorvaldsMedallion.cs
@@ -0,0 +1,36 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class ThorvaldsMedallion : Item
+ {
+ public override int LabelNumber{ get{ return 1074232; } } // Thorvald's Medallion
+
+ [Constructable]
+ public ThorvaldsMedallion() : base( 0x2AAA )
+ {
+ LootType = LootType.Blessed;
+ Hue = 0x47F; // TODO check
+ }
+
+ public ThorvaldsMedallion( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Blighted Grove/ThrashersTail.cs b/Scripts/Items/Misc/Blighted Grove/ThrashersTail.cs
new file mode 100644
index 000000000..4dee2e11a
--- /dev/null
+++ b/Scripts/Items/Misc/Blighted Grove/ThrashersTail.cs
@@ -0,0 +1,36 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class ThrashersTail : Item
+ {
+ public override int LabelNumber{ get{ return 1074230; } } // Thrasher's Tail
+
+ [Constructable]
+ public ThrashersTail() : base( 0x1A9D )
+ {
+ LootType = LootType.Blessed;
+ Hue = 0x455;
+ }
+
+ public ThrashersTail( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/HoveringWisp.cs b/Scripts/Items/Misc/HoveringWisp.cs
new file mode 100644
index 000000000..00697ed71
--- /dev/null
+++ b/Scripts/Items/Misc/HoveringWisp.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class HoveringWisp : Item
+ {
+ public override int LabelNumber{ get{ return 1072881; } } // hovering wisp
+
+ [Constructable]
+ public HoveringWisp() : base( 0x2100 )
+ {
+ }
+
+ public HoveringWisp( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Labyrinth/MinotaurArtifact.cs b/Scripts/Items/Misc/Labyrinth/MinotaurArtifact.cs
new file mode 100644
index 000000000..19f6a3d03
--- /dev/null
+++ b/Scripts/Items/Misc/Labyrinth/MinotaurArtifact.cs
@@ -0,0 +1,41 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class MinotaurArtifact : Item
+ {
+ public override int LabelNumber{ get{ return 1074826; } } // Minotaur Artifact
+
+ [Constructable]
+ public MinotaurArtifact() : base( Utility.RandomList( 0xB46, 0xB48, 0x9ED ) )
+ {
+ switch ( ItemID )
+ {
+ case 0x9ED: Weight = 30; break;
+ default: Weight = 5; break;
+ }
+
+ LootType = LootType.Blessed;
+ Hue = 0x100;
+ }
+
+ public MinotaurArtifact( 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();
+ }
+ }
+}
diff --git a/Scripts/Items/Misc/Painted Caves/GrobusFur.cs b/Scripts/Items/Misc/Painted Caves/GrobusFur.cs
new file mode 100644
index 000000000..ca4cddbc7
--- /dev/null
+++ b/Scripts/Items/Misc/Painted Caves/GrobusFur.cs
@@ -0,0 +1,35 @@
+using System;
+
+namespace Server.Items
+{
+ public class GrobusFur : Item
+ {
+ public override int LabelNumber{ get{ return 1074676; } } // Grobu's Fur
+
+ [Constructable]
+ public GrobusFur() : base( 0x11F4 )
+ {
+ LootType = LootType.Blessed;
+ Hue = 0x455;
+ }
+
+ public GrobusFur( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Painted Caves/PrimitiveFetish.cs b/Scripts/Items/Misc/Painted Caves/PrimitiveFetish.cs
new file mode 100644
index 000000000..0b8a6f113
--- /dev/null
+++ b/Scripts/Items/Misc/Painted Caves/PrimitiveFetish.cs
@@ -0,0 +1,35 @@
+using System;
+
+namespace Server.Items
+{
+ public class PrimitiveFetish : Item
+ {
+ public override int LabelNumber{ get{ return 1074675; } } // Primitive Fetish
+
+ [Constructable]
+ public PrimitiveFetish() : base( 0x23F )
+ {
+ LootType = LootType.Blessed;
+ Hue = 0x244;
+ }
+
+ public PrimitiveFetish( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Palace of Paroxysmus/AcidProofRope.cs b/Scripts/Items/Misc/Palace of Paroxysmus/AcidProofRope.cs
new file mode 100644
index 000000000..7448ac34a
--- /dev/null
+++ b/Scripts/Items/Misc/Palace of Paroxysmus/AcidProofRope.cs
@@ -0,0 +1,35 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class AcidProofRope : Item
+ {
+ public override int LabelNumber{ get{ return 1074886; } } // Acid Proof Rope
+
+ [Constructable]
+ public AcidProofRope() : base( 0x20D )
+ {
+ Hue = 0x3D1; // TODO check
+ }
+
+ public AcidProofRope( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Palace of Paroxysmus/ParoxysmusCorrodedStein.cs b/Scripts/Items/Misc/Palace of Paroxysmus/ParoxysmusCorrodedStein.cs
new file mode 100644
index 000000000..eda78167b
--- /dev/null
+++ b/Scripts/Items/Misc/Palace of Paroxysmus/ParoxysmusCorrodedStein.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class ParoxysmusCorrodedStein : Item
+ {
+ public override int LabelNumber{ get{ return 1072083; } } // Paroxysmus' Corroded Stein
+
+ [Constructable]
+ public ParoxysmusCorrodedStein() : base( 0x9D6 )
+ {
+ }
+
+ public ParoxysmusCorrodedStein( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Palace of Paroxysmus/ParoxysmusDinner.cs b/Scripts/Items/Misc/Palace of Paroxysmus/ParoxysmusDinner.cs
new file mode 100644
index 000000000..f99f1ca5b
--- /dev/null
+++ b/Scripts/Items/Misc/Palace of Paroxysmus/ParoxysmusDinner.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class ParoxysmusDinner : Item
+ {
+ public override int LabelNumber{ get{ return 1072086; } } // Paroxysmus' Dinner
+
+ [Constructable]
+ public ParoxysmusDinner() : base( 0x1E95 )
+ {
+ }
+
+ public ParoxysmusDinner( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Palace of Paroxysmus/StringOfPartsOfParoxysmusVictims.cs b/Scripts/Items/Misc/Palace of Paroxysmus/StringOfPartsOfParoxysmusVictims.cs
new file mode 100644
index 000000000..85e65cea3
--- /dev/null
+++ b/Scripts/Items/Misc/Palace of Paroxysmus/StringOfPartsOfParoxysmusVictims.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class StringOfPartsOfParoxysmusVictims : Item
+ {
+ public override int LabelNumber{ get{ return 1072082; } } // String of Parts of Paroxysmus' Victims
+
+ [Constructable]
+ public StringOfPartsOfParoxysmusVictims() : base( 0xFD2 )
+ {
+ }
+
+ public StringOfPartsOfParoxysmusVictims( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Palace of Paroxysmus/SweatOfParoxysmus.cs b/Scripts/Items/Misc/Palace of Paroxysmus/SweatOfParoxysmus.cs
new file mode 100644
index 000000000..e801985ac
--- /dev/null
+++ b/Scripts/Items/Misc/Palace of Paroxysmus/SweatOfParoxysmus.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class SweatOfParoxysmus : Item
+ {
+ public override int LabelNumber{ get{ return 1072081; } } // Sweat of Paroxysmus
+
+ [Constructable]
+ public SweatOfParoxysmus() : base( 0xF01 )
+ {
+ }
+
+ public SweatOfParoxysmus( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Prism of Light/CrystallineFragments.cs b/Scripts/Items/Misc/Prism of Light/CrystallineFragments.cs
new file mode 100644
index 000000000..292da1066
--- /dev/null
+++ b/Scripts/Items/Misc/Prism of Light/CrystallineFragments.cs
@@ -0,0 +1,36 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class CrystallineFragments : Item
+ {
+ public override int LabelNumber{ get{ return 1073160; } } // Crystalline Fragments
+
+ [Constructable]
+ public CrystallineFragments() : base( 0x223B )
+ {
+ LootType = LootType.Blessed;
+ Hue = 0x47E;
+ }
+
+ public CrystallineFragments( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Prism of Light/IcyHeart.cs b/Scripts/Items/Misc/Prism of Light/IcyHeart.cs
new file mode 100644
index 000000000..a34d5f8cc
--- /dev/null
+++ b/Scripts/Items/Misc/Prism of Light/IcyHeart.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class IcyHeart : Item
+ {
+ public override int LabelNumber{ get{ return 1073162; } } // Icy Heart
+
+ [Constructable]
+ public IcyHeart() : base( 0x24B )
+ {
+ }
+
+ public IcyHeart( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Prism of Light/LuckyDagger.cs b/Scripts/Items/Misc/Prism of Light/LuckyDagger.cs
new file mode 100644
index 000000000..f52f273e6
--- /dev/null
+++ b/Scripts/Items/Misc/Prism of Light/LuckyDagger.cs
@@ -0,0 +1,33 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class LuckyDagger : Item
+ {
+ [Constructable]
+ public LuckyDagger() : base( 0xF52 )
+ {
+ Hue = 0x8A5;
+ }
+
+ public LuckyDagger( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Prism of Light/ProtectorsEssence.cs b/Scripts/Items/Misc/Prism of Light/ProtectorsEssence.cs
new file mode 100644
index 000000000..66fc810cd
--- /dev/null
+++ b/Scripts/Items/Misc/Prism of Light/ProtectorsEssence.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class ProtectorsEssence : Item
+ {
+ public override int LabelNumber{ get{ return 1073159; } } // Protector's Essence
+
+ [Constructable]
+ public ProtectorsEssence() : base( 0x23F )
+ {
+ }
+
+ public ProtectorsEssence( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Prism of Light/ShimmeringCrystal.cs b/Scripts/Items/Misc/Prism of Light/ShimmeringCrystal.cs
new file mode 100644
index 000000000..badac6e4b
--- /dev/null
+++ b/Scripts/Items/Misc/Prism of Light/ShimmeringCrystal.cs
@@ -0,0 +1,43 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class ShimmeringCrystals : Item
+ {
+ public override int LabelNumber{ get{ return 1075095; } } // Shimmering Crystals
+ public override bool ForceShowProperties{ get{ return true; } }
+
+ private static int[] m_ItemIDs = new int[]
+ {
+ 0x2206, 0x2207, 0x2208, 0x2209, 0x220A, 0x220B, 0x220C, 0x220D, 0x220E,
+ 0x2210, 0x2211, 0x2212, 0x2213, 0x2214, 0x2215, 0x2216, 0x2217, 0x2218,
+ 0x221A, 0x221B, 0x221C, 0x221D, 0x221E, 0x221F, 0x2220, 0x2221, 0x2222,
+ 0x2224, 0x2225, 0x2226, 0x2227, 0x2228, 0x2229, 0x222A, 0x222B, 0x222C
+ };
+
+ [Constructable]
+ public ShimmeringCrystals() : base( Utility.RandomList( m_ItemIDs ) )
+ {
+ }
+
+ public ShimmeringCrystals( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/The Citadel/DragonFlameSectBadge.cs b/Scripts/Items/Misc/The Citadel/DragonFlameSectBadge.cs
new file mode 100644
index 000000000..c4009dc44
--- /dev/null
+++ b/Scripts/Items/Misc/The Citadel/DragonFlameSectBadge.cs
@@ -0,0 +1,35 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class DragonFlameSectBadge : Item
+ {
+ public override int LabelNumber{ get{ return 1073141; } } // A Dragon Flame Sect Badge
+
+ [Constructable]
+ public DragonFlameSectBadge() : base( 0x23E )
+ {
+ LootType = LootType.Blessed;
+ }
+
+ public DragonFlameSectBadge( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/The Citadel/OrdersFromMinax.cs b/Scripts/Items/Misc/The Citadel/OrdersFromMinax.cs
new file mode 100644
index 000000000..9cbfe98f9
--- /dev/null
+++ b/Scripts/Items/Misc/The Citadel/OrdersFromMinax.cs
@@ -0,0 +1,35 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class OrdersFromMinax : Item
+ {
+ public override int LabelNumber{ get{ return 1074639; } } // Orders from Minax
+
+ [Constructable]
+ public OrdersFromMinax() : base( 0x2279 )
+ {
+ LootType = LootType.Blessed;
+ }
+
+ public OrdersFromMinax( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/The Citadel/SerpentFangSectBadge.cs b/Scripts/Items/Misc/The Citadel/SerpentFangSectBadge.cs
new file mode 100644
index 000000000..8f7f7a784
--- /dev/null
+++ b/Scripts/Items/Misc/The Citadel/SerpentFangSectBadge.cs
@@ -0,0 +1,35 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class SerpentFangSectBadge : Item
+ {
+ public override int LabelNumber{ get{ return 1073139; } } // A Serpent Fang Sect Badge
+
+ [Constructable]
+ public SerpentFangSectBadge() : base( 0x23C )
+ {
+ LootType = LootType.Blessed;
+ }
+
+ public SerpentFangSectBadge( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/The Citadel/TigerClawSectBadge.cs b/Scripts/Items/Misc/The Citadel/TigerClawSectBadge.cs
new file mode 100644
index 000000000..f6550e509
--- /dev/null
+++ b/Scripts/Items/Misc/The Citadel/TigerClawSectBadge.cs
@@ -0,0 +1,35 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class TigerClawSectBadge : Item
+ {
+ public override int LabelNumber{ get{ return 1073140; } } // A Tiger Claw Sect Badge
+
+ [Constructable]
+ public TigerClawSectBadge() : base( 0x23D )
+ {
+ LootType = LootType.Blessed;
+ }
+
+ public TigerClawSectBadge( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/The Citadel/TravestysCollectionOfShells.cs b/Scripts/Items/Misc/The Citadel/TravestysCollectionOfShells.cs
new file mode 100644
index 000000000..0b15393f6
--- /dev/null
+++ b/Scripts/Items/Misc/The Citadel/TravestysCollectionOfShells.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class TravestysCollectionOfShells : Item
+ {
+ public override int LabelNumber{ get{ return 1072090; } } // Travesty's Collection of Shells
+
+ [Constructable]
+ public TravestysCollectionOfShells() : base( 0xFD3 )
+ {
+ }
+
+ public TravestysCollectionOfShells( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/The Citadel/TravestysFineTeakwoodTray.cs b/Scripts/Items/Misc/The Citadel/TravestysFineTeakwoodTray.cs
new file mode 100644
index 000000000..b18609ac9
--- /dev/null
+++ b/Scripts/Items/Misc/The Citadel/TravestysFineTeakwoodTray.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class TravestysFineTeakwoodTray : Item
+ {
+ public override int LabelNumber{ get{ return 1075094; } } // Travesty's Fine Teakwood Tray
+
+ [Constructable]
+ public TravestysFineTeakwoodTray() : base( Utility.Random( 0x991, 2 ) )
+ {
+ }
+
+ public TravestysFineTeakwoodTray( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/The Citadel/TravestysSushiPreparations.cs b/Scripts/Items/Misc/The Citadel/TravestysSushiPreparations.cs
new file mode 100644
index 000000000..52ce7e3e9
--- /dev/null
+++ b/Scripts/Items/Misc/The Citadel/TravestysSushiPreparations.cs
@@ -0,0 +1,34 @@
+using System;
+using Server;
+
+namespace Server.Items
+{
+ public class TravestysSushiPreparations : Item
+ {
+ public override int LabelNumber{ get{ return 1075093; } } // Travesty's Sushi Preparations
+
+ [Constructable]
+ public TravestysSushiPreparations() : base( Utility.Random( 0x1E15, 2 ) )
+ {
+ }
+
+ public TravestysSushiPreparations( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Twisted Weald/HornOfTheDreadhorn.cs b/Scripts/Items/Misc/Twisted Weald/HornOfTheDreadhorn.cs
new file mode 100644
index 000000000..a9f6b295d
--- /dev/null
+++ b/Scripts/Items/Misc/Twisted Weald/HornOfTheDreadhorn.cs
@@ -0,0 +1,34 @@
+using System;
+
+namespace Server.Items
+{
+ [Flipable(0x315C, 0x315D)]
+ public class HornOfTheDreadhorn : Item
+ {
+ public override int LabelNumber{ get{ return 1072089; } } // Horn of the Dread
+
+ [Constructable]
+ public HornOfTheDreadhorn() : base( 0x315C )
+ {
+ }
+
+ public HornOfTheDreadhorn( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Twisted Weald/MangledHeadOfDreadhorn.cs b/Scripts/Items/Misc/Twisted Weald/MangledHeadOfDreadhorn.cs
new file mode 100644
index 000000000..28ee69f76
--- /dev/null
+++ b/Scripts/Items/Misc/Twisted Weald/MangledHeadOfDreadhorn.cs
@@ -0,0 +1,34 @@
+using System;
+
+namespace Server.Items
+{
+ [Flipable(0x3156, 0x3157)]
+ public class MangledHeadOfDreadhorn : Item
+ {
+ public override int LabelNumber{ get{ return 1072088; } } // The Mangled Head of Dread Horn
+
+ [Constructable]
+ public MangledHeadOfDreadhorn() : base( 0x3156 )
+ {
+ }
+
+ public MangledHeadOfDreadhorn( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/Misc/Twisted Weald/TaintedMushroom.cs b/Scripts/Items/Misc/Twisted Weald/TaintedMushroom.cs
new file mode 100644
index 000000000..cbf95ec9c
--- /dev/null
+++ b/Scripts/Items/Misc/Twisted Weald/TaintedMushroom.cs
@@ -0,0 +1,39 @@
+using System;
+
+namespace Server.Items
+{
+ public class TaintedMushroom : Item
+ {
+ public override int LabelNumber{ get{ return 1075088; } } // Dread Horn Tainted Mushroom
+ public override bool ForceShowProperties{ get{ return true; } }
+
+ private static int[] m_ItemIDs = new int[]
+ {
+ 0x222E, 0x222F, 0x2230, 0x2231
+ };
+
+ [Constructable]
+ public TaintedMushroom() : base( Utility.RandomList( m_ItemIDs ) )
+ {
+ }
+
+ public TaintedMushroom( 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();
+ }
+ }
+}
+
diff --git a/Scripts/Items/New Haven Quest Rewards/AmeliasToolbox.cs b/Scripts/Items/New Haven Quest Rewards/AmeliasToolbox.cs
new file mode 100644
index 000000000..53821ae24
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/AmeliasToolbox.cs
@@ -0,0 +1,36 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class AmeliasToolbox : TinkerTools
+ {
+ public override int LabelNumber{ get{ return 1077749; } } // Amelias Toolbox
+
+ [Constructable]
+ public AmeliasToolbox() : base( 500 )
+ {
+ LootType = LootType.Blessed;
+ Hue = 1895; // TODO check
+ }
+
+ public AmeliasToolbox( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/ArmsOfArmstrong.cs b/Scripts/Items/New Haven Quest Rewards/ArmsOfArmstrong.cs
new file mode 100644
index 000000000..c33a1fd71
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/ArmsOfArmstrong.cs
@@ -0,0 +1,44 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class ArmsOfArmstrong : LeatherArms
+ {
+ public override int LabelNumber{ get{ return 1077675; } } // Arms of Armstrong
+
+ public override int BasePhysicalResistance{ get{ return 6; } }
+ public override int BaseFireResistance{ get{ return 6; } }
+ public override int BaseColdResistance{ get{ return 5; } }
+ public override int BasePoisonResistance{ get{ return 5; } }
+ public override int BaseEnergyResistance{ get{ return 5; } }
+
+ [Constructable]
+ public ArmsOfArmstrong() : base()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.BonusStr = 3;
+ Attributes.RegenHits = 1;
+ }
+
+ public ArmsOfArmstrong( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/BagOfNecromancerReagents.cs b/Scripts/Items/New Haven Quest Rewards/BagOfNecromancerReagents.cs
new file mode 100644
index 000000000..5436b1d23
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/BagOfNecromancerReagents.cs
@@ -0,0 +1,42 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class BagOfNecromancerReagents : Bag
+ {
+ [Constructable]
+ public BagOfNecromancerReagents() : this( 100 )
+ {
+ }
+
+ [Constructable]
+ public BagOfNecromancerReagents( int amount ) : base()
+ {
+ DropItem( new BatWing ( amount ) );
+ DropItem( new GraveDust ( amount ) );
+ DropItem( new DaemonBlood( amount ) );
+ DropItem( new NoxCrystal ( amount ) );
+ DropItem( new PigIron ( amount ) );
+ }
+
+ public BagOfNecromancerReagents( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/BagOfSmokeBombs.cs b/Scripts/Items/New Haven Quest Rewards/BagOfSmokeBombs.cs
new file mode 100644
index 000000000..bcbf9c8ce
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/BagOfSmokeBombs.cs
@@ -0,0 +1,39 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class BagOfSmokeBombs : Bag
+ {
+ [Constructable]
+ public BagOfSmokeBombs() : this( 20 )
+ {
+ }
+
+ [Constructable]
+ public BagOfSmokeBombs( int amount ) : base()
+ {
+ for ( int a = amount; amount > 0; amount -- )
+ DropItem( new SmokeBomb() );
+ }
+
+ public BagOfSmokeBombs( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/BraceletOfResilience.cs b/Scripts/Items/New Haven Quest Rewards/BraceletOfResilience.cs
new file mode 100644
index 000000000..c12d1df3d
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/BraceletOfResilience.cs
@@ -0,0 +1,41 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class BraceletOfResilience : GoldBracelet
+ {
+ public override int LabelNumber{ get{ return 1077627; } } // Bracelet of Resilience
+
+ [Constructable]
+ public BraceletOfResilience()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.DefendChance = 5;
+ Resistances.Fire = 5;
+ Resistances.Cold = 5;
+ Resistances.Poison = 5;
+ Resistances.Energy = 5;
+ }
+
+ public BraceletOfResilience( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/BulwarkLeggings.cs b/Scripts/Items/New Haven Quest Rewards/BulwarkLeggings.cs
new file mode 100644
index 000000000..a3bd4e41d
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/BulwarkLeggings.cs
@@ -0,0 +1,44 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class BulwarkLeggings : RingmailLegs
+ {
+ public override int LabelNumber{ get{ return 1077727; } } // Bulwark Leggings
+
+ public override int BasePhysicalResistance{ get{ return 9; } }
+ public override int BaseFireResistance{ get{ return 5; } }
+ public override int BaseColdResistance{ get{ return 5; } }
+ public override int BasePoisonResistance{ get{ return 5; } }
+ public override int BaseEnergyResistance{ get{ return 3; } }
+
+ [Constructable]
+ public BulwarkLeggings() : base()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.RegenStam = 1;
+ Attributes.RegenMana = 1;
+ }
+
+ public BulwarkLeggings( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/ChurchillsWarMace.cs b/Scripts/Items/New Haven Quest Rewards/ChurchillsWarMace.cs
new file mode 100644
index 000000000..0b3333412
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/ChurchillsWarMace.cs
@@ -0,0 +1,40 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class ChurchillsWarMace : WarMace
+ {
+ public override int LabelNumber{ get{ return 1078062; } } // Churchill's War Mace
+
+ [Constructable]
+ public ChurchillsWarMace() : base()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.AttackChance = 5;
+ Attributes.WeaponSpeed = 10;
+ Attributes.WeaponDamage = 25;
+ WeaponAttributes.LowerStatReq = 70;
+ }
+
+ public ChurchillsWarMace( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/ClaspOfConcentration.cs b/Scripts/Items/New Haven Quest Rewards/ClaspOfConcentration.cs
new file mode 100644
index 000000000..ff4e50221
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/ClaspOfConcentration.cs
@@ -0,0 +1,40 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class ClaspOfConcentration : SilverBracelet
+ {
+ public override int LabelNumber{ get{ return 1077695; } } // Clasp of Concentration
+
+ [Constructable]
+ public ClaspOfConcentration()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.RegenStam = 2;
+ Attributes.RegenMana = 1;
+ Resistances.Fire = 5;
+ Resistances.Cold = 5;
+ }
+
+ public ClaspOfConcentration( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/CompleteNecromancerSpellbook.cs b/Scripts/Items/New Haven Quest Rewards/CompleteNecromancerSpellbook.cs
new file mode 100644
index 000000000..7e1b180cb
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/CompleteNecromancerSpellbook.cs
@@ -0,0 +1,32 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class CompleteNecromancerSpellbook : NecromancerSpellbook
+ {
+ [Constructable]
+ public CompleteNecromancerSpellbook() : base( (ulong) 0x1FFFF )
+ {
+ }
+
+ public CompleteNecromancerSpellbook( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/EmberStaff.cs b/Scripts/Items/New Haven Quest Rewards/EmberStaff.cs
new file mode 100644
index 000000000..155285bbe
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/EmberStaff.cs
@@ -0,0 +1,41 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class EmberStaff : QuarterStaff
+ {
+ public override int LabelNumber{ get{ return 1077582; } } // Ember Staff
+
+ [Constructable]
+ public EmberStaff()
+ {
+ LootType = LootType.Blessed;
+
+ WeaponAttributes.HitFireball = 15;
+ WeaponAttributes.MageWeapon = 10;
+ Attributes.SpellChanneling = 1;
+ Attributes.CastSpeed = -1;
+ WeaponAttributes.LowerStatReq = 50;
+ }
+
+ public EmberStaff( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/EscutcheonDeAriadne.cs b/Scripts/Items/New Haven Quest Rewards/EscutcheonDeAriadne.cs
new file mode 100644
index 000000000..f50875187
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/EscutcheonDeAriadne.cs
@@ -0,0 +1,45 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class EscutcheonDeAriadne : MetalKiteShield
+ {
+ public override int LabelNumber{ get{ return 1077694; } } // Escutcheon de Ariadne
+
+ public override int BasePhysicalResistance{ get{ return 5; } }
+ public override int BaseEnergyResistance{ get{ return 1; } }
+
+ public override int AosStrReq{ get{ return 14; } }
+
+ [Constructable]
+ public EscutcheonDeAriadne() : base()
+ {
+ LootType = LootType.Blessed;
+ Hue = 0x8A5;
+
+ ArmorAttributes.DurabilityBonus = 49;
+ Attributes.ReflectPhysical = 5;
+ Attributes.DefendChance = 5;
+ }
+
+ public EscutcheonDeAriadne( Serial serial ) : base(serial)
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/GlovesOfSafeguarding.cs b/Scripts/Items/New Haven Quest Rewards/GlovesOfSafeguarding.cs
new file mode 100644
index 000000000..d534d12b6
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/GlovesOfSafeguarding.cs
@@ -0,0 +1,44 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class GlovesOfSafeguarding : LeatherGloves
+ {
+ public override int LabelNumber{ get{ return 1077614; } } // Gloves of Safeguarding
+
+ public override int BasePhysicalResistance{ get{ return 6; } }
+ public override int BaseFireResistance{ get{ return 6; } }
+ public override int BaseColdResistance{ get{ return 5; } }
+ public override int BasePoisonResistance{ get{ return 5; } }
+ public override int BaseEnergyResistance{ get{ return 5; } }
+
+ [Constructable]
+ public GlovesOfSafeguarding()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.BonusStam = 3;
+ Attributes.RegenHits = 1;
+ }
+
+ public GlovesOfSafeguarding( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/HallowedSpellbook.cs b/Scripts/Items/New Haven Quest Rewards/HallowedSpellbook.cs
new file mode 100644
index 000000000..a5a13df97
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/HallowedSpellbook.cs
@@ -0,0 +1,38 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class HallowedSpellbook : Spellbook
+ {
+ public override int LabelNumber { get { return 1077620; } } // Hallowed Spellbook
+
+ [Constructable]
+ public HallowedSpellbook() : base()
+ {
+ LootType = LootType.Blessed;
+ Content = 0x3FFFFFFFF;
+
+ Slayer = SlayerName.Silver;
+ }
+
+ public HallowedSpellbook( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/HealersTouch.cs b/Scripts/Items/New Haven Quest Rewards/HealersTouch.cs
new file mode 100644
index 000000000..50fea58fe
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/HealersTouch.cs
@@ -0,0 +1,44 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class HealersTouch : LeatherGloves
+ {
+ public override int LabelNumber{ get{ return 1077684; } } // Healer's Touch
+
+ public override int BasePhysicalResistance{ get{ return 6; } }
+ public override int BaseFireResistance{ get{ return 6; } }
+ public override int BaseColdResistance{ get{ return 5; } }
+ public override int BasePoisonResistance{ get{ return 5; } }
+ public override int BaseEnergyResistance{ get{ return 5; } }
+
+ [Constructable]
+ public HealersTouch()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.BonusStam = 3;
+ Attributes.ReflectPhysical = 5;
+ }
+
+ public HealersTouch( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/Heartseeker.cs b/Scripts/Items/New Haven Quest Rewards/Heartseeker.cs
new file mode 100644
index 000000000..67ddc5094
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/Heartseeker.cs
@@ -0,0 +1,40 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class Heartseeker : CompositeBow
+ {
+ public override int LabelNumber{ get{ return 1078210; } } // Heartseeker
+
+ [Constructable]
+ public Heartseeker() : base()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.AttackChance = 5;
+ Attributes.WeaponSpeed = 10;
+ Attributes.WeaponDamage = 25;
+ WeaponAttributes.LowerStatReq = 70;
+ }
+
+ public Heartseeker( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/JocklesQuicksword.cs b/Scripts/Items/New Haven Quest Rewards/JocklesQuicksword.cs
new file mode 100644
index 000000000..e06212a81
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/JocklesQuicksword.cs
@@ -0,0 +1,39 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class JocklesQuicksword : Longsword
+ {
+ public override int LabelNumber{ get{ return 1077666; } } // Jockles' Quicksword
+
+ [Constructable]
+ public JocklesQuicksword() : base()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.AttackChance = 5;
+ Attributes.WeaponSpeed = 10;
+ Attributes.WeaponDamage = 25;
+ }
+
+ public JocklesQuicksword( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/PhilosophersHat.cs b/Scripts/Items/New Haven Quest Rewards/PhilosophersHat.cs
new file mode 100644
index 000000000..2ccd2572b
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/PhilosophersHat.cs
@@ -0,0 +1,44 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class PhilosophersHat : WizardsHat
+ {
+ public override int LabelNumber{ get{ return 1077602; } } // Philosopher's Hat
+
+ public override int BasePhysicalResistance{ get{ return 5; } }
+ public override int BaseFireResistance{ get{ return 5; } }
+ public override int BaseColdResistance{ get{ return 9; } }
+ public override int BasePoisonResistance{ get{ return 5; } }
+ public override int BaseEnergyResistance{ get{ return 5; } }
+
+ [Constructable]
+ public PhilosophersHat() : base()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.RegenMana = 1;
+ Attributes.LowerRegCost = 7;
+ }
+
+ public PhilosophersHat( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/RecarosRiposte.cs b/Scripts/Items/New Haven Quest Rewards/RecarosRiposte.cs
new file mode 100644
index 000000000..13ce5d524
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/RecarosRiposte.cs
@@ -0,0 +1,39 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class RecarosRiposte : WarFork
+ {
+ public override int LabelNumber{ get{ return 1078195; } } // Recaro's Riposte
+
+ [Constructable]
+ public RecarosRiposte()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.AttackChance = 5;
+ Attributes.WeaponSpeed = 10;
+ Attributes.WeaponDamage = 25;
+ }
+
+ public RecarosRiposte( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/RingOfTheSavant.cs b/Scripts/Items/New Haven Quest Rewards/RingOfTheSavant.cs
new file mode 100644
index 000000000..e5f071bde
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/RingOfTheSavant.cs
@@ -0,0 +1,39 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class RingOfTheSavant : GoldRing
+ {
+ public override int LabelNumber{ get{ return 1077608; } } // Ring of the Savant
+
+ [Constructable]
+ public RingOfTheSavant() : base()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.BonusInt = 3;
+ Attributes.CastRecovery = 1;
+ Attributes.CastSpeed = 1;
+ }
+
+ public RingOfTheSavant( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/SilverSerpentBlade.cs b/Scripts/Items/New Haven Quest Rewards/SilverSerpentBlade.cs
new file mode 100644
index 000000000..76cbcd476
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/SilverSerpentBlade.cs
@@ -0,0 +1,39 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class SilverSerpentBlade : Kryss
+ {
+ public override int LabelNumber{ get{ return 1078163; } } // Silver Serpent Blade
+
+ [Constructable]
+ public SilverSerpentBlade() : base()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.AttackChance = 5;
+ Attributes.WeaponSpeed = 10;
+ Attributes.WeaponDamage = 25;
+ }
+
+ public SilverSerpentBlade( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/TheDragonsTail.cs b/Scripts/Items/New Haven Quest Rewards/TheDragonsTail.cs
new file mode 100644
index 000000000..3c1a6a9d8
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/TheDragonsTail.cs
@@ -0,0 +1,42 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class TheDragonsTail : NoDachi
+ {
+ public override int LabelNumber { get { return 1078015; } } // The Dragon's Tail
+
+ public override int InitMinHits{ get{ return 80; } }
+ public override int InitMaxHits{ get{ return 80; } }
+
+ [Constructable]
+ public TheDragonsTail() : base()
+ {
+ LootType = LootType.Blessed;
+
+ WeaponAttributes.HitLeechStam = 16;
+ Attributes.WeaponSpeed = 10;
+ Attributes.WeaponDamage = 25;
+ }
+
+ public TheDragonsTail( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/TunicOfGuarding.cs b/Scripts/Items/New Haven Quest Rewards/TunicOfGuarding.cs
new file mode 100644
index 000000000..080b93d54
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/TunicOfGuarding.cs
@@ -0,0 +1,44 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class TunicOfGuarding : LeatherChest
+ {
+ public override int LabelNumber{ get{ return 1077693; } } // Tunic of Guarding
+
+ public override int BasePhysicalResistance{ get{ return 6; } }
+ public override int BaseFireResistance{ get{ return 6; } }
+ public override int BaseColdResistance{ get{ return 5; } }
+ public override int BasePoisonResistance{ get{ return 5; } }
+ public override int BaseEnergyResistance{ get{ return 5; } }
+
+ [Constructable]
+ public TunicOfGuarding() : base()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.BonusHits = 2;
+ Attributes.ReflectPhysical = 5;
+ }
+
+ public TunicOfGuarding( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/TwilightJacket.cs b/Scripts/Items/New Haven Quest Rewards/TwilightJacket.cs
new file mode 100644
index 000000000..ec4db4c43
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/TwilightJacket.cs
@@ -0,0 +1,43 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class TwilightJacket : LeatherNinjaJacket
+ {
+ public override int LabelNumber{ get{ return 1078183; } } // Twilight Jacket
+
+ public override int BasePhysicalResistance{ get{ return 6; } }
+ public override int BaseFireResistance{ get{ return 12; } }
+ public override int BaseColdResistance{ get{ return 3; } }
+ public override int BasePoisonResistance{ get{ return 3; } }
+ public override int BaseEnergyResistance{ get{ return 3; } }
+
+ [Constructable]
+ public TwilightJacket() : base()
+ {
+ LootType = LootType.Blessed;
+
+ Attributes.ReflectPhysical = 5;
+ }
+
+ public TwilightJacket( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/New Haven Quest Rewards/WalkersLeggings.cs b/Scripts/Items/New Haven Quest Rewards/WalkersLeggings.cs
new file mode 100644
index 000000000..d7f93177d
--- /dev/null
+++ b/Scripts/Items/New Haven Quest Rewards/WalkersLeggings.cs
@@ -0,0 +1,41 @@
+using System;
+using Server;
+using Server.Mobiles;
+
+namespace Server.Items
+{
+ public class WalkersLeggings : LeatherNinjaPants
+ {
+ public override int LabelNumber{ get{ return 1078222; } } // Walker's Leggings
+
+ public override int BasePhysicalResistance{ get{ return 10; } }
+ public override int BaseFireResistance{ get{ return 6; } }
+ public override int BaseColdResistance{ get{ return 6; } }
+ public override int BasePoisonResistance{ get{ return 3; } }
+ public override int BaseEnergyResistance{ get{ return 3; } }
+
+ [Constructable]
+ public WalkersLeggings() : base()
+ {
+ LootType = LootType.Blessed;
+ }
+
+ public WalkersLeggings( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Axes/GuardianAxe.cs b/Scripts/Items/Weapons/Axes/GuardianAxe.cs
new file mode 100644
index 000000000..83b81202e
--- /dev/null
+++ b/Scripts/Items/Weapons/Axes/GuardianAxe.cs
@@ -0,0 +1,35 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class GuardianAxe : OrnateAxe
+ {
+ public override int LabelNumber{ get{ return 1073545; } } // guardian axe
+
+ [Constructable]
+ public GuardianAxe() : base()
+ {
+ Attributes.BonusHits = 4;
+ Attributes.RegenHits = 1;
+ }
+
+ public GuardianAxe( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Axes/HeavyOrnateAxe.cs b/Scripts/Items/Weapons/Axes/HeavyOrnateAxe.cs
new file mode 100644
index 000000000..9903dbd13
--- /dev/null
+++ b/Scripts/Items/Weapons/Axes/HeavyOrnateAxe.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class HeavyOrnateAxe : OrnateAxe
+ {
+ public override int LabelNumber{ get{ return 1073548; } } // heavy ornate axe
+
+ [Constructable]
+ public HeavyOrnateAxe() : base()
+ {
+ Attributes.WeaponDamage = 8;
+ }
+
+ public HeavyOrnateAxe( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Axes/SingingAxe.cs b/Scripts/Items/Weapons/Axes/SingingAxe.cs
new file mode 100644
index 000000000..045208b6e
--- /dev/null
+++ b/Scripts/Items/Weapons/Axes/SingingAxe.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class SingingAxe : OrnateAxe
+ {
+ public override int LabelNumber{ get{ return 1073546; } } // singing axe
+
+ [Constructable]
+ public SingingAxe() : base()
+ {
+ SkillBonuses.SetValues( 0, SkillName.Musicianship, 5 );
+ }
+
+ public SingingAxe( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Axes/ThunderingAxe.cs b/Scripts/Items/Weapons/Axes/ThunderingAxe.cs
new file mode 100644
index 000000000..2cb11a7fc
--- /dev/null
+++ b/Scripts/Items/Weapons/Axes/ThunderingAxe.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class ThunderingAxe : OrnateAxe
+ {
+ public override int LabelNumber{ get{ return 1073547; } } // thundering axe
+
+ [Constructable]
+ public ThunderingAxe() : base()
+ {
+ WeaponAttributes.HitLightning = 10;
+ }
+
+ public ThunderingAxe( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Maces/EmeraldMace.cs b/Scripts/Items/Weapons/Maces/EmeraldMace.cs
new file mode 100644
index 000000000..b264ece72
--- /dev/null
+++ b/Scripts/Items/Weapons/Maces/EmeraldMace.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class EmeraldMace : DiamondMace
+ {
+ public override int LabelNumber{ get{ return 1073530; } } // emerald mace
+
+ [Constructable]
+ public EmeraldMace() : base()
+ {
+ WeaponAttributes.ResistPoisonBonus = 5;
+ }
+
+ public EmeraldMace( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Maces/RubyMace.cs b/Scripts/Items/Weapons/Maces/RubyMace.cs
new file mode 100644
index 000000000..8ad14e30b
--- /dev/null
+++ b/Scripts/Items/Weapons/Maces/RubyMace.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class RubyMace : DiamondMace
+ {
+ public override int LabelNumber{ get{ return 1073529; } } // ruby mace
+
+ [Constructable]
+ public RubyMace() : base()
+ {
+ Attributes.WeaponDamage = 5;
+ }
+
+ public RubyMace( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Maces/SapphireMace.cs b/Scripts/Items/Weapons/Maces/SapphireMace.cs
new file mode 100644
index 000000000..bc6ef58ee
--- /dev/null
+++ b/Scripts/Items/Weapons/Maces/SapphireMace.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class SapphireMace : DiamondMace
+ {
+ public override int LabelNumber{ get{ return 1073531; } } // sapphire mace
+
+ [Constructable]
+ public SapphireMace() : base()
+ {
+ WeaponAttributes.ResistEnergyBonus = 5;
+ }
+
+ public SapphireMace( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Maces/SilverEtchedMace.cs b/Scripts/Items/Weapons/Maces/SilverEtchedMace.cs
new file mode 100644
index 000000000..e2a0f87ef
--- /dev/null
+++ b/Scripts/Items/Weapons/Maces/SilverEtchedMace.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class SilverEtchedMace : DiamondMace
+ {
+ public override int LabelNumber{ get{ return 1073532; } } // silver-etched mace
+
+ [Constructable]
+ public SilverEtchedMace() : base()
+ {
+ Slayer = SlayerName.Exorcism;
+ }
+
+ public SilverEtchedMace( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Ranged/AssassinsShortbow.cs b/Scripts/Items/Weapons/Ranged/AssassinsShortbow.cs
new file mode 100644
index 000000000..d0e3cc7b3
--- /dev/null
+++ b/Scripts/Items/Weapons/Ranged/AssassinsShortbow.cs
@@ -0,0 +1,35 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class AssassinsShortbow : MagicalShortbow
+ {
+ public override int LabelNumber{ get{ return 1073512; } } // assassin's shortbow
+
+ [Constructable]
+ public AssassinsShortbow() : base()
+ {
+ Attributes.AttackChance = 3;
+ Attributes.WeaponDamage = 4;
+ }
+
+ public AssassinsShortbow( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Ranged/BarbedLongbow.cs b/Scripts/Items/Weapons/Ranged/BarbedLongbow.cs
new file mode 100644
index 000000000..7aa93edc1
--- /dev/null
+++ b/Scripts/Items/Weapons/Ranged/BarbedLongbow.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class BarbedLongbow : ElvenCompositeLongbow
+ {
+ public override int LabelNumber{ get{ return 1073505; } } // barbed longbow
+
+ [Constructable]
+ public BarbedLongbow() : base()
+ {
+ Attributes.ReflectPhysical = 12;
+ }
+
+ public BarbedLongbow( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Ranged/FrozenLongbow.cs b/Scripts/Items/Weapons/Ranged/FrozenLongbow.cs
new file mode 100644
index 000000000..0fa826993
--- /dev/null
+++ b/Scripts/Items/Weapons/Ranged/FrozenLongbow.cs
@@ -0,0 +1,35 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class FrozenLongbow : ElvenCompositeLongbow
+ {
+ public override int LabelNumber{ get{ return 1073507; } } // frozen longbow
+
+ [Constructable]
+ public FrozenLongbow() : base()
+ {
+ Attributes.WeaponSpeed = -5;
+ Attributes.DefendChance = 10;
+ }
+
+ public FrozenLongbow( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Ranged/LightweightShortbow.cs b/Scripts/Items/Weapons/Ranged/LightweightShortbow.cs
new file mode 100644
index 000000000..663f640db
--- /dev/null
+++ b/Scripts/Items/Weapons/Ranged/LightweightShortbow.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class LightweightShortbow : MagicalShortbow
+ {
+ public override int LabelNumber{ get{ return 1073510; } } // lightweight shortbow
+
+ [Constructable]
+ public LightweightShortbow() : base()
+ {
+ Balanced = true;
+ }
+
+ public LightweightShortbow( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Ranged/LongbowOfMight.cs b/Scripts/Items/Weapons/Ranged/LongbowOfMight.cs
new file mode 100644
index 000000000..338ce772d
--- /dev/null
+++ b/Scripts/Items/Weapons/Ranged/LongbowOfMight.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class LongbowOfMight : ElvenCompositeLongbow
+ {
+ public override int LabelNumber{ get{ return 1073508; } } // longbow of might
+
+ [Constructable]
+ public LongbowOfMight() : base()
+ {
+ Attributes.WeaponDamage = 5;
+ }
+
+ public LongbowOfMight( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Ranged/MysticalShortbow.cs b/Scripts/Items/Weapons/Ranged/MysticalShortbow.cs
new file mode 100644
index 000000000..24e52b68e
--- /dev/null
+++ b/Scripts/Items/Weapons/Ranged/MysticalShortbow.cs
@@ -0,0 +1,35 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class MysticalShortbow : MagicalShortbow
+ {
+ public override int LabelNumber{ get{ return 1073511; } } // mystical shortbow
+
+ [Constructable]
+ public MysticalShortbow() : base()
+ {
+ Attributes.SpellChanneling = 1;
+ Attributes.CastSpeed = -1;
+ }
+
+ public MysticalShortbow( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Ranged/RangersShortbow.cs b/Scripts/Items/Weapons/Ranged/RangersShortbow.cs
new file mode 100644
index 000000000..b0f0f445d
--- /dev/null
+++ b/Scripts/Items/Weapons/Ranged/RangersShortbow.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class RangersShortbow : MagicalShortbow
+ {
+ public override int LabelNumber{ get{ return 1073509; } } // ranger's shortbow
+
+ [Constructable]
+ public RangersShortbow() : base()
+ {
+ Attributes.WeaponSpeed = 5;
+ }
+
+ public RangersShortbow( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Ranged/SlayerLongbow.cs b/Scripts/Items/Weapons/Ranged/SlayerLongbow.cs
new file mode 100644
index 000000000..fca655e51
--- /dev/null
+++ b/Scripts/Items/Weapons/Ranged/SlayerLongbow.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class SlayerLongbow : ElvenCompositeLongbow
+ {
+ public override int LabelNumber{ get{ return 1073506; } } // slayer longbow
+
+ [Constructable]
+ public SlayerLongbow() : base()
+ {
+ Slayer2 = (SlayerName) Utility.RandomMinMax( 1, 27 );
+ }
+
+ public SlayerLongbow( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/AdventurersMachete.cs b/Scripts/Items/Weapons/Swords/AdventurersMachete.cs
new file mode 100644
index 000000000..64344b0b3
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/AdventurersMachete.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class AdventurersMachete : ElvenMachete
+ {
+ public override int LabelNumber{ get{ return 1073533; } } // adventurer's machete
+
+ [Constructable]
+ public AdventurersMachete() : base()
+ {
+ Attributes.Luck = 20;
+ }
+
+ public AdventurersMachete( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/BoneMachete.cs b/Scripts/Items/Weapons/Swords/BoneMachete.cs
new file mode 100644
index 000000000..8cb690d00
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/BoneMachete.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class BoneMachete : ElvenMachete
+ {
+ public override int LabelNumber{ get{ return 1020526; } } // bone machete
+
+ [Constructable]
+ public BoneMachete() : base()
+ {
+ // TODO attributes
+ }
+
+ public BoneMachete( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/ChargedAssassinSpike.cs b/Scripts/Items/Weapons/Swords/ChargedAssassinSpike.cs
new file mode 100644
index 000000000..3bb46a4e5
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/ChargedAssassinSpike.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class ChargedAssassinSpike : AssassinSpike
+ {
+ public override int LabelNumber{ get{ return 1073518; } } // charged assassin spike
+
+ [Constructable]
+ public ChargedAssassinSpike() : base()
+ {
+ WeaponAttributes.HitLightning = 10;
+ }
+
+ public ChargedAssassinSpike( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/CorruptedRuneBlade.cs b/Scripts/Items/Weapons/Swords/CorruptedRuneBlade.cs
new file mode 100644
index 000000000..968a0c62a
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/CorruptedRuneBlade.cs
@@ -0,0 +1,35 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class CorruptedRuneBlade : RuneBlade
+ {
+ public override int LabelNumber{ get{ return 1073540; } } // Corrupted Rune Blade
+
+ [Constructable]
+ public CorruptedRuneBlade() : base()
+ {
+ WeaponAttributes.ResistPhysicalBonus = -5;
+ WeaponAttributes.ResistPoisonBonus = 12;
+ }
+
+ public CorruptedRuneBlade( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/DarkglowScimitar.cs b/Scripts/Items/Weapons/Swords/DarkglowScimitar.cs
new file mode 100644
index 000000000..dc4bc4497
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/DarkglowScimitar.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class DarkglowScimitar : RadiantScimitar
+ {
+ public override int LabelNumber{ get{ return 1073542; } } // darkglow scimitar
+
+ [Constructable]
+ public DarkglowScimitar() : base()
+ {
+ WeaponAttributes.HitDispel = 10;
+ }
+
+ public DarkglowScimitar( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/DiseasedMachete.cs b/Scripts/Items/Weapons/Swords/DiseasedMachete.cs
new file mode 100644
index 000000000..7dbf16145
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/DiseasedMachete.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class DiseasedMachete : ElvenMachete
+ {
+ public override int LabelNumber{ get{ return 1073536; } } // Diseased Machete
+
+ [Constructable]
+ public DiseasedMachete() : base()
+ {
+ WeaponAttributes.HitPoisonArea = 25;
+ }
+
+ public DiseasedMachete( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/FierySpellblade.cs b/Scripts/Items/Weapons/Swords/FierySpellblade.cs
new file mode 100644
index 000000000..74c81d7ff
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/FierySpellblade.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class FierySpellblade : ElvenSpellblade
+ {
+ public override int LabelNumber{ get{ return 1073515; } } // fiery spellblade
+
+ [Constructable]
+ public FierySpellblade() : base()
+ {
+ WeaponAttributes.ResistFireBonus = 5;
+ }
+
+ public FierySpellblade( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/IcyScimitar.cs b/Scripts/Items/Weapons/Swords/IcyScimitar.cs
new file mode 100644
index 000000000..4c72da7ea
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/IcyScimitar.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class IcyScimitar : RadiantScimitar
+ {
+ public override int LabelNumber{ get{ return 1073543; } } // icy scimitar
+
+ [Constructable]
+ public IcyScimitar() : base()
+ {
+ WeaponAttributes.HitHarm = 15;
+ }
+
+ public IcyScimitar( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/IcySpellblade.cs b/Scripts/Items/Weapons/Swords/IcySpellblade.cs
new file mode 100644
index 000000000..ed9000a20
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/IcySpellblade.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class IcySpellblade : ElvenSpellblade
+ {
+ public override int LabelNumber{ get{ return 1073514; } } // icy spellblade
+
+ [Constructable]
+ public IcySpellblade() : base()
+ {
+ WeaponAttributes.ResistColdBonus = 5;
+ }
+
+ public IcySpellblade( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/KnightsWarCleaver.cs b/Scripts/Items/Weapons/Swords/KnightsWarCleaver.cs
new file mode 100644
index 000000000..c6f5794b9
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/KnightsWarCleaver.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class KnightsWarCleaver : WarCleaver
+ {
+ public override int LabelNumber{ get{ return 1073525; } } // knight's war cleaver
+
+ [Constructable]
+ public KnightsWarCleaver() : base()
+ {
+ Attributes.RegenHits = 3;
+ }
+
+ public KnightsWarCleaver( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/LeafbladeOfEase.cs b/Scripts/Items/Weapons/Swords/LeafbladeOfEase.cs
new file mode 100644
index 000000000..a56aa9655
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/LeafbladeOfEase.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class LeafbladeOfEase : Leafblade
+ {
+ public override int LabelNumber{ get{ return 1073524; } } // leafblade of ease
+
+ [Constructable]
+ public LeafbladeOfEase() : base()
+ {
+ WeaponAttributes.UseBestSkill = 1;
+ }
+
+ public LeafbladeOfEase( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/Luckblade.cs b/Scripts/Items/Weapons/Swords/Luckblade.cs
new file mode 100644
index 000000000..eee0af7e9
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/Luckblade.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class Luckblade : Leafblade
+ {
+ public override int LabelNumber{ get{ return 1073522; } } // luckblade
+
+ [Constructable]
+ public Luckblade() : base()
+ {
+ Attributes.Luck = 20;
+ }
+
+ public Luckblade( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/MacheteOfDefense.cs b/Scripts/Items/Weapons/Swords/MacheteOfDefense.cs
new file mode 100644
index 000000000..744e059b5
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/MacheteOfDefense.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class MacheteOfDefense : ElvenMachete
+ {
+ public override int LabelNumber{ get{ return 1073535; } } // machete of defense
+
+ [Constructable]
+ public MacheteOfDefense() : base()
+ {
+ Attributes.DefendChance = 5;
+ }
+
+ public MacheteOfDefense( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/MagekillerAssassinSpike.cs b/Scripts/Items/Weapons/Swords/MagekillerAssassinSpike.cs
new file mode 100644
index 000000000..9a2be23cd
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/MagekillerAssassinSpike.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class MagekillerAssassinSpike : AssassinSpike
+ {
+ public override int LabelNumber{ get{ return 1073519; } } // magekiller assassin spike
+
+ [Constructable]
+ public MagekillerAssassinSpike() : base()
+ {
+ WeaponAttributes.HitLeechMana = 16;
+ }
+
+ public MagekillerAssassinSpike( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/MagekillerLeafblade.cs b/Scripts/Items/Weapons/Swords/MagekillerLeafblade.cs
new file mode 100644
index 000000000..0f205f811
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/MagekillerLeafblade.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class MagekillerLeafblade : Leafblade
+ {
+ public override int LabelNumber{ get{ return 1073523; } } // maagekiller leafblade
+
+ [Constructable]
+ public MagekillerLeafblade() : base()
+ {
+ WeaponAttributes.HitLeechMana = 16;
+ }
+
+ public MagekillerLeafblade( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/MagesRuneBlade.cs b/Scripts/Items/Weapons/Swords/MagesRuneBlade.cs
new file mode 100644
index 000000000..9032d5abd
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/MagesRuneBlade.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class MagesRuneBlade : RuneBlade
+ {
+ public override int LabelNumber{ get{ return 1073538; } } // mage's rune blade
+
+ [Constructable]
+ public MagesRuneBlade() : base()
+ {
+ Attributes.CastSpeed = 1;
+ }
+
+ public MagesRuneBlade( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/OrcishMachete.cs b/Scripts/Items/Weapons/Swords/OrcishMachete.cs
new file mode 100644
index 000000000..10a99b3be
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/OrcishMachete.cs
@@ -0,0 +1,35 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class OrcishMachete : ElvenMachete
+ {
+ public override int LabelNumber{ get{ return 1073534; } } // Orcish Machete
+
+ [Constructable]
+ public OrcishMachete() : base()
+ {
+ Attributes.BonusInt = -5;
+ Attributes.WeaponDamage = 10;
+ }
+
+ public OrcishMachete( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/RuneBladeOfKnowledge.cs b/Scripts/Items/Weapons/Swords/RuneBladeOfKnowledge.cs
new file mode 100644
index 000000000..b5ff76b23
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/RuneBladeOfKnowledge.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class RuneBladeOfKnowledge : RuneBlade
+ {
+ public override int LabelNumber{ get{ return 1073539; } } // rune blade of knowledge
+
+ [Constructable]
+ public RuneBladeOfKnowledge() : base()
+ {
+ Attributes.SpellDamage = 5;
+ }
+
+ public RuneBladeOfKnowledge( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/Runesabre.cs b/Scripts/Items/Weapons/Swords/Runesabre.cs
new file mode 100644
index 000000000..fa1f18396
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/Runesabre.cs
@@ -0,0 +1,35 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class Runesabre : RuneBlade
+ {
+ public override int LabelNumber{ get{ return 1073537; } } // runesabre
+
+ [Constructable]
+ public Runesabre() : base()
+ {
+ SkillBonuses.SetValues( 0, SkillName.MagicResist, 5.0 );
+ WeaponAttributes.MageWeapon = -29;
+ }
+
+ public Runesabre( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/SerratedWarCleaver.cs b/Scripts/Items/Weapons/Swords/SerratedWarCleaver.cs
new file mode 100644
index 000000000..ede981533
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/SerratedWarCleaver.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class SerratedWarCleaver : WarCleaver
+ {
+ public override int LabelNumber{ get{ return 1073527; } } // serrated war cleaver
+
+ [Constructable]
+ public SerratedWarCleaver() : base()
+ {
+ Attributes.WeaponDamage = 7;
+ }
+
+ public SerratedWarCleaver( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/SpellbladeOfDefense.cs b/Scripts/Items/Weapons/Swords/SpellbladeOfDefense.cs
new file mode 100644
index 000000000..143bb28fd
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/SpellbladeOfDefense.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class SpellbladeOfDefense : ElvenSpellblade
+ {
+ public override int LabelNumber{ get{ return 1073516; } } // spellblade of defense
+
+ [Constructable]
+ public SpellbladeOfDefense() : base()
+ {
+ Attributes.DefendChance = 5;
+ }
+
+ public SpellbladeOfDefense( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/TrueAssassinSpike.cs b/Scripts/Items/Weapons/Swords/TrueAssassinSpike.cs
new file mode 100644
index 000000000..d6fb2bbdc
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/TrueAssassinSpike.cs
@@ -0,0 +1,35 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class TrueAssassinSpike : AssassinSpike
+ {
+ public override int LabelNumber{ get{ return 1073517; } } // true assassin spike
+
+ [Constructable]
+ public TrueAssassinSpike() : base()
+ {
+ Attributes.AttackChance = 4;
+ Attributes.WeaponDamage = 4;
+ }
+
+ public TrueAssassinSpike( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/TrueLeafblade.cs b/Scripts/Items/Weapons/Swords/TrueLeafblade.cs
new file mode 100644
index 000000000..998850e0a
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/TrueLeafblade.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class TrueLeafblade : Leafblade
+ {
+ public override int LabelNumber{ get{ return 1073521; } } // true leafblade
+
+ [Constructable]
+ public TrueLeafblade() : base()
+ {
+ WeaponAttributes.ResistPoisonBonus = 5;
+ }
+
+ public TrueLeafblade( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/TrueRadiantScimitar.cs b/Scripts/Items/Weapons/Swords/TrueRadiantScimitar.cs
new file mode 100644
index 000000000..1952bacd5
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/TrueRadiantScimitar.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class TrueRadiantScimitar : RadiantScimitar
+ {
+ public override int LabelNumber{ get{ return 1073541; } } // true radiant scimitar
+
+ [Constructable]
+ public TrueRadiantScimitar() : base()
+ {
+ Attributes.NightSight = 1;
+ }
+
+ public TrueRadiantScimitar( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/TrueSpellblade.cs b/Scripts/Items/Weapons/Swords/TrueSpellblade.cs
new file mode 100644
index 000000000..ef895afb0
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/TrueSpellblade.cs
@@ -0,0 +1,35 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class TrueSpellblade : ElvenSpellblade
+ {
+ public override int LabelNumber{ get{ return 1073513; } } // true spellblade
+
+ [Constructable]
+ public TrueSpellblade() : base()
+ {
+ Attributes.SpellChanneling = 1;
+ Attributes.CastSpeed = -1;
+ }
+
+ public TrueSpellblade( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/TrueWarCleaver.cs b/Scripts/Items/Weapons/Swords/TrueWarCleaver.cs
new file mode 100644
index 000000000..58304776a
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/TrueWarCleaver.cs
@@ -0,0 +1,35 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class TrueWarCleaver : WarCleaver
+ {
+ public override int LabelNumber{ get{ return 1073528; } } // true war cleaver
+
+ [Constructable]
+ public TrueWarCleaver() : base()
+ {
+ Attributes.WeaponDamage = 4;
+ Attributes.RegenHits = 2;
+ }
+
+ public TrueWarCleaver( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/TwinklingScimitar.cs b/Scripts/Items/Weapons/Swords/TwinklingScimitar.cs
new file mode 100644
index 000000000..3c44512f0
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/TwinklingScimitar.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class TwinklingScimitar : RadiantScimitar
+ {
+ public override int LabelNumber{ get{ return 1073544; } } // twinkling scimitar
+
+ [Constructable]
+ public TwinklingScimitar() : base()
+ {
+ Attributes.DefendChance = 6;
+ }
+
+ public TwinklingScimitar( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Swords/WoundingAssassinSpike.cs b/Scripts/Items/Weapons/Swords/WoundingAssassinSpike.cs
new file mode 100644
index 000000000..e849f7a77
--- /dev/null
+++ b/Scripts/Items/Weapons/Swords/WoundingAssassinSpike.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class WoundingAssassinSpike : AssassinSpike
+ {
+ public override int LabelNumber{ get{ return 1073520; } } // wounding assassin spike
+
+ [Constructable]
+ public WoundingAssassinSpike() : base()
+ {
+ WeaponAttributes.HitHarm = 15;
+ }
+
+ public WoundingAssassinSpike( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Wooden/AncientWildStaff.cs b/Scripts/Items/Weapons/Wooden/AncientWildStaff.cs
new file mode 100644
index 000000000..d2b67bdd5
--- /dev/null
+++ b/Scripts/Items/Weapons/Wooden/AncientWildStaff.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class AncientWildStaff : WildStaff
+ {
+ public override int LabelNumber{ get{ return 1073550; } } // ancient wild staff
+
+ [Constructable]
+ public AncientWildStaff() : base()
+ {
+ WeaponAttributes.ResistPoisonBonus = 5;
+ }
+
+ public AncientWildStaff( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Wooden/ArcanistsWildStaff.cs b/Scripts/Items/Weapons/Wooden/ArcanistsWildStaff.cs
new file mode 100644
index 000000000..d2dbae22f
--- /dev/null
+++ b/Scripts/Items/Weapons/Wooden/ArcanistsWildStaff.cs
@@ -0,0 +1,35 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class ArcanistsWildStaff : WildStaff
+ {
+ public override int LabelNumber{ get{ return 1073549; } } // arcanist's wild staff
+
+ [Constructable]
+ public ArcanistsWildStaff() : base()
+ {
+ Attributes.BonusMana = 3;
+ Attributes.WeaponDamage = 3;
+ }
+
+ public ArcanistsWildStaff( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Wooden/HardenedWildStaff.cs b/Scripts/Items/Weapons/Wooden/HardenedWildStaff.cs
new file mode 100644
index 000000000..3615e6cdf
--- /dev/null
+++ b/Scripts/Items/Weapons/Wooden/HardenedWildStaff.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class HardenedWildStaff : WildStaff
+ {
+ public override int LabelNumber{ get{ return 1073552; } } // hardened wild staff
+
+ [Constructable]
+ public HardenedWildStaff() : base()
+ {
+ Attributes.WeaponDamage = 5;
+ }
+
+ public HardenedWildStaff( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Items/Weapons/Wooden/ThornedWildStaff.cs b/Scripts/Items/Weapons/Wooden/ThornedWildStaff.cs
new file mode 100644
index 000000000..4f2b39c02
--- /dev/null
+++ b/Scripts/Items/Weapons/Wooden/ThornedWildStaff.cs
@@ -0,0 +1,34 @@
+using System;
+using Server.Items;
+
+namespace Server.Items
+{
+ public class ThornedWildStaff : WildStaff
+ {
+ public override int LabelNumber{ get{ return 1073551; } } // thorned wild staff
+
+ [Constructable]
+ public ThornedWildStaff() : base()
+ {
+ Attributes.ReflectPhysical = 12;
+ }
+
+ public ThornedWildStaff( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void Serialize( GenericWriter writer )
+ {
+ base.Serialize( writer );
+
+ writer.WriteEncodedInt( 0 ); // version
+ }
+
+ public override void Deserialize( GenericReader reader )
+ {
+ base.Deserialize( reader );
+
+ int version = reader.ReadEncodedInt();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Abbein.cs b/Scripts/Mobiles/Townfolk/ML/Abbein.cs
new file mode 100644
index 000000000..cdac66824
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Abbein.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Abbein : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Abbein() : base( "the wise" )
+ {
+ Name = "Elder Abbein";
+ }
+
+ public Abbein( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = true;
+ Race = Race.Elf;
+
+ Hue = 0x824D;
+ HairItemID = 0x2FD1;
+ HairHue = 0x321;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ElvenBoots( 0x74B ) );
+ AddItem( new FemaleElvenRobe( 0x8A8 ) );
+ AddItem( new RoyalCirclet() );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Alelle.cs b/Scripts/Mobiles/Townfolk/ML/Alelle.cs
new file mode 100644
index 000000000..c3daaada6
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Alelle.cs
@@ -0,0 +1,76 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Alelle : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Alelle() : base( "the aborist" )
+ {
+ Name = "Alelle";
+ }
+
+ public Alelle( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = true;
+ Race = Race.Elf;
+
+ Hue = 0x8374;
+ HairItemID = 0x2FCC;
+ HairHue = 0x238;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ElvenBoots( 0x1BB ) );
+
+ Item item;
+
+ item = new LeafGloves();
+ item.Hue = 0x1BB;
+ AddItem( item );
+
+ item = new LeafChest();
+ item.Hue = 0x37;
+ AddItem( item );
+
+ item = new LeafLegs();
+ item.Hue = 0x746;
+ AddItem( item );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Alethanian.cs b/Scripts/Mobiles/Townfolk/ML/Alethanian.cs
new file mode 100644
index 000000000..17391b25e
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Alethanian.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Alethanian : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Alethanian() : base( "the wise" )
+ {
+ Name = "Elder Alethanian";
+ }
+
+ public Alethanian( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = true;
+ Race = Race.Elf;
+
+ Hue = 0x876C;
+ HairItemID = 0x2FC2;
+ HairHue = 0x368;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ElvenBoots() );
+ AddItem( new GemmedCirclet());
+ AddItem( new HidePants() );
+ AddItem( new HideFemaleChest() );
+ AddItem( new HidePauldrons() );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Aluniol.cs b/Scripts/Mobiles/Townfolk/ML/Aluniol.cs
new file mode 100644
index 000000000..224c693f9
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Aluniol.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Aluniol : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Aluniol() : base( "the healer" )
+ {
+ Name = "Aluniol";
+ }
+
+ public Aluniol( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = false;
+ Race = Race.Elf;
+
+ Hue = 0x8383;
+ HairItemID = 0x2FBF;
+ HairHue = 0x323;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ElvenBoots( 0x1BB ) );
+ AddItem( new MaleElvenRobe( 0x47E ) );
+ AddItem( new WildStaff() );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Aminia.cs b/Scripts/Mobiles/Townfolk/ML/Aminia.cs
new file mode 100644
index 000000000..8e0e9c7cd
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Aminia.cs
@@ -0,0 +1,69 @@
+using System;
+using System.Collections;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Aminia : BaseCreature
+ {
+ [Constructable]
+ public Aminia() : base( AIType.AI_Melee, FightMode.None, 2, 1, 0.5, 2 )
+ {
+ Name = "Aminia";
+ Title = "the master weaponsmith's wife";
+ Blessed = true;
+
+ InitStats( 100, 100, 25 );
+
+ Female = true;
+ Race = Race.Human;
+
+ Hue = 0x83ED;
+ HairItemID = 0x203B;
+ HairHue = 0x454;
+
+ AddItem( new Backpack() );
+ AddItem( new Sandals( 0x75B ) );
+ AddItem( new Tunic( 0x4BF ) );
+ AddItem( new Skirt( 0x8FD ) );
+ }
+
+ public Aminia( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void OnThink()
+ {
+ int hours = 0;
+ int minutes = 0;
+
+ Clock.GetTime( Map, Location.X, Location.Y, out hours, out minutes );
+
+ if ( hours == 21 )
+ {
+ Blessed = false;
+ Body = 0x17;
+ }
+ else
+ {
+ Blessed = true;
+ Body = 0x191;
+ }
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Aneen.cs b/Scripts/Mobiles/Townfolk/ML/Aneen.cs
new file mode 100644
index 000000000..63f3046e6
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Aneen.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Aneen : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Aneen() : base( "the keeper of tradition" )
+ {
+ Name = "Lorekeeper Aneen";
+ }
+
+ public Aneen( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = false;
+ Race = Race.Elf;
+
+ Hue = 0x83E5;
+ HairItemID = 0x2FBF;
+ HairHue = 0x90;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new Sandals( 0x1BB ) );
+ AddItem( new MaleElvenRobe( 0x48F ) );
+ AddItem( new Item( 0xDF2 ) );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Athialon.cs b/Scripts/Mobiles/Townfolk/ML/Athialon.cs
new file mode 100644
index 000000000..54f55f69e
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Athialon.cs
@@ -0,0 +1,82 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Athialon : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Athialon() : base( "the expeditionist" )
+ {
+ Name = "Athialon";
+ }
+
+ public Athialon( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = false;
+ Race = Race.Elf;
+
+ Hue = 0x8382;
+ HairItemID = 0x2FC0;
+ HairHue = 0x35;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ElvenBoots( 0x901 ) );
+ AddItem( new DiamondMace() );
+ AddItem( new WoodlandBelt() );
+
+ Item item;
+
+ item = new WoodlandLegs();
+ item.Hue = 0x3B2;
+ AddItem( item );
+
+ item = new WoodlandChest();
+ item.Hue = 0x3B2;
+ AddItem( item );
+
+ item = new WoodlandArms();
+ item.Hue = 0x3B2;
+ AddItem( item );
+
+ item = new WingedHelm();
+ item.Hue = 0x3B2;
+ AddItem( item );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Bolaevin.cs b/Scripts/Mobiles/Townfolk/ML/Bolaevin.cs
new file mode 100644
index 000000000..8b4083cde
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Bolaevin.cs
@@ -0,0 +1,71 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Bolaevin : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Bolaevin() : base( "the arcanist" )
+ {
+ Name = "Bolaevin";
+ }
+
+ public Bolaevin( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = false;
+ Race = Race.Elf;
+
+ Hue = 0x84DE;
+ HairItemID = 0x2FC0;
+ HairHue = 0x36;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ElvenBoots( 0x3B3 ) );
+ AddItem( new RoyalCirclet() );
+ AddItem( new LeafChest() );
+ AddItem( new LeafArms() );
+
+ Item item;
+
+ item = new LeafLegs();
+ item.Hue = 0x1BB;
+ AddItem( item );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Daelas.cs b/Scripts/Mobiles/Townfolk/ML/Daelas.cs
new file mode 100644
index 000000000..4fb8f4891
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Daelas.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Daelas : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Daelas() : base( "the aborist" )
+ {
+ Name = "Daelas";
+ }
+
+ public Daelas( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = false;
+ Race = Race.Elf;
+
+ Hue = 0x84DE;
+ HairItemID = 0x2FCF;
+ HairHue = 0x8F;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ElvenBoots( 0x901 ) );
+ AddItem( new ElvenPants( 0x8AB ) );
+
+ Item item;
+
+ item = new LeafGloves();
+ item.Hue = 0x1BB;
+ AddItem( item );
+
+ item = new LeafChest();
+ item.Hue = 0x8B0;
+ AddItem( item );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/GrandpaCharley.cs b/Scripts/Mobiles/Townfolk/ML/GrandpaCharley.cs
new file mode 100644
index 000000000..2f5ddcf96
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/GrandpaCharley.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class GrandpaCharley : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool IsActiveVendor{ get{ return false; } }
+ public override bool CanTeach{ get{ return true; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public GrandpaCharley() : base( "the farmer" )
+ {
+ Name = "Grandpa Charley";
+
+ SetSkill( SkillName.ItemID, 70.0, 80.0 );
+ }
+
+ public GrandpaCharley( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = false;
+ CantWalk = false;
+ Race = Race.Human;
+
+ Hue = 0x8410;
+ HairItemID = 0x203B;
+ HairHue = 0x3B2;
+ FacialHairItemID = 0x203E;
+ FacialHairHue = 0x3B2;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new Backpack() );
+ AddItem( new ShepherdsCrook() );
+ AddItem( new Shoes( 0x72F ) );
+ AddItem( new LongPants( 0x519 ) );
+ AddItem( new FancyShirt( 0x600 ) );
+ AddItem( new WideBrimHat( 0x6B1 ) );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Jothan.cs b/Scripts/Mobiles/Townfolk/ML/Jothan.cs
new file mode 100644
index 000000000..21c556901
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Jothan.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Jothan : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Jothan() : base( "the wise" )
+ {
+ Name = "Elder Jothan";
+ }
+
+ public Jothan( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = false;
+ Race = Race.Elf;
+
+ Hue = 0x8579;
+ HairItemID = 0x2FC2;
+ HairHue = 0x2C2;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ThighBoots() );
+ AddItem( new ElvenPants( 0x57A ) );
+ AddItem( new ElvenShirt( 0x711 ) );
+ AddItem( new Cloak( 0x21 ) );
+ AddItem( new Circlet() );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Mallew.cs b/Scripts/Mobiles/Townfolk/ML/Mallew.cs
new file mode 100644
index 000000000..9a0946fa0
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Mallew.cs
@@ -0,0 +1,78 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Mallew : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Mallew() : base( "the wise" )
+ {
+ Name = "Elder Mallew";
+ }
+
+ public Mallew( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = false;
+ Race = Race.Elf;
+
+ Hue = 0x876C;
+ HairItemID = 0x2FD1;
+ HairHue = 0x31E;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ElvenBoots( 0x1BB ) );
+ AddItem( new Circlet() );
+ AddItem( new Cloak( 0x3B2 ) );
+
+ Item item;
+
+ item = new LeafChest();
+ item.Hue = 0x53E;
+ AddItem( item );
+
+ item = new LeafArms();
+ item.Hue = 0x53E;
+ AddItem( item );
+
+ item = new LeafTonlet();
+ item.Hue = 0x53E;
+ AddItem( item );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Nythalia.cs b/Scripts/Mobiles/Townfolk/ML/Nythalia.cs
new file mode 100644
index 000000000..7ea116387
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Nythalia.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Nythalia : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Nythalia() : base( "the student" )
+ {
+ Name = "Nythalia";
+ }
+
+ public Nythalia( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = true;
+ Race = Race.Elf;
+
+ Hue = 0x840C;
+ HairItemID = 0x2045;
+ HairHue = 0x453;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new Backpack() );
+ AddItem( new Sandals( 0x74A ) );
+ AddItem( new Robe( 0x498 ) );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Olaeni.cs b/Scripts/Mobiles/Townfolk/ML/Olaeni.cs
new file mode 100644
index 000000000..8aed080da
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Olaeni.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Olaeni : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Olaeni() : base( "the thaumaturgist" )
+ {
+ Name = "Olaeni";
+ }
+
+ public Olaeni( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = true;
+ Race = Race.Elf;
+
+ Hue = 0x851D;
+ HairItemID = 0x2FCF;
+ HairHue = 0x322;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new Shoes( 0x736 ) );
+ AddItem( new FemaleElvenRobe( 0x1C ) );
+ AddItem( new GemmedCirclet() );
+ AddItem( new Item( 0xDF2 ) );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Rebinil.cs b/Scripts/Mobiles/Townfolk/ML/Rebinil.cs
new file mode 100644
index 000000000..677b4244f
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Rebinil.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Rebinil : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Rebinil() : base( "the healer" )
+ {
+ Name = "Rebinil";
+ }
+
+ public Rebinil( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = true;
+ Race = Race.Elf;
+
+ Hue = 0x83E7;
+ HairItemID = 0x2FD0;
+ HairHue = 0x26B;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new Sandals( 0x719 ) );
+ AddItem( new FemaleElvenRobe( 0x757 ) );
+ AddItem( new RoyalCirclet() );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Taellia.cs b/Scripts/Mobiles/Townfolk/ML/Taellia.cs
new file mode 100644
index 000000000..a9ecfe939
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Taellia.cs
@@ -0,0 +1,93 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Taellia : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Taellia() : base( "the wise" )
+ {
+ Name = "Elder Taellia";
+
+ m_Spoken = DateTime.Now;
+ }
+
+ public Taellia( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = true;
+ Race = Race.Elf;
+
+ Hue = 0x8385;
+ HairItemID = 0x2FCD;
+ HairHue = 0x368;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new Boots( 0x74B ) );
+ AddItem( new FemaleElvenRobe( 0x44 ) );
+ AddItem( new Circlet() );
+ AddItem( new Item( 0xDF2 ) );
+ }
+
+ private DateTime m_Spoken;
+
+ public override void OnMovement( Mobile m, Point3D oldLocation )
+ {
+ if ( m.Alive && m is PlayerMobile )
+ {
+ PlayerMobile pm = (PlayerMobile)m;
+
+ int range = 5;
+
+ if ( range >= 0 && InRange( m, range ) && !InRange( oldLocation, range ) && DateTime.Now >= m_Spoken + TimeSpan.FromMinutes( 1 ) )
+ {
+ /* Welcome Seeker. Do you wish to embrace your elven heritage, casting
+ aside your humanity, and accepting the responsibilities of a caretaker
+ of our beloved Sosaria. Then seek out Darius the Wise in Moonglow.
+ He will place you on the path. */
+
+ Say( 1072800 );
+
+ m_Spoken = DateTime.Now;
+ }
+ }
+ }
+
+ 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();
+
+ m_Spoken = DateTime.Now;
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Tyeelor.cs b/Scripts/Mobiles/Townfolk/ML/Tyeelor.cs
new file mode 100644
index 000000000..ec95b99f8
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Tyeelor.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Tyleelor : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Tyleelor() : base( "the expeditionist" )
+ {
+ Name = "Tyeelor";
+ }
+
+ public Tyleelor( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = false;
+ Race = Race.Elf;
+
+ Hue = 0x8367;
+ HairItemID = 0x2FC1;
+ HairHue = 0x38;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ElvenBoots( 0x1BB ) );
+
+ Item item;
+
+ item = new WoodlandLegs();
+ item.Hue = 0x236;
+ AddItem( item );
+
+ item = new WoodlandChest();
+ item.Hue = 0x236;
+ AddItem( item );
+
+ item = new WoodlandArms();
+ item.Hue = 0x236;
+ AddItem( item );
+
+ item = new WoodlandBelt();
+ item.Hue = 0x237;
+ AddItem( item );
+
+ item = new VultureHelm();
+ item.Hue = 0x236;
+ AddItem( item );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Vicaie.cs b/Scripts/Mobiles/Townfolk/ML/Vicaie.cs
new file mode 100644
index 000000000..545c3cbb7
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Vicaie.cs
@@ -0,0 +1,69 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Vicaie : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Vicaie() : base( "the wise" )
+ {
+ Name = "Elder Vicaie";
+ }
+
+ public Vicaie( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = true;
+ Race = Race.Elf;
+
+ Hue = 0x8362;
+ HairItemID = 0x2FCD;
+ HairHue = 0x90;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ElvenBoots() );
+ AddItem( new Tunic( 0x1FA1 ) );
+
+ Item item;
+
+ item = new LeafLegs();
+ item.Hue = 0x3B3;
+ AddItem( item );
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/Scripts/Mobiles/Townfolk/ML/Yellienir.cs b/Scripts/Mobiles/Townfolk/ML/Yellienir.cs
new file mode 100644
index 000000000..baa7a0336
--- /dev/null
+++ b/Scripts/Mobiles/Townfolk/ML/Yellienir.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Server;
+using Server.Items;
+
+namespace Server.Mobiles
+{
+ public class Yellienir : BaseVendor
+ {
+ private List m_SBInfos = new List();
+ protected override List SBInfos{ get { return m_SBInfos; } }
+
+ public override bool CanTeach{ get{ return false; } }
+ public override bool IsInvulnerable{ get{ return true; } }
+
+ public override void InitSBInfo()
+ {
+ }
+
+ [Constructable]
+ public Yellienir() : base( "the bark weaver" )
+ {
+ Name = "Yellienir";
+
+ m_Spoken = DateTime.Now;
+ }
+
+ public Yellienir( Serial serial ) : base( serial )
+ {
+ }
+
+ public override void InitBody()
+ {
+ InitStats( 100, 100, 25 );
+
+ Female = true;
+ CantWalk = true;
+ Race = Race.Elf;
+
+ Hue = 0x851D;
+ HairItemID = 0x2FCE;
+ HairHue = 0x35;
+ }
+
+ public override void InitOutfit()
+ {
+ AddItem( new ElvenBoots() );
+ AddItem( new Cloak( 0x3B2 ) );
+ AddItem( new FemaleLeafChest() );
+ AddItem( new LeafArms() );
+ AddItem( new LeafTonlet() );
+ }
+
+ private DateTime m_Spoken;
+
+ public override void OnMovement( Mobile m, Point3D oldLocation )
+ {
+ if ( m.Alive && m is PlayerMobile )
+ {
+ PlayerMobile pm = (PlayerMobile)m;
+
+ int range = 5;
+
+ if ( range >= 0 && InRange( m, range ) && !InRange( oldLocation, range ) && DateTime.Now >= m_Spoken + TimeSpan.FromMinutes( 1 ) )
+ {
+ /* Human. Do you crave the chance to denounce your humanity and prove your elven ancestry.
+ Do you yearn to accept the responsibilities of a caretaker of our beloved Sosaria and so
+ redeem yourself. Then human, seek out Darius the Wise in Moonglow. */
+
+ Say( 1072801 );
+
+ m_Spoken = DateTime.Now;
+ }
+ }
+ }
+
+ 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();
+
+ m_Spoken = DateTime.Now;
+ }
+ }
+}