First I want to thank you all for your angelic patience. I know it is not always easy to help me with my code and sometimes it's a long journey grin.

I did alot of testing today with the various solutions offered:

@Wjbender, while I really like the idea of your method, the results are funny when using a disk shape as an explosion. When firing the horizontal disk, enemies walking towards the player will move over it (even while I do 1 ignore_group before the enemy's c_move and 1 before their c_trace). Maybe my problem is not using the right engine function to trigger event_impact (I have tried c_rotate and c_move). But next to that it seems to work good enough. I have c&p the code below.

@alibaba, your sample that not seem to work always eek. If I comment "vec_set(my.pan,nullvector);" (found in the HitEvent function) and e.g. set "RocketEnt.roll = 90;" in the shoot_rocket action, it works better but still not always.


My version of Wjbender's-idea-like explosion (created at the end of the player missile):

Code:
action explosion_playermissile()
{
 VECTOR scan_sector;	
 my.group = 1; //for player projectiles	
 set(my,FLAG2);	
 my.WEAPONSELECTED = you.WEAPONSELECTED;
 my.DAMAGE = you.DAMAGE;
 my.AREAOFEFFECT = you.AREAOFEFFECT;
 vec_set(my.pan,you.pan);
 
 vec_set(scan_sector, vector(my.AREAOFEFFECT, my.AREAOFEFFECT, my.AREAOFEFFECT));		
 if (my.WEAPONSELECTED == 5) scan_sector.z = 30;

 my.scale_x = scan_sector.x /45;
 my.scale_y = scan_sector.y /45;
 my.scale_z = scan_sector.z /45;
 wait(1);
 c_setminmax(me);
 
 var angle;
 for (angle = 0; angle < 360; angle += 30) 
 {
 ang_rotate(my.pan,vector(angle, 0, 0));
 // vec_add(my.pan, vector(-5, -5, -5));	
 // c_rotate(my, vector(5,5,5), IGNORE_FLAG2 | IGNORE_PASSABLE | IGNORE_WORLD);
 vec_add(my.x, vector(-5, -5, -5));
 c_move(my, nullvector, vector(5,5,5), IGNORE_FLAG2 | IGNORE_PASSABLE | IGNORE_WORLD);
 wait(1);
 }	
 ent_remove(me);
 	
}