// Eigenschgaft des Effektes
function move_gibbits()
{
var gib_coords;
var gib_speed;
my.passable = on;
my.scale_x = 0.5 + random(1);
my.scale_y = my.scale_x;
my.scale_z = my.scale_x;
vec_set (gib_coords, my.x);
gib_speed.x = (10 - random(20)) * time;
gib_speed.y = (10 - random(20)) * time;
gib_speed.z = (20 + random(10)) * time;
my.skill10 = 10;
while (my.skill10 > 0)
{
if (vec_dist (my.x, gib_coords.x) > 70)
{
my.passable = off;
}
ent_move (nullvector, gib_speed);
effect (debris_trail, 1, my.x, nullvector);
if (bounce.z != 0)
{
gib_speed.z = -(gib_speed.z * min(0.8, random(1)));
if (gib_speed.z < 0.1)
{
gib_speed.x = 0;
gib_speed.y = 0;
gib_speed.z = 0;
}
}
gib_speed.z -= 2 * time;
my.skill10 -= 0.3 * time;
wait (1);
}
my.transparent = on;
my.alpha = 100;
while (my.alpha > 0)
{
my.alpha -= 3 * time;
wait (1);
}
ent_remove (my);
}
// Aufruf Funktion des einzelnen Explosions-Effekte
function start_explosion(coordinates)
{
var sound_volume;
var number_of_gibbits;
sound_volume = 30000 / (vec_dist(coordinates.x, camera.x) + 100);
snd_play (explostart_wav, sound_volume, 0);
...
number_of_gibbits = random(15) + 5;
while (number_of_gibbits > 0) // while without wait!
{
ent_create (gibbit_mdl, coordinates, move_gibbits);
number_of_gibbits -= 1;
}
snd_play (exploend_wav, sound_volume, 0);
}