[moving_obj (whatever name that might be) STEP EVENT]
cloaking_obj = instance_position(x,y,obj_cloakers);
[moving_obj DRAW EVENT]
if(cloaking_obj != noone) {
surf_cloak = surface_create(sprite_get_width(sprite_index), sprite_get_height(sprite_index);
surface_set_target(surf_cloak);
draw_sprite(sprite_index, image_index,sprite_get_xoffset(sprite_index), sprite_get_yoffset(sprite_index));
draw_set_blend_mode(bm_subtract);
cloakx = cloaking_obj.x - x;
cloaky = cloaking_obj.y - y;
draw_sprite(cloaking_obj.sprite_index,cloaking_obj.image_index,
cloakx+sprite_get_xoffset(cloaking_obj.sprite_index),
cloaky+sprite_get_yoffset(cloaking_obj_sprite_index));
draw_set_blend_mode(bm_normal);
surface_reset_target();
draw_surface(surf_cloak, x - sprite_get_xoffset(sprite_index),
y - sprite_get_yoffset(sprite_index));
surface_free(surf_cloak);
} else {
draw_self();
}