Browse Source

Directly call StartMonsterDeath instead of feeding M_StartKill invalid input

codeql
Anders Jenbo 4 years ago
parent
commit
1c286b5624
  1. 2
      Source/missiles.cpp
  2. 20
      Source/monster.cpp
  3. 1
      Source/monster.h

2
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 {

20
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);

1
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);

Loading…
Cancel
Save