Generalnie to trzeba też znaleźć sposób, by do tego zagadnienia podejść. Ja bym od razu odrzucił szukanie w każdej klatce, przez każdy z obiektów, jakiegoś innego najbliższego. Czemu? Bo to od razu powoduje taki problem, że kilka obiektów na raz znajdzie siebie i każdy poleci w inną stronę.
Ugryzł bym to inaczej. Takiego połączenia chcesz przecież dokonać, gdy pojawią się dwa przedmioty blisko siebie - nigdy, gdy jest jeden. Kluczem jest właśnie tutaj "pojawią się". Ja bym w momencie tworzenia nowego obiektu sprawdzał, czy w granicy X od niego, za pomocą collision_circle albo collision_circle_list, które mają argument NOTME wykluczający obecną instancję (w tym przypadku - świeżo stworzoną).
var near = collision_circle(x,y,300,drewno,false,true);
if (near > 0) {
near.amount += amount;
instance_destroy();
}
I po sprawie. Jak chcesz animować, że one się przyciągają, to nieco wiecej zabawy i wtedy collision_circle_list się przyda, żeby znaleźć wszystkie w tej samej strefie, oraz wykluczać np. te które się już "animują" (o ile tak chcesz).