Thanks for the post. I was looking into surfaceses (?) so I'm glad I was on the right track.
However, I still can't get it to work. Even worse, I have no idea what I'm doing wrong. This is the same code structure I use for my pause function (excl the negative bit) and that works fine.
Here is the code I have currently put in the draw event of an enemy's sprite:
if (control_id.recovery_time > 0)
{
// draw negative sprite
surface_Enemy_Sprite = surface_create(sprite_width, sprite_height);
surface_set_target(surface_Enemy_Sprite);
draw_clear_alpha(c_white, 0);
draw_set_color(c_white);
draw_set_blend_mode_ext(bm_inv_dest_color, bm_inv_src_color);
draw_sprite(sprite_index, image_index, 0, 0);
draw_set_blend_mode(bm_normal);
surface_reset_target();
draw_surface(surface_Enemy_Sprite, x, y);
surface_free(surface_Enemy_Sprite);
}
else
{
// draw sprite regularly
draw_sprite(sprite_index, image_single, x, y);
};
The result is that (almost?) all the enemy sprites turn invisible as well as the character sprites (excl shadow) and the hud images. That makes absolutely no sense to me. Anybody see what's wrong in the code that might have caused this?