public override void OnAfterDelete()
{
base.OnAfterDelete();
if ( m_Owner != null )
{
List<BaseHouse> list = null;
m_Table.TryGetValue( m_Owner, out list );
if ( list == null )
m_Table[m_Owner] = list = new List<BaseHouse>();
list.Remove( this );
}
if ( m_Region != null )
{
m_Region.Unregister();
m_Region = null;
}
if ( m_Sign != null )
m_Sign.Delete();
if ( m_Trash != null )
m_Trash.Delete();
if ( m_Doors != null )
{
for ( int i = 0; i < m_Doors.Count; ++i )
{
Item item = (Item)m_Doors[i];
if ( item != null )
item.Delete();
}
m_Doors.Clear();
}
if ( m_LockDowns != null )
{
for ( int i = 0; i < m_LockDowns.Count; ++i )
{
Item item = (Item)m_LockDowns[i];
if ( item != null )
{
item.IsLockedDown = false;
item.IsSecure = false;
item.Movable = true;
item.SetLastMoved();
}
}
m_LockDowns.Clear();
}
if ( m_Secures != null )
{
for ( int i = 0; i < m_Secures.Count; ++i )
{
/*
SecureInfo info = (SecureInfo)m_Secures[i];
if ( info.Item is StrongBox )
{
info.Item.Destroy();
}
else
{
info.Item.IsLockedDown = false;
info.Item.IsSecure = false;
info.Item.Movable = true;
info.Item.SetLastMoved();
}
*/
}
m_Secures.Clear();
}
if ( m_Addons != null )
{
for ( int i = 0; i < m_Addons.Count; ++i )
{
Item item = (Item)m_Addons[i];
if ( item != null )
{
if( !item.Deleted && item is IAddon )
{
Item deed = ((IAddon)item).Deed;
bool retainDeedHue = false; //if the items aren't hued but the deed itself is
int hue = 0;
if( item is BaseAddon && ((BaseAddon)item).RetainDeedHue ) //There are things that are IAddon which aren't BaseAddon
{
BaseAddon ba = (BaseAddon)item;
retainDeedHue = true;
for( int j = 0; hue == 0 && j < ba.Components.Count; ++j )
{
AddonComponent c = ba.Components[j];
if( c.Hue != 0 )
hue = c.Hue;
}
}
if( deed != null )
{
if( retainDeedHue )
deed.Hue = hue;
deed.MoveToWorld( item.Location, item.Map );
}
}
item.Delete();
}
}
m_Addons.Clear();
}
ArrayList inventories = new ArrayList( VendorInventories );
foreach ( VendorInventory inventory in inventories )
inventory.Delete();
KillVendors();
m_AllHouses.Remove( this );
}