public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 15 ); // version
writer.Write( (Point3D) m_RelativeBanLocation );
writer.WriteMobileList( m_InternalizedVendors, true );
writer.WriteEncodedInt( m_VendorInventories.Count );
for ( int i = 0; i < m_VendorInventories.Count; i++ )
{
VendorInventory inventory = (VendorInventory) m_VendorInventories[i];
inventory.Serialize( writer );
}
writer.Write( (DateTime) m_LastRefreshed );
writer.Write( (bool) m_RestrictDecay );
writer.Write( (int) m_Visits );
writer.Write( (int) m_Price );
writer.WriteMobileList( m_Access );
writer.Write( m_BuiltOn );
writer.WriteItemList( m_Addons, true );
writer.Write( m_Public );
//writer.Write( BanLocation );
writer.Write( m_Owner );
// Version 5 no longer serializes region coords
/*writer.Write( (int)m_Region.Coords.Count );
foreach( Rectangle2D rect in m_Region.Coords )
{
writer.Write( rect );
}*/
writer.WriteMobileList( m_CoOwners, true );
writer.WriteMobileList( m_Friends, true );
writer.WriteMobileList( m_Bans, true );
writer.Write( m_Sign );
writer.Write( m_Trash );
writer.WriteItemList( m_Doors, true );
writer.WriteItemList( m_LockDowns, true );
writer.WriteItemList( m_Secures, true );
writer.Write( (int) m_MaxLockDowns );
writer.Write( (int) m_MaxSecures );
// Items in locked down containers that aren't locked down themselves must decay!
for ( int i = 0; i < m_LockDowns.Count; ++i )
{
Item item = (Item)m_LockDowns[i];
if ( item is Container && !(item is BaseBoard ) )
{
Container cont = (Container)item;
List<Item> children = cont.Items;
for ( int j = 0; j < children.Count; ++j )
{
Item child = children[j];
if ( child.Decays && !child.IsLockedDown && !child.IsSecure && (child.LastMoved + child.DecayTime) <= DateTime.Now )
Timer.DelayCall( TimeSpan.Zero, new TimerCallback( child.Delete ) );
}
}
}
}