| 1298 | |
| 1299 | #if defined(__clang__) || defined(__GNUC__) |
| 1300 | __attribute__((no_sanitize("shift-base"))) |
| 1301 | #endif |
| 1302 | void StartWalk2(int pnum, int xvel, int yvel, int xoff, int yoff, int xadd, int yadd, int EndDir, int sdir) |
| 1303 | { |
| 1304 | int px, py; |
| 1305 | |
| 1306 | if ((DWORD)pnum >= MAX_PLRS) { |
| 1307 | app_fatal("StartWalk2: illegal player %d", pnum); |
| 1308 | } |
| 1309 | |
| 1310 | if (plr[pnum]._pInvincible && !plr[pnum]._pHitPoints && pnum == myplr) { |
| 1311 | SyncPlrKill(pnum, -1); |
| 1312 | return; |
| 1313 | } |
| 1314 | |
| 1315 | SetPlayerOld(pnum); |
| 1316 | px = xadd + plr[pnum].WorldX; |
| 1317 | py = yadd + plr[pnum].WorldY; |
| 1318 | |
| 1319 | if (!PlrDirOK(pnum, EndDir)) { |
| 1320 | return; |
| 1321 | } |
| 1322 | |
| 1323 | plr[pnum]._px = px; |
| 1324 | plr[pnum]._py = py; |
| 1325 | |
| 1326 | if (pnum == myplr) { |
| 1327 | ScrollInfo._sdx = plr[pnum].WorldX - ViewX; |
| 1328 | ScrollInfo._sdy = plr[pnum].WorldY - ViewY; |
| 1329 | } |
| 1330 | |
| 1331 | dPlayer[plr[pnum].WorldX][plr[pnum].WorldY] = -1 - pnum; |
| 1332 | plr[pnum]._pVar1 = plr[pnum].WorldX; |
| 1333 | plr[pnum]._pVar2 = plr[pnum].WorldY; |
| 1334 | plr[pnum].WorldX = px; |
| 1335 | plr[pnum].WorldY = py; |
| 1336 | dPlayer[plr[pnum].WorldX][plr[pnum].WorldY] = pnum + 1; |
| 1337 | plr[pnum]._pxoff = xoff; |
| 1338 | plr[pnum]._pyoff = yoff; |
| 1339 | |
| 1340 | ChangeLightXY(plr[pnum]._plid, plr[pnum].WorldX, plr[pnum].WorldY); |
| 1341 | PM_ChangeLightOff(pnum); |
| 1342 | |
| 1343 | plr[pnum]._pmode = PM_WALK2; |
| 1344 | plr[pnum]._pxvel = xvel; |
| 1345 | plr[pnum]._pyvel = yvel; |
| 1346 | plr[pnum]._pVar6 = xoff * 256; |
| 1347 | plr[pnum]._pVar7 = yoff * 256; |
| 1348 | plr[pnum]._pVar3 = EndDir; |
| 1349 | |
| 1350 | if (!(plr[pnum]._pGFXLoad & PFILE_WALK)) { |
| 1351 | LoadPlrGFX(pnum, PFILE_WALK); |
| 1352 | } |
| 1353 | NewPlrAnim(pnum, plr[pnum]._pWAnim[EndDir], plr[pnum]._pWFrames, 0, plr[pnum]._pWWidth); |
| 1354 | |
| 1355 | plr[pnum]._pdir = EndDir; |
| 1356 | plr[pnum]._pVar8 = 0; |
| 1357 |
no test coverage detected