Using Panels and Windows for every tile will get *way* to slow by time, I guess.

It also prevents using cool effects and stuff.

As you want those, I suggest that you write a system based on draw_quad and then use bmap_process for the shader effects.

About particles, I am not sure, but I think the function effect_layer might help you.

(oh and for filling: floodfill)