diff --git a/chameleonic.p8 b/chameleonic.p8 index 7bdd8c1..d250974 100644 --- a/chameleonic.p8 +++ b/chameleonic.p8 @@ -416,8 +416,9 @@ end function level:recollide_reanchor() self._coll={} for mx=0,15 do + local kmx=mx.."," for my=0,15 do - local mxy=_mix{mx,my} + local mxy=kmx..my self._coll[mxy]= fget(self:_mget(mx,my),7) or self._crates[mxy] @@ -430,18 +431,19 @@ function level:recollide_reanchor() -1`1 1`1]]) do local dx,dy=unpack(dxy) - assert(dx!=0 and dy!=0) + local c=self._coll for mx0=0,15 do + local mx1=mx0+dx + local kmx0,kmx1=mx0..",",mx1.."," for my0=0,15 do - local mx1,my1=mx0+dx,my0+dy + local my1=my0+dy -- bypass mcoll for MEGA SPEED - local c=self._coll if ( - c[mx0..","..my0] and not self:get_crate(mx0,my0) and - not c[mx0..","..my1] and - not c[mx1..","..my0] and - not c[mx1..","..my1] + c[kmx0..my0] and not self:get_crate(mx0,my0) and + not c[kmx0..my1] and + not c[kmx1..my0] and + not c[kmx1..my1] ) then local key=_mix{"GEOM",mx0,my0,dx,dy} anch_new[key]= {