public override void OnAfterDelete() { foreach (IEntity obj in ContainedObjects.ToList()) // toList necessary for enumeration modification { if (obj is Item) { ((Item)obj).Delete(); } else if (obj is ICrew) { ((ICrew)obj).Delete(); } else if (obj is Mobile) { ((Mobile)obj).Transport = null; } } if (CurrentMoveTimer != null) { CurrentMoveTimer.Stop(); } if (CurrentTurnTimer != null) { CurrentTurnTimer.Stop(); } this.TillerManMobile.Delete(); Instances.Remove(this); }