diff --git a/Source/dead.cpp b/Source/dead.cpp index 4d71be35f..a1229b708 100644 --- a/Source/dead.cpp +++ b/Source/dead.cpp @@ -13,7 +13,7 @@ void __cdecl InitDead() int i, j; int mtypes[MAXMONSTERS]; int idx; - + for ( i = 0; i < MAXMONSTERS; i++ ) mtypes[i] = 0; @@ -21,8 +21,8 @@ void __cdecl InitDead() for (i=0; i < nummtypes; i++) { if (!mtypes[Monsters[i].mtype]) { for ( j=0; j < 8; j++) - dead[idx]._deadData[j] = Monsters[i].Anims[4].Frames[j]; - dead[idx]._deadFrame = Monsters[i].Anims[4].Rate; + dead[idx]._deadData[j] = Monsters[i].Anims[MA_DEATH].Frames[j]; + dead[idx]._deadFrame = Monsters[i].Anims[MA_DEATH].Rate; dead[idx]._deadWidth = Monsters[i].flags_1; dead[idx]._deadWidth2 = Monsters[i].flags_2; dead[idx]._deadtrans = 0; @@ -53,8 +53,8 @@ void __cdecl InitDead() int ii = monstactive[i]; if ( monster[ii]._uniqtype ) { for (j=0; j < 8; j++) - dead[idx]._deadData[j] = monster[ii].MType->Anims[4].Frames[j]; - dead[idx]._deadFrame = monster[ii].MType->Anims[4].Rate; + dead[idx]._deadData[j] = monster[ii].MType->Anims[MA_DEATH].Frames[j]; + dead[idx]._deadFrame = monster[ii].MType->Anims[MA_DEATH].Rate; dead[idx]._deadWidth = monster[ii].MType->flags_1; dead[idx]._deadWidth2 = monster[ii].MType->flags_2; dead[idx]._deadtrans = monster[ii]._uniqtrans + 4; diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 270d5142d..bff5ce9ab 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -3373,12 +3373,12 @@ void __fastcall AddRhino(int mi, int sx, int sy, int dx, int dy, int midir, int v11 = v10->mtype; if ( v10->mtype < MT_HORNED || v11 > MT_OBLORD ) { - if ( v11 < MT_NSNAKE || (v12 = &v10->Anims[2], v11 > MT_GSNAKE) ) - v12 = &v10->Anims[1]; + if ( v11 < MT_NSNAKE || (v12 = &v10->Anims[MA_ATTACK], v11 > MT_GSNAKE) ) + v12 = &v10->Anims[MA_WALK]; } else { - v12 = &v10->Anims[5]; + v12 = &v10->Anims[MA_SPECIAL]; } GetMissileVel(i, sx, sy, dx, dy, 18); v13 = i; @@ -3419,7 +3419,7 @@ void __fastcall miss_null_32(int mi, int sx, int sy, int dx, int dy, int midir, v9 = id; v10 = mi; - v11 = &monster[id].MType->Anims[1]; + v11 = &monster[id].MType->Anims[MA_WALK]; GetMissileVel(mi, sx, sy, dx, dy, 16); v12 = v10; missile[v12]._mimfnum = midir; @@ -6439,7 +6439,7 @@ void __fastcall mi_null_32(int i) missile[v2]._miyvel = -missile[v2]._miyvel; v14 = opposite[v13]; missile[v2]._mimfnum = v14; - v15 = monster[v4].MType->Anims[1].Frames[v14]; + v15 = monster[v4].MType->Anims[MA_WALK].Frames[v14]; ++missile[v2]._miVar2; missile[v2]._miAnimData = v15; if ( v10 > 0 ) @@ -7399,13 +7399,13 @@ void __cdecl missiles_process_charge() if ( v5->mtype < MT_HORNED || v6 > MT_OBLORD ) { if ( v6 < MT_NSNAKE || v6 > MT_GSNAKE ) - v7 = &v5->Anims[1]; + v7 = &v5->Anims[MA_WALK]; else - v7 = &v5->Anims[2]; + v7 = &v5->Anims[MA_ATTACK]; } else { - v7 = &v5->Anims[5]; + v7 = &v5->Anims[MA_SPECIAL]; } missile[v2]._miAnimData = v7->Frames[v3]; } diff --git a/Source/monster.cpp b/Source/monster.cpp index 4d9c1eb72..63cd7b0e3 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -702,11 +702,11 @@ void __fastcall InitMonster(int i, int rd, int mtype, int x, int y) monster[i].mName = monst->MData->mName; monster[i].MType = monst; monster[i].MData = monst->MData; - monster[i]._mAnimData = monst->Anims[0].Frames[rd]; - monster[i]._mAnimDelay = monst->Anims[0].Delay; - monster[i]._mAnimCnt = random(88, monst->Anims[0].Delay - 1); - monster[i]._mAnimLen = monst->Anims[0].Rate; - monster[i]._mAnimFrame = random(88, monst->Anims[0].Rate - 1) + 1; + monster[i]._mAnimData = monst->Anims[MA_STAND].Frames[rd]; + monster[i]._mAnimDelay = monst->Anims[MA_STAND].Delay; + monster[i]._mAnimCnt = random(88, monst->Anims[MA_STAND].Delay - 1); + monster[i]._mAnimLen = monst->Anims[MA_STAND].Rate; + monster[i]._mAnimFrame = random(88, monst->Anims[MA_STAND].Rate - 1) + 1; if ( monst->mtype == MT_DIABLO ) { @@ -758,7 +758,7 @@ void __fastcall InitMonster(int i, int rd, int mtype, int x, int y) if ( monster[i]._mAi == AI_GARG ) { - monster[i]._mAnimData = monst->Anims[5].Frames[rd]; + monster[i]._mAnimData = monst->Anims[MA_SPECIAL].Frames[rd]; monster[i]._mAnimFrame = 1; monster[i]._mFlags |= 4u; monster[i]._mmode = MM_SATTACK; @@ -800,7 +800,7 @@ void __cdecl ClrAllMonsters() { MonsterStruct *Monst; - for ( int i = 0; i < 200; i++ ) + for ( int i = 0; i < MAXMONSTERS; i++ ) { Monst = &monster[i]; ClearMVars(i); @@ -1107,7 +1107,7 @@ void __fastcall PlaceUniqueMonst(int uniqindex, int miniontype, int unpackfilesi if ( Monst->_mAi != AI_GARG ) { - Monst->_mAnimData = Monst->MType->Anims[0].Frames[Monst->_mdir]; + Monst->_mAnimData = Monst->MType->Anims[MA_STAND].Frames[Monst->_mdir]; Monst->_mAnimFrame = random(88, Monst->_mAnimLen - 1) + 1; Monst->_mFlags &= 0xFFFFFFFB; Monst->_mmode = MM_STAND; @@ -1271,7 +1271,7 @@ void __fastcall PlaceGroup(int mtype, int num, int leaderf, int leader) if ( monster[nummonsters]._mAi != AI_GARG ) { - monster[nummonsters]._mAnimData = monster[nummonsters].MType->Anims[0].Frames[monster[nummonsters]._mdir]; + monster[nummonsters]._mAnimData = monster[nummonsters].MType->Anims[MA_STAND].Frames[monster[nummonsters]._mdir]; monster[nummonsters]._mAnimFrame = random(88, monster[nummonsters]._mAnimLen - 1) + 1; monster[nummonsters]._mFlags &= 0xFFFFFFFB; monster[nummonsters]._mmode = MM_STAND; @@ -1621,69 +1621,52 @@ void __fastcall SetMapMonsters(unsigned char *pMap, int startx, int starty) void __fastcall DeleteMonster(int i) { - int *v1; // ecx - int *v2; // eax - int v3; // edx - - --nummonsters; - v1 = &monstactive[i]; - v2 = &monstactive[nummonsters]; - v3 = *v2; - *v2 = *v1; - *v1 = v3; + nummonsters--; + int temp = monstactive[nummonsters]; + monstactive[nummonsters] = monstactive[i]; + monstactive[i] = temp; } int __fastcall AddMonster(int x, int y, int dir, int mtype, int InMap) { - int i; // esi + if ( nummonsters < MAXMONSTERS ) { + int i = monstactive[nummonsters++]; + if ( InMap ) + dMonster[x][y] = i + 1; + InitMonster(i, dir, mtype, x, y); + return i; + } - if ( nummonsters >= MAXMONSTERS ) - return -1; - i = monstactive[nummonsters++]; - if ( InMap ) - dMonster[x][y] = i + 1; - InitMonster(i, dir, mtype, x, y); - return i; + return -1; } void __fastcall NewMonsterAnim(int i, AnimStruct *anim, int md) { - MonsterStruct *v3; // eax - int v4; // esi - int v5; // edx - - v3 = &monster[i]; - v3->_mAnimData = anim->Frames[md]; - v4 = anim->Rate; - v3->_mAnimCnt = 0; - v3->_mAnimLen = v4; - v3->_mAnimFrame = 1; - v5 = anim->Delay; - v3->_mFlags &= 0xFFFFFFF9; - v3->_mAnimDelay = v5; - v3->_mdir = md; + monster[i]._mAnimData = anim->Frames[md]; + monster[i]._mAnimCnt = 0; + monster[i]._mAnimLen = anim->Rate; + monster[i]._mAnimFrame = 1; + monster[i]._mFlags &= 0xFFFFFFF9; + monster[i]._mAnimDelay = anim->Delay; + monster[i]._mdir = md; } -bool __fastcall M_Ranged(int i) +BOOL __fastcall M_Ranged(int i) { - char v1; // cl - - v1 = monster[i]._mAi; - return v1 == AI_SKELBOW || v1 == AI_GOATBOW || v1 == AI_SUCC || v1 == AI_LAZHELP; + char ai = monster[i]._mAi; + return ai == AI_SKELBOW || ai == AI_GOATBOW || ai == AI_SUCC || ai == AI_LAZHELP; } -bool __fastcall M_Talker(int i) +BOOL __fastcall M_Talker(int i) { - char v1; // cl - - v1 = monster[i]._mAi; - return v1 == AI_LAZURUS - || v1 == AI_WARLORD - || v1 == AI_GARBUD - || v1 == AI_ZHAR - || v1 == AI_SNOTSPIL - || v1 == AI_LACHDAN - || v1 == AI_LAZHELP; + char ai = monster[i]._mAi; + return ai == AI_LAZURUS + || ai == AI_WARLORD + || ai == AI_GARBUD + || ai == AI_ZHAR + || ai == AI_SNOTSPIL + || ai == AI_LACHDAN + || ai == AI_LAZHELP; } void __fastcall M_Enemy(int i) @@ -1832,11 +1815,7 @@ void __fastcall M_Enemy(int i) int __fastcall M_GetDir(int i) { - return GetDirection( - monster[i]._mx, - monster[i]._my, - (unsigned char)monster[i]._menemyx, - (unsigned char)monster[i]._menemyy); + return GetDirection(monster[i]._mx, monster[i]._my, monster[i]._menemyx, monster[i]._menemyy); } void __fastcall M_CheckEFlag(int i) @@ -1877,9 +1856,9 @@ void __fastcall M_StartStand(int i, int md) ClearMVars(i); v4 = v3; v5 = monster[v3].MType; - v6 = &v5->Anims[1]; + v6 = &v5->Anims[MA_WALK]; if ( v5->mtype != MT_GOLEM ) - v6 = v5->Anims; + v6 = &v5->Anims[MA_STAND]; NewMonsterAnim(v3, v6, v2); monster[v4]._mdir = v2; monster[v4]._mVar1 = monster[v4]._mmode; @@ -1899,74 +1878,52 @@ void __fastcall M_StartStand(int i, int md) void __fastcall M_StartDelay(int i, int len) { - int v2; // eax + if ( len <= 0 ) { + return; + } - if ( len > 0 ) - { - v2 = i; - if ( monster[i]._mAi != AI_LAZURUS ) - { - monster[v2]._mVar2 = len; - monster[v2]._mmode = MM_DELAY; - } + if ( monster[i]._mAi != AI_LAZURUS ) { + monster[i]._mVar2 = len; + monster[i]._mmode = MM_DELAY; } } void __fastcall M_StartSpStand(int i, int md) { - int v2; // ebx - int v3; // esi - int v4; // edi - int v5; // eax - int v6; // ecx - - v2 = i; - v3 = i; - v4 = md; - NewMonsterAnim(i, &monster[i].MType->Anims[5], md); - v5 = monster[v3]._mx; - v6 = monster[v3]._my; - monster[v3]._mxoff = 0; - monster[v3]._myoff = 0; - monster[v3]._mdir = v4; - monster[v3]._mmode = MM_SPSTAND; - monster[v3]._mfutx = v5; - monster[v3]._mfuty = v6; - monster[v3]._moldx = v5; - monster[v3]._moldy = v6; - M_CheckEFlag(v2); + NewMonsterAnim(i, &monster[i].MType->Anims[MA_SPECIAL], md); + monster[i]._mmode = MM_SPSTAND; + monster[i]._mxoff = 0; + monster[i]._myoff = 0; + monster[i]._mfutx = monster[i]._mx; + monster[i]._mfuty = monster[i]._my; + monster[i]._moldx = monster[i]._mx; + monster[i]._moldy = monster[i]._my; + monster[i]._mdir = md; + M_CheckEFlag(i); } void __fastcall M_StartWalk(int i, int xvel, int yvel, int xadd, int yadd, int EndDir) { - int v6; // ST18_4 - int v7; // esi - int v8; // eax - int v9; // ecx - CMonster *v10; // edx - - v6 = i; - v7 = i; - v8 = monster[i]._mx; - monster[v7]._moldx = v8; - v9 = monster[i]._my; - monster[v7]._mfuty = v9 + yadd; - monster[v7]._mxvel = xvel; - monster[v7]._myvel = yvel; - monster[v7]._mVar1 = xadd; - monster[v7]._mVar2 = yadd; - dMonster[0][v9 + yadd + 112 * (v8 + xadd)] = -1 - v6; - v10 = monster[v7].MType; - monster[v7]._moldy = v9; - monster[v7]._mmode = MM_WALK; - monster[v7]._mfutx = v8 + xadd; - monster[v7]._mVar3 = EndDir; - monster[v7]._mdir = EndDir; - NewMonsterAnim(v6, &v10->Anims[1], EndDir); - monster[v7]._mVar6 = 0; - monster[v7]._mVar7 = 0; - monster[v7]._mVar8 = 0; - M_CheckEFlag(v6); + int fx = xadd + monster[i]._mx; + int fy = yadd + monster[i]._my; + + dMonster[fx][fy] = -(i + 1); + monster[i]._mmode = MM_WALK; + monster[i]._moldx = monster[i]._mx; + monster[i]._moldy = monster[i]._my; + monster[i]._mfutx = fx; + monster[i]._mfuty = fy; + monster[i]._mxvel = xvel; + monster[i]._myvel = yvel; + monster[i]._mVar1 = xadd; + monster[i]._mVar2 = yadd; + monster[i]._mVar3 = EndDir; + monster[i]._mdir = EndDir; + NewMonsterAnim(i, &monster[i].MType->Anims[MA_WALK], EndDir); + monster[i]._mVar6 = 0; + monster[i]._mVar7 = 0; + monster[i]._mVar8 = 0; + M_CheckEFlag(i); } void __fastcall M_StartWalk2(int i, int xvel, int yvel, int xoff, int yoff, int xadd, int yadd, int EndDir) @@ -2011,7 +1968,7 @@ void __fastcall M_StartWalk2(int i, int xvel, int yvel, int xoff, int yoff, int monster[v8]._mmode = MM_WALK2; monster[v8]._mVar3 = EndDir; monster[v8]._mdir = EndDir; - NewMonsterAnim(ia, &v14->Anims[1], EndDir); + NewMonsterAnim(ia, &v14->Anims[MA_WALK], EndDir); monster[v8]._mVar8 = 0; monster[v8]._mVar6 = 16 * xoff; monster[v8]._mVar7 = 16 * yoff; @@ -2063,7 +2020,7 @@ void __fastcall M_StartWalk3(int i, int xvel, int yvel, int xoff, int yoff, int monster[v10]._mmode = MM_WALK3; monster[v10]._mVar3 = EndDir; monster[v10]._mdir = EndDir; - NewMonsterAnim(ia, &v16->Anims[1], EndDir); + NewMonsterAnim(ia, &v16->Anims[MA_WALK], EndDir); monster[v10]._mVar8 = 0; monster[v10]._mVar6 = 16 * xoff; monster[v10]._mVar7 = 16 * yoff; @@ -2081,7 +2038,7 @@ void __fastcall M_StartAttack(int i) v1 = i; v2 = M_GetDir(i); v3 = v1; - NewMonsterAnim(v1, &monster[v1].MType->Anims[2], v2); + NewMonsterAnim(v1, &monster[v1].MType->Anims[MA_ATTACK], v2); v4 = monster[v1]._my; v5 = monster[v1]._mx; monster[v3]._mxoff = 0; @@ -2108,7 +2065,7 @@ void __fastcall M_StartRAttack(int i, int missile_type, int dam) v4 = i; v5 = M_GetDir(i); v6 = v4; - NewMonsterAnim(v4, &monster[v4].MType->Anims[2], v5); + NewMonsterAnim(v4, &monster[v4].MType->Anims[MA_ATTACK], v5); v7 = monster[v4]._my; monster[v6]._mxoff = 0; monster[v6]._myoff = 0; @@ -2137,7 +2094,7 @@ void __fastcall M_StartRSpAttack(int i, int missile_type, int dam) v4 = i; v5 = M_GetDir(i); v6 = v4; - NewMonsterAnim(v4, &monster[v4].MType->Anims[5], v5); + NewMonsterAnim(v4, &monster[v4].MType->Anims[MA_SPECIAL], v5); monster[v6]._mmode = MM_RSPATTACK; monster[v6]._mVar2 = 0; monster[v6]._mVar3 = dam; @@ -2165,7 +2122,7 @@ void __fastcall M_StartSpAttack(int i) v1 = i; v2 = M_GetDir(i); v3 = v1; - NewMonsterAnim(v1, &monster[v1].MType->Anims[5], v2); + NewMonsterAnim(v1, &monster[v1].MType->Anims[MA_SPECIAL], v2); v4 = monster[v1]._my; v5 = monster[v1]._mx; monster[v3]._mxoff = 0; @@ -2188,7 +2145,7 @@ void __fastcall M_StartEat(int i) v1 = i; v2 = i; - NewMonsterAnim(i, &monster[i].MType->Anims[5], monster[i]._mdir); + NewMonsterAnim(i, &monster[i].MType->Anims[MA_SPECIAL], monster[i]._mdir); v3 = monster[v2]._my; v4 = monster[v2]._mx; monster[v2]._mxoff = 0; @@ -2269,7 +2226,7 @@ void __fastcall M_GetKnockback(int i) { M_ClearSquares(v1); v5 = monster[v2]._mdir; - v6 = &monster[v2].MType->Anims[3]; + v6 = &monster[v2].MType->Anims[MA_GOTHIT]; v7 = offset_y[v3]; monster[v2]._moldx += offset_x[v3]; monster[v2]._moldy += v7; @@ -2334,7 +2291,7 @@ void __fastcall M_StartHit(int i, int pnum, int dam) } if ( monster[v5]._mmode != MM_STONE ) { - NewMonsterAnim(v4, &monster[v5].MType->Anims[3], monster[v5]._mdir); + NewMonsterAnim(v4, &monster[v5].MType->Anims[MA_GOTHIT], monster[v5]._mdir); v9 = monster[v5]._moldy; v10 = monster[v5]._moldx; monster[v5]._mxoff = 0; @@ -2386,7 +2343,7 @@ void __fastcall M_DiabloDeath(int i, BOOL sendmsg) if ( v5 != v15 && monster[v3]._msquelch ) { v6 = v5; - NewMonsterAnim(monstactive[v4], &monster[v5].MType->Anims[4], monster[v5]._mdir); + NewMonsterAnim(monstactive[v4], &monster[v5].MType->Anims[MA_DEATH], monster[v5]._mdir); v7 = monster[v5]._moldy; monster[v6]._mxoff = 0; monster[v6]._myoff = 0; @@ -2470,7 +2427,7 @@ void __fastcall M2MStartHit(int mid, int i, int dam) v8 = monster[v5].MType; if ( v8->mtype != MT_GOLEM ) { - NewMonsterAnim(v3, &v8->Anims[3], monster[v5]._mdir); + NewMonsterAnim(v3, &v8->Anims[MA_GOTHIT], monster[v5]._mdir); monster[v5]._mmode = MM_GOTHIT; } v9 = monster[v5]._moldy; @@ -2535,7 +2492,7 @@ void __fastcall MonstStartKill(int i, int pnum, BOOL sendmsg) v9 = monster[v5]._mdir; else v9 = M_GetDir(v3); - v10 = &monster[v5].MType->Anims[4]; + v10 = &monster[v5].MType->Anims[MA_DEATH]; monster[v5]._mdir = v9; NewMonsterAnim(v3, v10, v9); v11 = monster[v5]._moldy; @@ -2603,7 +2560,7 @@ void __fastcall M2MStartKill(int i, int mid) if ( v7->mtype == MT_GOLEM ) v8 = 0; monster[v4]._mdir = v8; - NewMonsterAnim(v3, &v7->Anims[4], v8); + NewMonsterAnim(v3, &v7->Anims[MA_DEATH], v8); v9 = monster[v4]._moldy; v10 = monster[v4]._moldx; monster[v4]._my = v9; @@ -2696,7 +2653,7 @@ void __fastcall M_StartFadein(int i, int md, BOOL backwards) v5 = v3; if ( !monster[v5].MType ) TermMsg("M_StartFadein: Monster %d \"%s\" MType NULL", arglist, monster[v5].mName); - NewMonsterAnim(arglist, &monster[v5].MType->Anims[5], v4); + NewMonsterAnim(arglist, &monster[v5].MType->Anims[MA_SPECIAL], v4); v6 = monster[v5]._my; v7 = monster[v5]._mx; monster[v5]._mfuty = v6; @@ -2735,7 +2692,7 @@ void __fastcall M_StartFadeout(int i, int md, BOOL backwards) v5 = &monster[v3].MType; if ( !*v5 ) TermMsg("M_StartFadeout: Monster %d \"%s\" MType NULL", v3, monster[v4].mName); - NewMonsterAnim(v3, &(*v5)->Anims[5], mda); + NewMonsterAnim(v3, &(*v5)->Anims[MA_SPECIAL], mda); v6 = monster[v4]._my; v7 = monster[v4]._mx; monster[v4]._mfuty = v6; @@ -2770,9 +2727,9 @@ void __fastcall M_StartHeal(int i) if ( !monster[v1].MType ) TermMsg("M_StartHeal: Monster %d \"%s\" MType NULL", v1, monster[v2].mName); v3 = monster[v2].MType; - v4 = v3->Anims[5].Frames[monster[v2]._mdir]; + v4 = v3->Anims[MA_SPECIAL].Frames[monster[v2]._mdir]; monster[v2]._mAnimData = v4; - v5 = v3->Anims[5].Rate; + v5 = v3->Anims[MA_SPECIAL].Rate; monster[v2]._mFlags |= 2u; monster[v2]._mAnimFrame = v5; monster[v2]._mmode = MM_HEAL; @@ -2839,9 +2796,9 @@ int __fastcall M_DoStand(int i) v3 = monster[v2].MType; v4 = monster[v2]._mdir; if ( v3->mtype == MT_GOLEM ) - v5 = v3->Anims[1].Frames[v4]; + v5 = v3->Anims[MA_WALK].Frames[v4]; else - v5 = v3->Anims[0].Frames[v4]; + v5 = v3->Anims[MA_STAND].Frames[v4]; monster[v2]._mAnimData = v5; if ( monster[v2]._mAnimFrame == monster[v2]._mAnimLen ) M_Enemy(v1); @@ -2873,7 +2830,7 @@ int __fastcall M_DoWalk(int i) if ( !monster[v1].MType ) TermMsg("M_DoWalk: Monster %d \"%s\" MType NULL", v1, monster[v2].mName); v4 = monster[v2]._mVar8; - if ( v4 == monster[v2].MType->Anims[1].Rate ) + if ( v4 == monster[v2].MType->Anims[MA_WALK].Rate ) { v5 = monster[v2]._my; v6 = monster[v2]._mx; @@ -2925,7 +2882,7 @@ int __fastcall M_DoWalk2(int i) if ( !monster[v1].MType ) TermMsg("M_DoWalk2: Monster %d \"%s\" MType NULL", v1, monster[v2].mName); v3 = monster[v2]._mVar8; - if ( v3 == monster[v2].MType->Anims[1].Rate ) + if ( v3 == monster[v2].MType->Anims[MA_WALK].Rate ) { v4 = monster[v2]._uniqtype == 0; dMonster[0][monster[v2]._mVar2 + 112 * monster[v2]._mVar1] = 0; @@ -2979,7 +2936,7 @@ int __fastcall M_DoWalk3(int i) if ( !monster[v1].MType ) TermMsg("M_DoWalk3: Monster %d \"%s\" MType NULL", v1, monster[v2].mName); v3 = monster[v2]._mVar8; - if ( v3 == monster[v2].MType->Anims[1].Rate ) + if ( v3 == monster[v2].MType->Anims[MA_WALK].Rate ) { v4 = monster[v2]._mVar2; v5 = monster[v2]._my + 112 * monster[v2]._mx; @@ -3983,7 +3940,7 @@ int __fastcall M_DoDelay(int i) TermMsg("M_DoDelay: Monster %d \"%s\" MType NULL", v1, monster[v2].mName); v3 = M_GetDir(v1); v4 = monster[v2]._mAi == AI_LAZURUS; - monster[v2]._mAnimData = monster[v2].MType->Anims[0].Frames[v3]; + monster[v2]._mAnimData = monster[v2].MType->Anims[MA_STAND].Frames[v3]; if ( v4 ) { v5 = monster[v2]._mVar2; @@ -4042,7 +3999,7 @@ void __fastcall M_WalkDir(int i, int md) v3 = md; if ( (DWORD)i >= MAXMONSTERS ) TermMsg("M_WalkDir: Invalid monster %d", i); - v4 = monster[v2].MType->Anims[1].Rate - 1; + v4 = monster[v2].MType->Anims[MA_WALK].Rate - 1; switch ( v3 ) { case DIR_S: @@ -4499,7 +4456,7 @@ void __fastcall MAI_Zombie(int i) M_StartAttack(arglist); } if ( v3->_mmode == MM_STAND ) - v3->_mAnimData = v3->MType->Anims[0].Frames[v3->_mdir]; + v3->_mAnimData = v3->MType->Anims[MA_STAND].Frames[v3->_mdir]; } } } @@ -4571,7 +4528,7 @@ void __fastcall MAI_SkelSd(int i) } LABEL_16: if ( v2->_mmode == MM_STAND ) - v2->_mAnimData = v2->MType->Anims[0].Frames[v7]; + v2->_mAnimData = v2->MType->Anims[MA_STAND].Frames[v7]; } } @@ -4701,7 +4658,7 @@ void __fastcall MAI_Snake(int i) M_StartAttack(arglist); LABEL_49: if ( esi3->_mmode == MM_STAND ) - esi3->_mAnimData = esi3->MType->Anims[0].Frames[esi3->_mdir]; + esi3->_mAnimData = esi3->MType->Anims[MA_STAND].Frames[esi3->_mdir]; return; } v17 = 10 - (unsigned char)esi3->_mint + random(105, 10); @@ -4921,7 +4878,7 @@ void __fastcall MAI_Bat(int i) } } if ( esi3->_mmode == MM_STAND ) - esi3->_mAnimData = esi3->MType->Anims[0].Frames[midir]; + esi3->_mAnimData = esi3->MType->Anims[MA_STAND].Frames[midir]; } } } @@ -4992,7 +4949,7 @@ void __fastcall MAI_SkelBow(int i) } } if ( v2->_mmode == MM_STAND ) - v2->_mAnimData = v2->MType->Anims[0].Frames[v17]; + v2->_mAnimData = v2->MType->Anims[MA_STAND].Frames[v17]; } } @@ -5046,7 +5003,7 @@ void __fastcall MAI_Fat(int i) } } if ( v2->_mmode == MM_STAND ) - v2->_mAnimData = v2->MType->Anims[0].Frames[md]; + v2->_mAnimData = v2->MType->Anims[MA_STAND].Frames[md]; } } @@ -5142,7 +5099,7 @@ void __fastcall MAI_Sneak(int i) if ( v2->_mmode == MM_STAND ) { if ( abs(v17) >= 2 || abs(v4) >= 2 || v15 >= 4 * (unsigned char)v2->_mint + 10 ) - v2->_mAnimData = v2->MType->Anims[0].Frames[md]; + v2->_mAnimData = v2->MType->Anims[MA_STAND].Frames[md]; else M_StartAttack(arglist); } @@ -5412,7 +5369,7 @@ void __fastcall MAI_Cleaver(int i) else M_StartAttack(arglist); if ( v2->_mmode == MM_STAND ) - v2->_mAnimData = v2->MType->Anims[0].Frames[v7]; + v2->_mAnimData = v2->MType->Anims[MA_STAND].Frames[v7]; } } @@ -5536,7 +5493,7 @@ void __fastcall MAI_Round(int i, unsigned char special) } } if ( v3->_mmode == MM_STAND ) - v3->_mAnimData = v3->MType->Anims[0].Frames[md]; + v3->_mAnimData = v3->MType->Anims[MA_STAND].Frames[md]; } } @@ -5613,7 +5570,7 @@ void __fastcall MAI_Ranged(int i, int missile_type, unsigned char special) } else { - monster[v4]._mAnimData = monster[v4].MType->Anims[0].Frames[v20]; + monster[v4]._mAnimData = monster[v4].MType->Anims[MA_STAND].Frames[v20]; } } } @@ -6460,7 +6417,7 @@ void __fastcall MAI_SkelKing(int i) } } if ( v2->_mmode == MM_STAND ) - v2->_mAnimData = v2->MType->Anims[0].Frames[md]; + v2->_mAnimData = v2->MType->Anims[MA_STAND].Frames[md]; } } // 679660: using guessed type char gbMaxPlayers; @@ -6614,7 +6571,7 @@ void __fastcall MAI_Rhino(int i) } } if ( esi3->_mmode == MM_STAND ) - esi3->_mAnimData = esi3->MType->Anims[0].Frames[esi3->_mdir]; + esi3->_mAnimData = esi3->MType->Anims[MA_STAND].Frames[esi3->_mdir]; } } @@ -6839,7 +6796,7 @@ void __fastcall MAI_Garbud(int i) MAI_Round(arglist, 1u); monster[v2]._mdir = v8; if ( monster[v2]._mmode == MM_STAND ) - monster[v2]._mAnimData = monster[v2].MType->Anims[0].Frames[v8]; + monster[v2]._mAnimData = monster[v2].MType->Anims[MA_STAND].Frames[v8]; } } @@ -6897,7 +6854,7 @@ void __fastcall MAI_Zhar(int i) MAI_Counselor(arglist); monster[v2]._mdir = v11; if ( monster[v2]._mmode == MM_STAND ) - monster[v2]._mAnimData = monster[v2].MType->Anims[0].Frames[v11]; + monster[v2]._mAnimData = monster[v2].MType->Anims[MA_STAND].Frames[v11]; } } @@ -6956,7 +6913,7 @@ void __fastcall MAI_SnotSpil(int i) } monster[v2]._mdir = v5; if ( monster[v2]._mmode == MM_STAND ) - monster[v2]._mAnimData = monster[v2].MType->Anims[0].Frames[v5]; + monster[v2]._mAnimData = monster[v2].MType->Anims[MA_STAND].Frames[v5]; } } // 5CF330: using guessed type int setpc_h; @@ -7026,7 +6983,7 @@ void __fastcall MAI_Lazurus(int i) monster[v2]._mdir = v5; v8 = monster[v2]._mmode; if ( v8 == MM_STAND || v8 == MM_TALK ) - monster[v2]._mAnimData = monster[v2].MType->Anims[0].Frames[v5]; + monster[v2]._mAnimData = monster[v2].MType->Anims[MA_STAND].Frames[v5]; } } // 679660: using guessed type char gbMaxPlayers; @@ -7068,7 +7025,7 @@ void __fastcall MAI_Lazhelp(int i) MAI_Succ(ia); monster[v2]._mdir = v5; if ( monster[v2]._mmode == MM_STAND ) - monster[v2]._mAnimData = monster[v2].MType->Anims[0].Frames[v5]; + monster[v2]._mAnimData = monster[v2].MType->Anims[MA_STAND].Frames[v5]; } } // 679660: using guessed type char gbMaxPlayers; @@ -7111,7 +7068,7 @@ void __fastcall MAI_Lachdanan(int i) } monster[v2]._mdir = v6; if ( monster[v2]._mmode == MM_STAND ) - monster[v2]._mAnimData = monster[v2].MType->Anims[0].Frames[v6]; + monster[v2]._mAnimData = monster[v2].MType->Anims[MA_STAND].Frames[v6]; } } @@ -7153,7 +7110,7 @@ void __fastcall MAI_Warlord(int i) monster[v2]._mdir = v5; v7 = monster[v2]._mmode; if ( v7 == MM_STAND || v7 == MM_TALK ) - monster[v2]._mAnimData = monster[v2].MType->Anims[0].Frames[v5]; + monster[v2]._mAnimData = monster[v2].MType->Anims[MA_STAND].Frames[v5]; } } @@ -7883,22 +7840,22 @@ void __fastcall SyncMonsterAnim(int i) case MM_STAND: case MM_DELAY: case MM_TALK: - v10 = v5->Anims[0].Frames[v9]; + v10 = v5->Anims[MA_STAND].Frames[v9]; goto LABEL_13; case MM_WALK: case MM_WALK2: case MM_WALK3: - v10 = v5->Anims[1].Frames[v9]; + v10 = v5->Anims[MA_WALK].Frames[v9]; goto LABEL_13; case MM_ATTACK: case MM_RATTACK: - v10 = v5->Anims[2].Frames[v9]; + v10 = v5->Anims[MA_ATTACK].Frames[v9]; goto LABEL_13; case MM_GOTHIT: - v10 = v5->Anims[3].Frames[v9]; + v10 = v5->Anims[MA_GOTHIT].Frames[v9]; goto LABEL_13; case MM_DEATH: - v10 = v5->Anims[4].Frames[v9]; + v10 = v5->Anims[MA_DEATH].Frames[v9]; goto LABEL_13; case MM_SATTACK: case MM_FADEIN: @@ -7906,21 +7863,21 @@ void __fastcall SyncMonsterAnim(int i) case MM_SPSTAND: case MM_RSPATTACK: case MM_HEAL: - v10 = v5->Anims[5].Frames[v9]; + v10 = v5->Anims[MA_SPECIAL].Frames[v9]; LABEL_13: monster[v2]._mAnimData = v10; return; case MM_CHARGE: - v11 = v5->Anims[2].Frames[v9]; + v11 = v5->Anims[MA_ATTACK].Frames[v9]; monster[v2]._mAnimFrame = 1; monster[v2]._mAnimData = v11; - v12 = v5->Anims[2].Rate; + v12 = v5->Anims[MA_ATTACK].Rate; break; default: - v13 = v5->Anims[0].Frames[v9]; + v13 = v5->Anims[MA_STAND].Frames[v9]; monster[v2]._mAnimFrame = 1; monster[v2]._mAnimData = v13; - v12 = v5->Anims[0].Rate; + v12 = v5->Anims[MA_STAND].Rate; break; } monster[v2]._mAnimLen = v12; diff --git a/Source/monster.h b/Source/monster.h index 254243385..18f71f97d 100644 --- a/Source/monster.h +++ b/Source/monster.h @@ -37,8 +37,8 @@ void __fastcall SetMapMonsters(unsigned char *pMap, int startx, int starty); void __fastcall DeleteMonster(int i); int __fastcall AddMonster(int x, int y, int dir, int mtype, int InMap); void __fastcall NewMonsterAnim(int i, AnimStruct *anim, int md); -bool __fastcall M_Ranged(int i); -bool __fastcall M_Talker(int i); +BOOL __fastcall M_Ranged(int i); +BOOL __fastcall M_Talker(int i); void __fastcall M_Enemy(int i); int __fastcall M_GetDir(int i); void __fastcall M_CheckEFlag(int i); diff --git a/enums.h b/enums.h index 7eb57f71c..41b8efe87 100644 --- a/enums.h +++ b/enums.h @@ -1863,6 +1863,15 @@ enum MON_MODE { MM_TALK = 17, }; +enum MON_ANIM { + MA_STAND = 0, + MA_WALK = 1, + MA_ATTACK = 2, + MA_GOTHIT = 3, + MA_DEATH = 4, + MA_SPECIAL = 5, +}; + enum PLR_MODE { PM_STAND = 0, PM_WALK = 1,