| 1227 | } |
| 1228 | |
| 1229 | void 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) { |
no test coverage detected