What you are looking for is called "ACTIVATE_PUSH". You'll find it in the manual under c_move.
c_move(me, vector(25*time_step, 0, 0), nullvector, IGNORE_PASSABLE | ACTIVATE_PUSH);
You do not have to set a push value!
Now put sth. like this in your collision event:
function damage_enemies_only()
{
if(event_type == EVENT_PUSH)
{
if (your.side == 3)
return(0);
}
if(event_type == EVENT_ENTITY && your.side != 3)
{
your.health -= 10;
my.alive = 0;
}
}
I never understood why you would want to use IGNORE_FLAG2 since entities become either passable or obstacles. Which is not a sohpisticated differentiation.
Ok, I hope this helps.
Good luck!