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

Function StartWalk3

Source/player.cpp:1382–1462  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1380
1381#if defined(__clang__) || defined(__GNUC__)
1382__attribute__((no_sanitize("shift-base")))
1383#endif
1384void StartWalk3(int pnum, int xvel, int yvel, int xoff, int yoff, int xadd, int yadd, int mapx, int mapy, int EndDir, int sdir)
1385{
1386 int px, py, x, y;
1387
1388 if ((DWORD)pnum >= MAX_PLRS) {
1389 app_fatal("StartWalk3: illegal player %d", pnum);
1390 }
1391
1392 if (plr[pnum]._pInvincible && !plr[pnum]._pHitPoints && pnum == myplr) {
1393 SyncPlrKill(pnum, -1);
1394 return;
1395 }
1396
1397 SetPlayerOld(pnum);
1398 px = xadd + plr[pnum].WorldX;
1399 py = yadd + plr[pnum].WorldY;
1400 x = mapx + plr[pnum].WorldX;
1401 y = mapy + plr[pnum].WorldY;
1402
1403 if (!PlrDirOK(pnum, EndDir)) {
1404 return;
1405 }
1406
1407 plr[pnum]._px = px;
1408 plr[pnum]._py = py;
1409
1410 if (pnum == myplr) {
1411 ScrollInfo._sdx = plr[pnum].WorldX - ViewX;
1412 ScrollInfo._sdy = plr[pnum].WorldY - ViewY;
1413 }
1414
1415 dPlayer[plr[pnum].WorldX][plr[pnum].WorldY] = -1 - pnum;
1416 dPlayer[px][py] = -1 - pnum;
1417 plr[pnum]._pVar4 = x;
1418 plr[pnum]._pVar5 = y;
1419 dFlags[x][y] |= BFLAG_PLAYERLR;
1420 plr[pnum]._pxoff = xoff;
1421 plr[pnum]._pyoff = yoff;
1422
1423 if (leveltype) {
1424 ChangeLightXY(plr[pnum]._plid, x, y);
1425 PM_ChangeLightOff(pnum);
1426 }
1427
1428 plr[pnum]._pmode = PM_WALK3;
1429 plr[pnum]._pxvel = xvel;
1430 plr[pnum]._pyvel = yvel;
1431 plr[pnum]._pVar1 = px;
1432 plr[pnum]._pVar2 = py;
1433 plr[pnum]._pVar6 = xoff * 256;
1434 plr[pnum]._pVar7 = yoff * 256;
1435 plr[pnum]._pVar3 = EndDir;
1436
1437 if (!(plr[pnum]._pGFXLoad & PFILE_WALK)) {
1438 LoadPlrGFX(pnum, PFILE_WALK);
1439 }

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