diff --git a/source/core/mapinfo.cpp b/source/core/mapinfo.cpp index 25cce2d53..506cae54c 100644 --- a/source/core/mapinfo.cpp +++ b/source/core/mapinfo.cpp @@ -98,7 +98,7 @@ MapRecord *FindMapByLevelNum(int num) MapRecord *FindNextMap(MapRecord *thismap) { - if (thismap->nextLevel != -1) return &mapList[thismap->nextLevel]; + if (thismap->nextLevel != -1) return FindMapByLevelNum(thismap->nextLevel); return FindMapByLevelNum(thismap->levelNumber+1); } diff --git a/source/games/duke/src/animatesprites_r.cpp b/source/games/duke/src/animatesprites_r.cpp index ab403510f..7758084db 100644 --- a/source/games/duke/src/animatesprites_r.cpp +++ b/source/games/duke/src/animatesprites_r.cpp @@ -707,8 +707,13 @@ void animatesprites_r(int x, int y, int a, int smoothratio) t->picnum += k + ScriptCode[t4] + l * t3; if (l > 0) - while (!tileGetTexture(t->picnum)->isValid() && t->picnum > 0) + while (t->picnum >= 0 && t->picnum < MAXTILES && !tileGetTexture(t->picnum)->isValid() && t->picnum > 0) t->picnum -= l; //Hack, for actors + if (t->picnum < 0 || t->picnum >= MAXTILES) + { + t->picnum = 0; + t->xrepeat = t->yrepeat = 0; + } if (h->dispicnum >= 0) h->dispicnum = t->picnum;