Frankly, the way you went about it is very confusing. Since there will be multiple enemies, the text will only appear above the first enemy... I think... I'm not sure. The random damage code baffles me even more. I recommend a solution of using a simple, separate object that you can manipulate properly. Here is what to do (its been tested):
Make a new object and call it objEffect_Damage. Give the object the following codes and events: // ==== CREATE EVENT ====
_progress = 0;
_dmg = 0;
alarm[0] = 30;
vspeed = -1/3;
// ==== ALARM[0] EVENT ====
_progress += 1;
if( _progress == 1 ){ alarm[0] = 30; vspeed = 0; exit; }
if( _progress == 2 )instance_destroy();
// ==== DRAW EVENT ====
draw_set_font(global.fntHUD);
draw_set_color(c_white);
draw_set_halign(fa_center);
draw_set_valign(fa_middle);
draw_text( x, y, _dmg);
Then, you are going to completely replace the code of enemy_basic's Collision with Shadow event into this: if( other.combo > 0 && other.atk > 0 ) {
var _obj, _dmg;
_dmg = floor( random( 26.9 ) );
_obj = instance_create( x, y-30,objEffect_Damage);
_obj._dmg = _dmg;
hp -= _dmg;
}
The second line of this code: "_dmg -= floor( random( 26.9 ) )", deals the random damage you want. You can always change the value of this when you need to.
That should do it for now.