I 'THINK' what is happening is that when dmg_text gets called
multiple times in one frame, it is ending up with 'ab_text' is
always pointing to the same actual string, being "health_loose_str".

Try this version of show_dmg instead...

Code:
function show_dmg(var save_health)
{
	VECTOR color;

	if(my.health > save_health)
	{
		vec_set(color, vector(100,255,100));
		
		dmg_text(str_for_num(NULL,my.health-save_health), color);
	}
	if(my.health < save_health)
	{		
		vec_set(color, vector(50,50,255));
		
		dmg_text(str_for_num(NULL, save_health - my.health), color);
	}
}


OR
Code:
function show_dmg(var save_health)
{
	VECTOR color;
	STRING* temp_str = str_create("");

	if(my.health > save_health)
	{
		vec_set(color, vector(100,255,100));
		
		str_for_num(temp_str,my.health-save_health)

		dmg_text(temp_str, color);
	}
	if(my.health < save_health)
	{		
		vec_set(color, vector(50,50,255));
		
		str_for_num(temp_str, save_health - my.health)
		
		dmg_text(temp_str, color);
	}
	wait(1);
	str_remove(temp_str);
}




"There is no fate but what WE make." - CEO Cyberdyne Systems Corp.
A8.30.5 Commercial