Index: Item.cs
===================================================================
--- Item.cs	(revision 710)
+++ Item.cs	(working copy)
@@ -2687,16 +2687,21 @@
 			return 18;
 		}
 
-		public void SendInfoTo( NetState state ) {
+		public virtual void SendInfoTo( NetState state ) { // Zippy made virtual (for 1.0.1 compat) 11 June 2011
 			SendInfoTo( state, ObjectPropertyList.Enabled );
 		}
 
 		public virtual void SendInfoTo( NetState state, bool sendOplPacket ) {
-			state.Send( GetWorldPacketFor( state ) );
+            Packet p = GetWorldPacketFor(state);
+            if (p != null)
+            {
+                state.Send( p );
 
-			if ( sendOplPacket ) {
-				state.Send( OPLPacket );
-			}
+                if (sendOplPacket)
+                {
+                    state.Send(OPLPacket);
+                }
+            }
 		}
 
 		protected virtual Packet GetWorldPacketFor( NetState state ) {
@@ -3423,7 +3428,39 @@
 				OnItemRemoved( item );
 			}
 		}
+        // BEGIN 1.0.1 code -- Zippy 11 June 2011
+        public virtual Item Dupe(int amount)
+        {
+            return this.Dupe(new Item(), amount);
+        }
 
+        public virtual Item Dupe(Item item, int amount)
+        {
+            item.Visible = this.Visible;
+            item.Movable = this.Movable;
+            item.LootType = this.LootType;
+            item.Direction = this.Direction;
+            item.Hue = this.Hue;
+            item.ItemID = this.ItemID;
+            item.Location = this.Location;
+            item.Layer = this.Layer;
+            item.Name = this.Name;
+            item.Weight = this.Weight;
+            item.Amount = amount;
+            item.Map = this.Map;
+            if (this.Parent is Mobile)
+            {
+                ((Mobile)this.Parent).AddItem(item);
+            }
+            else if (this.Parent is Item)
+            {
+                ((Item)this.Parent).AddItem(item);
+            }
+            item.Delta(ItemDelta.Update);
+            return item;
+        }
+        // END 1.0.1 code -- Zippy 11 June 2011
+
 		public virtual void OnAfterDuped( Item newItem )
 		{
 		}
@@ -3635,7 +3672,7 @@
 		}
 
 		[CommandProperty( AccessLevel.GameMaster )]
-		public string Name
+		public virtual string Name // Zippy made virtual (for 1.0.1 compat) 11 June 2011
 		{
 			get
 			{
Index: Main.cs
===================================================================
--- Main.cs	(revision 710)
+++ Main.cs	(working copy)
@@ -37,6 +37,7 @@
 using Server.Gumps;
 using Server.Network;
 using System.Runtime;
+using Ultima;
 
 namespace Server
 {
@@ -58,6 +59,7 @@
 		private static bool m_HaltOnWarning;
 		private static bool m_VBdotNET;
 		private static MultiTextWriter m_MultiConOut;
+        private static Ultima.StringList m_CliLoc;
 
 		private static bool m_Profiling;
 		private static DateTime m_ProfileStart;
@@ -71,6 +73,18 @@
 			set { m_MessagePump = value; }
 		}
 
+        public static Ultima.StringList CliLoc
+        { 
+            get 
+            {
+                return m_CliLoc;
+            }
+            set
+            {
+                m_CliLoc = value;
+            }
+        }
+
 		public static Slice Slice;
 
 		public static bool Profiling
Index: Network/Packets.cs
===================================================================
--- Network/Packets.cs	(revision 710)
+++ Network/Packets.cs	(working copy)
@@ -2084,7 +2084,7 @@
 			return p;
 		}
 
-		public MessageLocalized( Serial serial, int graphic, MessageType type, int hue, int font, int number, string name, string args ) : base( 0xC1 )
+		/*public MessageLocalized( Serial serial, int graphic, MessageType type, int hue, int font, int number, string name, string args ) : base( 0xC1 )
 		{
 			if ( name == null ) name = "";
 			if ( args == null ) args = "";
@@ -2102,7 +2102,27 @@
 			m_Stream.Write( (int) number );
 			m_Stream.WriteAsciiFixed( name, 30 );
 			m_Stream.WriteLittleUniNull( args );
-		}
+		}*/
+
+        public MessageLocalized(Serial serial, int graphic, MessageType type, int hue, int font, int number, string name, string args)
+            : base(0x1c)
+        {
+            if (name == null) name = "";
+            if (args == null) args = "";
+
+            if (hue == 0)
+                hue = 0x3B2;
+            
+            string text = Core.CliLoc.SplitFormat(number, args);
+            EnsureCapacity(0x2d + text.Length);
+            m_Stream.Write((int)serial);
+            m_Stream.Write((short)graphic);
+            m_Stream.Write((byte)type);
+            m_Stream.Write((short)hue);
+            m_Stream.Write((short)font);
+            m_Stream.WriteAsciiFixed(name, 30);
+            m_Stream.WriteAsciiNull(text);
+        }
 	}
 
 	public sealed class MobileMoving : Packet
