From 1c286b5624006b42163eb6714c5fb4981c8169ed Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Mon, 27 Jun 2022 23:13:44 +0200 Subject: [PATCH] Directly call StartMonsterDeath instead of feeding M_StartKill invalid input --- Source/missiles.cpp | 2 +- Source/monster.cpp | 20 ++++++++++---------- Source/monster.h | 1 + 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index c6802e964..aadc8f9dd 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -878,7 +878,7 @@ bool MonsterTrapHit(int m, int mindam, int maxdam, int dist, missile_id t, bool monster._mhitpoints = 0; #endif if (monster._mhitpoints >> 6 <= 0) { - M_StartKill(m, -1); + StartMonsterDeath(m, -1, true); } else if (resist) { PlayEffect(monster, 1); } else { diff --git a/Source/monster.cpp b/Source/monster.cpp index 0ef293ed7..bef03547f 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1135,15 +1135,6 @@ void MonsterDeath(int mid, int pnum, Direction md, bool sendmsg) AddMissile(monster.position.tile, { 0, 0 }, Direction::South, MIS_ACIDPUD, TARGET_PLAYERS, mid, monster._mint + 1, 0); } -void StartMonsterDeath(int mid, int pnum, bool sendmsg) -{ - assert(mid >= 0 && mid < MAXMONSTERS); - Monster &monster = Monsters[mid]; - - Direction md = pnum >= 0 ? GetDirection(monster.position.tile, Players[pnum].position.tile) : monster._mdir; - MonsterDeath(mid, pnum, md, sendmsg); -} - void StartDeathFromMonster(int i, int mid) { assert(i >= 0 && i < MAXMONSTERS); @@ -3219,7 +3210,7 @@ void LachdananAi(int i) if (!effect_is_playing(USFX_LACH3) && monster._mgoal == MGOAL_TALKING) { monster.mtalkmsg = TEXT_NONE; Quests[Q_VEIL]._qactive = QUEST_DONE; - M_StartKill(i, -1); + StartMonsterDeath(i, -1, true); } } } @@ -3977,6 +3968,15 @@ void M_StartHit(int i, int pnum, int dam) M_StartHit(i, dam); } +void StartMonsterDeath(int mid, int pnum, bool sendmsg) +{ + assert(mid >= 0 && mid < MAXMONSTERS); + Monster &monster = Monsters[mid]; + + Direction md = pnum >= 0 ? GetDirection(monster.position.tile, Players[pnum].position.tile) : monster._mdir; + MonsterDeath(mid, pnum, md, sendmsg); +} + void M_StartKill(int i, int pnum) { assert(i >= 0 && i < MAXMONSTERS); diff --git a/Source/monster.h b/Source/monster.h index e3447c3af..3130905ca 100644 --- a/Source/monster.h +++ b/Source/monster.h @@ -288,6 +288,7 @@ void M_ClearSquares(int i); void M_GetKnockback(int i); void M_StartHit(int i, int dam); void M_StartHit(int i, int pnum, int dam); +void StartMonsterDeath(int mid, int pnum, bool sendmsg); void M_StartKill(int i, int pnum); void M_SyncStartKill(int i, Point position, int pnum); void M_UpdateLeader(int i);