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

Function StartWalk

Source/player.cpp:1229–1297  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1227}
1228
1229void StartWalk(int pnum, int xvel, int yvel, int xadd, int yadd, int EndDir, int sdir)
1230{
1231 int px, py;
1232
1233 if ((DWORD)pnum >= MAX_PLRS) {
1234 app_fatal("StartWalk: illegal player %d", pnum);
1235 }
1236
1237 if (plr[pnum]._pInvincible && !plr[pnum]._pHitPoints && pnum == myplr) {
1238 SyncPlrKill(pnum, -1);
1239 return;
1240 }
1241
1242 SetPlayerOld(pnum);
1243
1244 px = xadd + plr[pnum].WorldX;
1245 py = yadd + plr[pnum].WorldY;
1246
1247 if (!PlrDirOK(pnum, EndDir)) {
1248 return;
1249 }
1250
1251 plr[pnum]._px = px;
1252 plr[pnum]._py = py;
1253
1254 if (pnum == myplr) {
1255 ScrollInfo._sdx = plr[pnum].WorldX - ViewX;
1256 ScrollInfo._sdy = plr[pnum].WorldY - ViewY;
1257 }
1258
1259 dPlayer[px][py] = -(pnum + 1);
1260 plr[pnum]._pmode = PM_WALK;
1261 plr[pnum]._pxvel = xvel;
1262 plr[pnum]._pyvel = yvel;
1263 plr[pnum]._pxoff = 0;
1264 plr[pnum]._pyoff = 0;
1265 plr[pnum]._pVar1 = xadd;
1266 plr[pnum]._pVar2 = yadd;
1267 plr[pnum]._pVar3 = EndDir;
1268
1269 if (!(plr[pnum]._pGFXLoad & PFILE_WALK)) {
1270 LoadPlrGFX(pnum, PFILE_WALK);
1271 }
1272
1273 NewPlrAnim(pnum, plr[pnum]._pWAnim[EndDir], plr[pnum]._pWFrames, 0, plr[pnum]._pWWidth);
1274
1275 plr[pnum]._pdir = EndDir;
1276 plr[pnum]._pVar6 = 0;
1277 plr[pnum]._pVar7 = 0;
1278 plr[pnum]._pVar8 = 0;
1279
1280 CheckEFlag(pnum, FALSE);
1281
1282 if (pnum != myplr) {
1283 return;
1284 }
1285
1286 if (zoomflag) {

Callers 1

CheckNewPathFunction · 0.85

Calls 7

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

Tested by

no test coverage detected