For the condition, you need to be sure to take operator precedence into account (and binds higher than or, so currently, if param1 == 4, then the trigger might fire before thisList is filled, though I'm not sure it would matter in this particular case):
this and param1 == 3 or param1 == 4 // This acts as "(this and param1 == 3) or param1 == 4
Should be
this and (param1 == 3 or param1 == 4) // Alternatively, use "this and (param1 in [3,4])"
In forEach blocks, each iteration sets _x, not _this, to the item. Thus it should be,
{deletevehicle _x} foreach thislist;
I'm sure it is the latter issue that is causing your problem, but the former is good practice anyway.