Ok, bmap_square_drawColor is generating a noise texture. I don't know if this is your original intention. A simple fill of the whole bitmap might be easier to identify as different for a start. But that's not the point.
The error is in here:
function asteroid_modify(ENTITY* ast_i)
{
[...]
ent_cloneskin(ast_i);
bmap_square_drawColor(texture2, 255);
ent_setskin(ast_i,texture2,1);
}
First you clone the entity and then you assign the same skin to all of them with ent_setskin. That does not make any sense at all. You have to call bmap_square_drawColor on every individual skin of the entities. You can grab the sking with bmap_for_entity. ent_setskin sets the skin as the name says. It does not copy any content.