Applying damage via rez param causes object to ALWAYS despawn on collision
(Okay, so it looks like the text editor ate my entire post.)
Applying REZ_PARAM_DAMAGE to an object will force it to immediately despawn regardless of whether or not damage is actually applied to the collision source. This behavior also triggers in non-damage areas and parcels.
The following code was used and tested:
list rezparams=[
REZ_PARAM,1,//Rez param
REZ_FLAGS,REZ_FLAG_DIE_ON_NOENTRY|REZ_FLAG_NO_COLLIDE_OWNER|REZ_FLAG_NO_COLLIDE_FAMILY|REZ_FLAG_PHYSICAL|REZ_FLAG_TEMP,//Flags
REZ_POS,llGetCameraPos(),0,1,//Object rez Pos
REZ_ROT,llGetCameraRot(),0,//Object Rot on rez
REZ_VEL,<150.0,0.0,0.0>,1,0, //Velocity
REZ_LOCK_AXES,<1.0,1.0,1.0>,//Axis Locks
//REZ_SOUND,sound,1.0,1,//Loop sound
REZ_SOUND_COLLIDE,"",1.0//Collision sound
//REZ_DAMAGE,200.0,REZ_DAMAGE_TYPE,0//Damage Params
];
llRezObjectWithParams(bullet,rezparams);
The project spawned via this method will die without executing any collision event or functions queued after the initial collision regardless of source or location.