From e2ba79d3d1fb98e519004d0eaf117cd2bc6c4227 Mon Sep 17 00:00:00 2001 From: obligaron Date: Sun, 11 Jul 2021 23:30:29 +0200 Subject: [PATCH] Introduce StartMonsterGotHit --- Source/monster.cpp | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/Source/monster.cpp b/Source/monster.cpp index 2f1721ea7..09292519b 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -50,6 +50,21 @@ void NewMonsterAnim(int i, AnimStruct *anim, Direction md, AnimationDistribution monst->_mdir = md; } +void StartMonsterGotHit(int monsterId) +{ + auto &monster = Monsters[monsterId]; + if (monster.MType->mtype != MT_GOLEM) { + auto animationFlags = gGameLogicStep < GameLogicStep::ProcessMonsters ? AnimationDistributionFlags::ProcessAnimationPending : AnimationDistributionFlags::None; + NewMonsterAnim(monsterId, &monster.MType->Anims[MA_GOTHIT], monster._mdir, animationFlags); + monster._mmode = MM_GOTHIT; + } + monster.position.offset = { 0, 0 }; + monster.position.tile = monster.position.old; + monster.position.future = monster.position.old; + M_ClearSquares(monsterId); + dMonster[monster.position.tile.x][monster.position.tile.y] = monsterId + 1; +} + } // namespace #define NIGHTMARE_TO_HIT_BONUS 85 @@ -1574,13 +1589,7 @@ void M_GetKnockback(int i) M_ClearSquares(i); Monsters[i].position.old += d; - NewMonsterAnim(i, &Monsters[i].MType->Anims[MA_GOTHIT], Monsters[i]._mdir, gGameLogicStep < GameLogicStep::ProcessMonsters ? AnimationDistributionFlags::ProcessAnimationPending : AnimationDistributionFlags::None); - Monsters[i]._mmode = MM_GOTHIT; - Monsters[i].position.offset = { 0, 0 }; - Monsters[i].position.tile = Monsters[i].position.old; - Monsters[i].position.future = Monsters[i].position.tile; - M_ClearSquares(i); - dMonster[Monsters[i].position.tile.x][Monsters[i].position.tile.y] = i + 1; + StartMonsterGotHit(i); } void M_StartHit(int i, int pnum, int dam) @@ -1608,13 +1617,7 @@ void M_StartHit(int i, int pnum, int dam) Monsters[i]._mgoalvar2 = 0; } if (Monsters[i]._mmode != MM_STONE) { - NewMonsterAnim(i, &Monsters[i].MType->Anims[MA_GOTHIT], Monsters[i]._mdir, gGameLogicStep < GameLogicStep::ProcessMonsters ? AnimationDistributionFlags::ProcessAnimationPending : AnimationDistributionFlags::None); - Monsters[i]._mmode = MM_GOTHIT; - Monsters[i].position.offset = { 0, 0 }; - Monsters[i].position.tile = Monsters[i].position.old; - Monsters[i].position.future = Monsters[i].position.old; - M_ClearSquares(i); - dMonster[Monsters[i].position.tile.x][Monsters[i].position.tile.y] = i + 1; + StartMonsterGotHit(i); } } } @@ -1713,16 +1716,7 @@ void M2MStartHit(int mid, int i, int dam) } if (Monsters[mid]._mmode != MM_STONE) { - if (Monsters[mid].MType->mtype != MT_GOLEM) { - NewMonsterAnim(mid, &Monsters[mid].MType->Anims[MA_GOTHIT], Monsters[mid]._mdir, gGameLogicStep < GameLogicStep::ProcessMonsters ? AnimationDistributionFlags::ProcessAnimationPending : AnimationDistributionFlags::None); - Monsters[mid]._mmode = MM_GOTHIT; - } - - Monsters[mid].position.offset = { 0, 0 }; - Monsters[mid].position.tile = Monsters[mid].position.old; - Monsters[mid].position.future = Monsters[mid].position.old; - M_ClearSquares(mid); - dMonster[Monsters[mid].position.tile.x][Monsters[mid].position.tile.y] = mid + 1; + StartMonsterGotHit(mid); } } }