no you are reading the parenthesis wrong... you should go back and take a look at it again
First off I dunno what the variable 'items' is, so I will ignore that.
If obj is an item AND its not the case that Obj is a multi or Obj is a house sign AND its not the case that obj is a part of the secure group
Then this is true.
The problem you were having was here
!( (obj is BaseMulti) || (obj is HouseSign) )
Notice that the
not is outside of the parenthesis? This alone says
If not ( condition1 or condition2 )
I think it would be easier to see, if the whole statement was written like this
if ( items && (obj is Item) &&
!(obj is BaseMulti) && !(obj is HouseSign) && !GroupsHandler.InSecureGroup( obj as Item ) )
toDelete.Add( obj );