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

Function On_PLAYER_JOINLEVEL

Source/msg.cpp:2336–2377  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2334}
2335
2336DWORD On_PLAYER_JOINLEVEL(TCmd *pCmd, int pnum)
2337{
2338 TCmdLocParam1 *p = (TCmdLocParam1 *)pCmd;
2339
2340 if (gbBufferMsgs == 1)
2341 msg_send_packet(pnum, p, sizeof(*p));
2342 else {
2343 plr[pnum]._pLvlChanging = FALSE;
2344 if (plr[pnum]._pName[0] && !plr[pnum].plractive) {
2345 plr[pnum].plractive = TRUE;
2346 gbActivePlayers++;
2347 EventPlrMsg("Player '%s' (level %d) just joined the game", plr[pnum]._pName, plr[pnum]._pLevel);
2348 }
2349
2350 if (plr[pnum].plractive && myplr != pnum) {
2351 plr[pnum].WorldX = p->x;
2352 plr[pnum].WorldY = p->y;
2353 plr[pnum].plrlevel = p->wParam1;
2354 plr[pnum]._pGFXLoad = 0;
2355 if (currlevel == plr[pnum].plrlevel) {
2356 LoadPlrGFX(pnum, PFILE_STAND);
2357 SyncInitPlr(pnum);
2358 if ((plr[pnum]._pHitPoints >> 6) > 0)
2359 StartStand(pnum, 0);
2360 else {
2361 plr[pnum]._pgfxnum = 0;
2362 LoadPlrGFX(pnum, PFILE_DEATH);
2363 plr[pnum]._pmode = PM_DEATH;
2364 NewPlrAnim(pnum, plr[pnum]._pDAnim[0], plr[pnum]._pDFrames, 1, plr[pnum]._pDWidth);
2365 plr[pnum]._pAnimFrame = plr[pnum]._pAnimLen - 1;
2366 plr[pnum]._pVar8 = plr[pnum]._pAnimLen << 1;
2367 dFlags[plr[pnum].WorldX][plr[pnum].WorldY] |= BFLAG_DEAD_PLAYER;
2368 }
2369
2370 plr[pnum]._pvid = AddVision(plr[pnum].WorldX, plr[pnum].WorldY, plr[pnum]._pLightRad, pnum == myplr);
2371 plr[pnum]._plid = -1;
2372 }
2373 }
2374 }
2375
2376 return sizeof(*p);
2377}
2378
2379DWORD On_ACTIVATEPORTAL(TCmd *pCmd, int pnum)
2380{

Callers 1

ParseCmdFunction · 0.85

Calls 7

msg_send_packetFunction · 0.85
EventPlrMsgFunction · 0.85
LoadPlrGFXFunction · 0.85
SyncInitPlrFunction · 0.85
StartStandFunction · 0.85
NewPlrAnimFunction · 0.85
AddVisionFunction · 0.85

Tested by

no test coverage detected