OK, ich hab die FUNCTION blut_function verbessert. Mach mal eine zweite Blut-Bitmap (blut2.bmp) und häng das darunter. Irgendwie sollte das Blut ganz langsam runterlaufen. Hab's nicht ausprobiert ... aber versuchs mal, würd mich echt interessieren, ob's funktioniert!

code:
BMAP blood_map,<blut2.bmp>;

VAR parray [1801];
VAR ppoint = 0;

//PROTOTYPEN
FUNCTION array_function();
FUNCTION blut_function();
FUNCTION blut_function_2();
FUNCTION blood_particle();

FUNCTION array_function()
{
ppoint = 0;
while (parray [ppoint*6] != 0) { ppoint += 1; }
}

FUNCTION function_blut
{
MY.FACING = ON;
blut_function_2();
wait 200;
REMOVE (ME);
}

FUNCTION blut_function_2
{
MY.PASSABLE = ON;
array_function();
if (ppoint >= 300) { END; }
my.skill14 = ppoint;
parray[my.skill14 * 6] = 1;
if (my.skill8 == 0)
{ my.skill8 = 4; }
if (my.skill7 == 0)
{ my.skill7 = 1; }
if (my.skill7 < 0.2 && my.skill7 != -1)
{ my.skill7 = 0.2; }
if (my.skill7 > 3)
{ my.skill7 = 3; }
while(1) {
if (my.skill7 > 0)
{my.skill13 -= 1;
if (my.skill13 <= 0)
{
my.skill13 = my.skill8 / TIME;
parray[my.skill14 * 6 +2] = my.skill7;
parray[my.skill14 * 6 +1] = my.x + (random(4) - 2) * my.skill7;
my.skill10 = my.skill14;
my.skill11 = my.y + (random(4) - 2) * my.skill7;
my.skill12 = my.z;
emit(1,my.skill10,blood_particle);
}
}
wait(1);
}
}

FUNCTION blood_particle()
{
if(my_age == 0) {my_alpha = 0;
my_color.blue = parray[my_pos.x * 6 + 2];
my_pos.x = parray[my_pos.x * 6 + 1];
my_speed.z = -((0.7+random(1)) * my_color.blue);
my_color.red = random (80);
my_color.green = random (80);
my_size = (1100+random(200)) * my_color.blue;
my_map = blut_map;
my_flare = on;
END;
}
if (my_age > 80) {MY_ACTION = NULL;}
if (my_age > 17){my_alpha = 40 - my_age/2;}
else { my_alpha = my_age * 2; }
my_speed.x = (sin(my_age * 6 + my_color.red) / 2.5) * my_color.blue;
my_speed.y = (cos(my_age * 7 + my_color.green) / 2) * my_color.blue;
}