I might be wrong,
but basically its checking to see if its not overlapping itself(as its the one being picked on the touch event). Which is true every event.
There are some tricks around this, but the most easiest verion for my brain that i can think of is to use a function and a invisible collision tile(the same size of the gridbase).
so,
on gridbased.touch, call function($name) no need to pass any values.
on.function($name) set invisible tile position to createx and createy
invisible_tile is not overlapping gridbase at offsetx and y
then create object(gridbase) at createx +- offsetx and createy +- offsety
(repeat event inside function for however many times you need it)
This should work, someone else might come up with a better solution.