public override void OnAfterDelete()
		{
			#region Mondain's Legacy
			if ( m_Region != null )
			{
				NoHousingItem houseItem = new NoHousingItem( this );
				houseItem.MoveToWorld( m_Region.GoLocation, m_Region.Map );
			}
			#endregion

			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 ( VendorRentalContracts != null )
			{
				for ( int i = 0; i < VendorRentalContracts.Count; ++i )
				{
					Item item = (Item)VendorRentalContracts[i];

					if ( item != null )
					{
						item.IsLockedDown = false;
						item.IsSecure = false;
						item.Movable = true;
						item.SetLastMoved();
					}
				}

				VendorRentalContracts.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();

			if ( MovingCrate != null )
				MovingCrate.Delete();

			KillVendors();

			m_AllHouses.Remove( this );
		}
Beispiel #2
0
 public NoHousingDelayTimer(NoHousingItem item, TimeSpan delay)
     : base(delay)
 {
     m_Item   = item;
     Priority = TimerPriority.OneMinute;
 }
Beispiel #3
0
 public NoHousingDelayTimer(NoHousingItem item)
     : this(item, DefaultDelay)
 {
 }
Beispiel #4
0
 public NoHousingDelayTimer(NoHousingItem item)
     : this(item, DefaultDelay)
 {
 }
Beispiel #5
0
 public NoHousingDelayTimer(NoHousingItem item, TimeSpan delay)
     : base(delay)
 {
     this.m_Item = item;
     this.Priority = TimerPriority.OneMinute;
 }