@@ -3445,7 +3465,7 @@
 
 	public sealed class UnicodeMessage : Packet
 	{
-		public UnicodeMessage( Serial serial, int graphic, MessageType type, int hue, int font, string lang, string name, string text ) : base( 0xAE )
+		public UnicodeMessage(Serial serial, int graphic, MessageType type, int hue, int font, string lang, string name, string text) : base(0x1c)
 		{
 			if ( string.IsNullOrEmpty( lang ) ) lang = "ENU";
 			if ( name == null ) name = "";
@@ -3454,6 +3474,25 @@
 			if ( hue == 0 )
 				hue = 0x3B2;
 
+            EnsureCapacity(0x2d + text.Length);
+            m_Stream.Write((int) serial);
+            m_Stream.Write((short) graphic);
+            m_Stream.Write((byte) type);
+            m_Stream.Write((short) hue);
+            m_Stream.Write((short) font);
+            m_Stream.WriteAsciiFixed(name, 30);
+            m_Stream.WriteAsciiNull(text);
+		}
+        
+        /*public UnicodeMessage( Serial serial, int graphic, MessageType type, int hue, int font, string lang, string name, string text ) : base( 0xAE )
+        {
+			if ( string.IsNullOrEmpty( lang ) ) lang = "ENU";
+			if ( name == null ) name = "";
+			if ( text == null ) text = "";
+
+			if ( hue == 0 )
+				hue = 0x3B2;
+
 			this.EnsureCapacity( 50 + (text.Length * 2) );
 
 			m_Stream.Write( (int) serial );
@@ -3464,7 +3503,7 @@
 			m_Stream.WriteAsciiFixed( lang, 4 );
 			m_Stream.WriteAsciiFixed( name, 30 );
 			m_Stream.WriteBigUniNull( text );
-		}
+		}*/
 	}
 
 	public sealed class PingAck : Packet
@@ -3893,7 +3932,7 @@
 
 	public sealed class MessageLocalizedAffix : Packet
 	{
-		public MessageLocalizedAffix( Serial serial, int graphic, MessageType messageType, int hue, int font, int number, string name, AffixType affixType, string affix, string args ) : base( 0xCC )
+		/*public MessageLocalizedAffix( Serial serial, int graphic, MessageType messageType, int hue, int font, int number, string name, AffixType affixType, string affix, string args ) : base( 0xCC )
 		{
 			if ( name == null ) name = "";
 			if ( affix == null ) affix = "";
@@ -3914,9 +3953,35 @@
 			m_Stream.WriteAsciiFixed( name, 30 );
 			m_Stream.WriteAsciiNull( affix );
 			m_Stream.WriteBigUniNull( args );
-		}
-	}
+		}*/
+        
+        public MessageLocalizedAffix(Serial serial, int graphic, MessageType messageType, int hue, int font, int number, string name, AffixType affixType, string affix, string args)
+            : base(0x1c)
+        {
+            string text;
 
+            if (name == null) name = "";
+            if (affix == null) affix = "";
+            if (args == null) args = "";
+
+            if (hue == 0)
+                hue = 0x3B2;
+
+            if ((affixType & AffixType.Prepend) != AffixType.Append)
+                text = string.Format("{0}{1}", affix, Core.CliLoc.SplitFormat(number, args));
+            else
+                text = string.Format("{0}{1}", Core.CliLoc.SplitFormat(number, args), affix);
+            EnsureCapacity(0x2d + text.Length);
+            m_Stream.Write((int)serial);
+            m_Stream.Write((short)graphic);
+            m_Stream.Write((byte)messageType);
+            m_Stream.Write((short)hue);
+            m_Stream.Write((short)font);
+            m_Stream.WriteAsciiFixed(name, 30);
+            m_Stream.WriteAsciiNull(text);
+        }
+    }
+
 	public sealed class ServerInfo
 	{
 		private string m_Name;
Index: Region.cs
===================================================================
--- Region.cs	(revision 710)
+++ Region.cs	(working copy)
@@ -206,7 +206,7 @@
 			m_Map = map;
 			m_Parent = parent;
 			m_Area = area;
-			m_Dynamic = true;
+			m_Dynamic = area != null; // Zippy 11 June 2011
 			m_Music = this.DefaultMusic;
 
 			if ( m_Parent == null )
@@ -221,6 +221,18 @@
 			}
 		}
 
+        // Zippy 11 June 2011
+        public Region(string name, Map map)
+        {
+            m_Name = name;
+            m_Map = map;
+            m_Dynamic = false;
+            m_Music = this.DefaultMusic;
+
+            m_ChildLevel = 0;
+            m_Priority = DefaultPriority;
+        }
+
 		public void Register()
 		{
 			if ( m_Registered )
@@ -269,6 +281,11 @@
 			m_Sectors = sectors.ToArray();
 		}
 
+        public static void AddRegion(Region r)
+        {
+            r.Register();
+        }
+
 		public void Unregister()
 		{
 			if ( !m_Registered )
