From 44b1349529a187ac1c72995f7e664a557bce87ab Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 9 Sep 2018 00:26:03 +0200 Subject: [PATCH] Clean up CheckMonsterHit --- Source/missiles.cpp | 9 ++++--- Source/missiles.h | 2 +- Source/monster.cpp | 63 +++++++++++++++++++-------------------------- Source/monster.h | 2 +- Source/player.cpp | 2 +- structs.h | 2 +- 6 files changed, 35 insertions(+), 45 deletions(-) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 2d45aa888..89ea2b2e1 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -1237,7 +1237,7 @@ LABEL_7: } } -bool __fastcall MonsterTrapHit(int m, int mindam, int maxdam, int dist, int t, int shift) +BOOL __fastcall MonsterTrapHit(int m, int mindam, int maxdam, int dist, int t, int shift) { int v6; // esi int v8; // ecx @@ -1280,8 +1280,9 @@ bool __fastcall MonsterTrapHit(int m, int mindam, int maxdam, int dist, int t, i if ( v10 > 95 ) v10 = 95; //_LOBYTE(v11) = CheckMonsterHit(arglist, (unsigned char *)&t); - if ( CheckMonsterHit(arglist, (bool *)&t) ) - return t; + BOOL ret; + if ( CheckMonsterHit(arglist, &ret) ) + return ret; #ifdef _DEBUG if ( v14 >= v10 && !debug_mode_dollar_sign && !debug_mode_key_inverted_v && monster[v6]._mmode != MM_STONE ) return 0; @@ -1346,7 +1347,7 @@ bool __fastcall MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, i int v21; // edx int v22; // eax int v23; // [esp+Ch] [ebp-18h] - bool ret; // [esp+10h] [ebp-14h] + BOOL ret; // [esp+10h] [ebp-14h] int v25; // [esp+14h] [ebp-10h] int v26; // [esp+18h] [ebp-Ch] int pnuma; // [esp+1Ch] [ebp-8h] diff --git a/Source/missiles.h b/Source/missiles.h index 72b1f29e6..3cde16641 100644 --- a/Source/missiles.h +++ b/Source/missiles.h @@ -22,7 +22,7 @@ void __fastcall GetMissileVel(int i, int sx, int sy, int dx, int dy, int v); void __fastcall PutMissile(int i); void __fastcall GetMissilePos(int i); void __fastcall MoveMissilePos(int i); -bool __fastcall MonsterTrapHit(int m, int mindam, int maxdam, int dist, int t, int shift); +BOOL __fastcall MonsterTrapHit(int m, int mindam, int maxdam, int dist, int t, int shift); bool __fastcall MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, int t, int shift); bool __fastcall PlayerMHit(int pnum, int m, int dist, int mind, int maxd, int mtype, int shift, int earflag); bool __fastcall Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, int mtype, int shift); diff --git a/Source/monster.cpp b/Source/monster.cpp index d9c45577a..8608d2e9e 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -807,7 +807,7 @@ void __cdecl ClrAllMonsters() ClearMVars(i); Monst->mName = "Invalid Monster"; Monst->_mgoal = 0; - Monst->_mmode = 0; + Monst->_mmode = MM_STAND; Monst->_mVar1 = 0; Monst->_mVar2 = 0; Monst->_mx = 0; @@ -1112,7 +1112,7 @@ void __fastcall PlaceUniqueMonst(int uniqindex, int miniontype, int unpackfilesi Monst->_mAnimData = Monst->MType->Anims[0].Frames[Monst->_mdir]; Monst->_mAnimFrame = random(88, Monst->_mAnimLen - 1) + 1; Monst->_mFlags &= 0xFFFFFFFB; - Monst->_mmode = 0; + Monst->_mmode = MM_STAND; } } @@ -1886,7 +1886,7 @@ void __fastcall M_StartStand(int i, int md) monster[v4]._mdir = v2; monster[v4]._mVar1 = monster[v4]._mmode; monster[v4]._mVar2 = 0; - monster[v4]._mmode = 0; + monster[v4]._mmode = MM_STAND; v7 = monster[v4]._mx; monster[v4]._mxoff = 0; monster[v4]._myoff = 0; @@ -3036,7 +3036,7 @@ void __fastcall M_TryM2MHit(int i, int mid, int hper, int mind, int maxd) int v8; // ebx //int v9; // eax int v11; // eax - bool ret; // [esp+Ch] [ebp-Ch] + BOOL ret; // [esp+Ch] [ebp-Ch] char v13[4]; // [esp+10h] [ebp-8h] char arglist[4]; // [esp+14h] [ebp-4h] @@ -3733,7 +3733,7 @@ void __fastcall M_Teleport(int i) } v15 = 0; v3 = &monster[v1]; - if ( v3->_mmode != 15 ) + if ( v3->_mmode != MM_STONE ) { v10 = (unsigned char)v3->_menemyx; v12 = (unsigned char)v3->_menemyy; @@ -4693,7 +4693,7 @@ void __fastcall MAI_Snake(int i) esi3 = &monster[esi1]; pattern[0] = 1; pattern[1] = 1; - v3 = esi3->_mmode == 0; + v3 = esi3->_mmode == MM_STAND; micaster = esi3->_menemy; if ( v3 && esi3->_msquelch ) { @@ -4747,7 +4747,7 @@ void __fastcall MAI_Snake(int i) { PlayEffect(arglist, 0); v26 = esi3->_my + 112 * esi3->_mx; - esi3->_mmode = 14; + esi3->_mmode = MM_CHARGE; dMonster[0][v26] = -1 - v24; } goto LABEL_49; @@ -4913,7 +4913,7 @@ void __fastcall MAI_Bat(int i) if ( AddMissile(esi3->_mx, esi3->_my, v1, v2, midir, 20, micaster, arglist, 0, 0) != -1 ) { v12 = esi3->_my + 112 * esi3->_mx; - esi3->_mmode = 14; + esi3->_mmode = MM_CHARGE; dMonster[0][v12] = -1 - arglist; } } @@ -5263,7 +5263,7 @@ void __fastcall MAI_Fireman(int i) } monster[esi3]._mdir = midir; random(112, 100); - if ( monster[esi3]._mmode ) + if ( monster[esi3]._mmode == MM_STAND ) return; if ( abs(v6) < 2 && abs(v5) < 2 && _LOBYTE(monster[esi3]._mgoal) == 1 ) { @@ -6603,7 +6603,7 @@ void __fastcall MAI_Rhino(int i) if ( esi3->MData->snd_special ) PlayEffect(arglist, 3); v20 = esi3->_my + 112 * esi3->_mx; - esi3->_mmode = 14; + esi3->_mmode = MM_CHARGE; dMonster[0][v20] = -1 - arglist; } } @@ -8802,37 +8802,26 @@ bool __fastcall CanTalkToMonst(int m) return result; } -bool __fastcall CheckMonsterHit(int m, bool *ret) +BOOL __fastcall CheckMonsterHit(int m, BOOL *ret) { - int v2; // edi - bool *v3; // esi - int v4; // ecx - int v5; // eax - bool result; // al - unsigned char v7; // al - - v2 = m; - v3 = ret; - if ( (unsigned int)m >= MAXMONSTERS ) + if ( (DWORD)m >= MAXMONSTERS ) { TermMsg("CheckMonsterHit: Invalid monster %d", m); - v4 = v2; - if ( monster[v2]._mAi == AI_GARG && (v5 = monster[v4]._mFlags, v5 & 4) ) - { - _LOBYTE(v5) = v5 & 0xFB; - monster[v4]._mmode = MM_SATTACK; - monster[v4]._mFlags = v5; - result = 1; - *v3 = 1; } - else - { - v7 = monster[v4].MType->mtype; - if ( v7 < MT_COUNSLR || v7 > MT_ADVOCATE || (result = 1, _LOBYTE(monster[v4]._mgoal) == 1) ) - result = 0; - else - *v3 = 0; + + if ( monster[m]._mAi == AI_GARG && monster[m]._mFlags & 4) { + monster[m]._mmode = MM_SATTACK; + monster[m]._mFlags &= 0xFFFFFFFB; + *ret = TRUE; + return TRUE; } - return result; + + if ( monster[m].MType->mtype < MT_COUNSLR || monster[m].MType->mtype > MT_ADVOCATE || monster[m]._mgoal == 1 ) { + return FALSE; + } else { + *ret = FALSE; + } + + return TRUE; } int __fastcall encode_enemy(int m) diff --git a/Source/monster.h b/Source/monster.h index 78389b88d..3f0852a54 100644 --- a/Source/monster.h +++ b/Source/monster.h @@ -159,7 +159,7 @@ int __cdecl PreSpawnSkeleton(); void __fastcall TalktoMonster(int i); void __fastcall SpawnGolum(int i, int x, int y, int mi); bool __fastcall CanTalkToMonst(int m); -bool __fastcall CheckMonsterHit(int m, bool *ret); +BOOL __fastcall CheckMonsterHit(int m, BOOL *ret); int __fastcall encode_enemy(int m); void __fastcall decode_enemy(int m, int enemy); diff --git a/Source/player.cpp b/Source/player.cpp index 80864d96a..9f5c63834 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -3199,7 +3199,7 @@ bool __fastcall PlrHitMonst(int pnum, int m) int *v38; // ecx int *v39; // ecx int v40; // esi - bool ret; // [esp+Ch] [ebp-18h] + BOOL ret; // [esp+Ch] [ebp-18h] bool v42; // [esp+10h] [ebp-14h] int v48; int v43; // [esp+14h] [ebp-10h] diff --git a/structs.h b/structs.h index 023698699..dae5523c9 100644 --- a/structs.h +++ b/structs.h @@ -553,7 +553,7 @@ struct CMonster struct MonsterStruct // note: missing field _mAFNum { int _mMTidx; - int _mmode; + int _mmode; /* MON_MODE */ unsigned char _mgoal; int _mgoalvar1; int _mgoalvar2;