MCPcopy Create free account
hub / github.com/diasurgical/devilution / StartWalk2

Function StartWalk2

Source/player.cpp:1300–1379  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1298
1299#if defined(__clang__) || defined(__GNUC__)
1300__attribute__((no_sanitize("shift-base")))
1301#endif
1302void 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

Callers 1

CheckNewPathFunction · 0.85

Calls 9

app_fatalFunction · 0.85
SyncPlrKillFunction · 0.85
SetPlayerOldFunction · 0.85
PlrDirOKFunction · 0.85
ChangeLightXYFunction · 0.85
PM_ChangeLightOffFunction · 0.85
LoadPlrGFXFunction · 0.85
NewPlrAnimFunction · 0.85
CheckEFlagFunction · 0.85

Tested by

no test coverage detected