diff --git a/Source/player.cpp b/Source/player.cpp index 8eec16d41..2cd15fc6a 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -1733,59 +1733,49 @@ void __fastcall StartPlrBlock(int pnum, int dir) void __fastcall StartSpell(int pnum, int d, int cx, int cy) { - int v4; // edi - int v5; // esi - unsigned char *v6; // edx - int v7; // ST08_4 - int v8; // edx - int a2; // [esp+Ch] [ebp-4h] - - v4 = pnum; - a2 = d; if ( (unsigned int)pnum >= MAX_PLRS ) TermMsg("StartSpell: illegal player %d", pnum); - v5 = v4; - if ( plr[v4]._pInvincible && !plr[v5]._pHitPoints && v4 == myplr ) - { - SyncPlrKill(v4, -1); + + if ( plr[pnum]._pInvincible && !plr[pnum]._pHitPoints && pnum == myplr ) { + SyncPlrKill(pnum, -1); return; } - if ( leveltype ) - { - switch ( spelldata[plr[v5]._pSpell].sType ) + + if ( leveltype != DTYPE_TOWN ) { + switch ( spelldata[plr[pnum]._pSpell].sType ) { case STYPE_FIRE: if ( !(plr[pnum]._pGFXLoad & PFILE_FIRE) ) { LoadPlrGFX(pnum, PFILE_FIRE); } - v6 = plr[0]._pFAnim[a2 + 5430 * v4]; - goto LABEL_20; + NewPlrAnim(pnum, plr[pnum]._pFAnim[d], plr[pnum]._pSFrames, 0, plr[pnum]._pSWidth); + break; case STYPE_LIGHTNING: if ( !(plr[pnum]._pGFXLoad & PFILE_LIGHTNING) ) { LoadPlrGFX(pnum, PFILE_LIGHTNING); } - v6 = plr[0]._pLAnim[a2 + 5430 * v4]; - goto LABEL_20; + NewPlrAnim(pnum, plr[pnum]._pLAnim[d], plr[pnum]._pSFrames, 0, plr[pnum]._pSWidth); + break; case STYPE_MAGIC: if ( !(plr[pnum]._pGFXLoad & PFILE_MAGIC) ) { LoadPlrGFX(pnum, PFILE_MAGIC); } - v6 = plr[0]._pTAnim[a2 + 5430 * v4]; -LABEL_20: - v7 = plr[v5]._pSWidth; - NewPlrAnim(v4, v6, plr[v5]._pSFrames, 0, v7); + NewPlrAnim(pnum, plr[pnum]._pTAnim[d], plr[pnum]._pSFrames, 0, plr[pnum]._pSWidth); break; } } - PlaySfxLoc((unsigned char)spelldata[plr[v5]._pSpell].sSFX, plr[v5].WorldX, plr[v5].WorldY); - plr[v5]._pmode = PM_SPELL; - FixPlayerLocation(v4, a2); - SetPlayerOld(v4); - v8 = plr[v5]._pSpell; - plr[v5]._pVar1 = cx; - plr[v5]._pVar2 = cy; - plr[v5]._pVar4 = GetSpellLevel(v4, v8); - plr[v5]._pVar8 = 1; + + PlaySfxLoc(spelldata[plr[pnum]._pSpell].sSFX, plr[pnum].WorldX, plr[pnum].WorldY); + + plr[pnum]._pmode = PM_SPELL; + + FixPlayerLocation(pnum, d); + SetPlayerOld(pnum); + + plr[pnum]._pVar1 = cx; + plr[pnum]._pVar2 = cy; + plr[pnum]._pVar4 = GetSpellLevel(pnum, plr[pnum]._pSpell); + plr[pnum]._pVar8 = 1; } // 5BB1ED: using guessed type char leveltype;