Browse Source

♻️ Refactor MonsterDeath to receive a Monster reference (#4887)

pull/4888/head
Cesar Canassa 4 years ago committed by GitHub
parent
commit
4bb2f30657
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      Source/missiles.cpp
  2. 24
      Source/monster.cpp
  3. 2
      Source/monster.h

2
Source/missiles.cpp

@ -872,7 +872,7 @@ bool MonsterTrapHit(int m, int mindam, int maxdam, int dist, missile_id t, bool
monster._mhitpoints = 0; monster._mhitpoints = 0;
#endif #endif
if (monster._mhitpoints >> 6 <= 0) { if (monster._mhitpoints >> 6 <= 0) {
StartMonsterDeath(m, -1, true); StartMonsterDeath(monster, -1, true);
} else if (resist) { } else if (resist) {
PlayEffect(monster, 1); PlayEffect(monster, 1);
} else { } else {

24
Source/monster.cpp

@ -1080,11 +1080,8 @@ void MonsterHitMonster(int monsterId, int i, int dam)
HitMonster(monsterId, dam); HitMonster(monsterId, dam);
} }
void MonsterDeath(int monsterId, int pnum, Direction md, bool sendmsg) void MonsterDeath(Monster &monster, int pnum, Direction md, bool sendmsg)
{ {
assert(monsterId >= 0 && monsterId < MaxMonsters);
auto &monster = Monsters[monsterId];
if (pnum < MAX_PLRS) { if (pnum < MAX_PLRS) {
if (pnum >= 0) if (pnum >= 0)
monster.mWhoHit |= 1 << pnum; monster.mWhoHit |= 1 << pnum;
@ -1115,11 +1112,11 @@ void MonsterDeath(int monsterId, int pnum, Direction md, bool sendmsg)
monster.position.tile = monster.position.old; monster.position.tile = monster.position.old;
monster.position.future = monster.position.old; monster.position.future = monster.position.old;
M_ClearSquares(monster); M_ClearSquares(monster);
dMonster[monster.position.tile.x][monster.position.tile.y] = monsterId + 1; dMonster[monster.position.tile.x][monster.position.tile.y] = monster.getId() + 1;
CheckQuestKill(monster, sendmsg); CheckQuestKill(monster, sendmsg);
M_FallenFear(monster.position.tile); M_FallenFear(monster.position.tile);
if (IsAnyOf(monster.type().type, MT_NACID, MT_RACID, MT_BACID, MT_XACID, MT_SPIDLORD)) if (IsAnyOf(monster.type().type, MT_NACID, MT_RACID, MT_BACID, MT_XACID, MT_SPIDLORD))
AddMissile(monster.position.tile, { 0, 0 }, Direction::South, MIS_ACIDPUD, TARGET_PLAYERS, monsterId, monster._mint + 1, 0); AddMissile(monster.position.tile, { 0, 0 }, Direction::South, MIS_ACIDPUD, TARGET_PLAYERS, monster.getId(), monster._mint + 1, 0);
} }
void StartDeathFromMonster(int i, int mid) void StartDeathFromMonster(int i, int mid)
@ -1133,7 +1130,7 @@ void StartDeathFromMonster(int i, int mid)
NetSendCmdLocParam1(false, CMD_MONSTDEATH, monster.position.tile, mid); NetSendCmdLocParam1(false, CMD_MONSTDEATH, monster.position.tile, mid);
Direction md = GetDirection(monster.position.tile, killer.position.tile); Direction md = GetDirection(monster.position.tile, killer.position.tile);
MonsterDeath(mid, i, md, true); MonsterDeath(monster, i, md, true);
if (gbIsHellfire) if (gbIsHellfire)
M_StartStand(killer, killer._mdir); M_StartStand(killer, killer._mdir);
} }
@ -3193,7 +3190,7 @@ void LachdananAi(int monsterId)
if (!effect_is_playing(USFX_LACH3) && monster._mgoal == MGOAL_TALKING) { if (!effect_is_playing(USFX_LACH3) && monster._mgoal == MGOAL_TALKING) {
monster.mtalkmsg = TEXT_NONE; monster.mtalkmsg = TEXT_NONE;
Quests[Q_VEIL]._qactive = QUEST_DONE; Quests[Q_VEIL]._qactive = QUEST_DONE;
StartMonsterDeath(monsterId, -1, true); StartMonsterDeath(monster, -1, true);
} }
} }
} }
@ -3936,13 +3933,10 @@ void M_StartHit(int monsterId, int pnum, int dam)
M_StartHit(monsterId, dam); M_StartHit(monsterId, dam);
} }
void StartMonsterDeath(int monsterId, int pnum, bool sendmsg) void StartMonsterDeath(Monster &monster, int pnum, bool sendmsg)
{ {
assert(monsterId >= 0 && monsterId < MaxMonsters);
Monster &monster = Monsters[monsterId];
Direction md = pnum >= 0 ? GetDirection(monster.position.tile, Players[pnum].position.tile) : monster._mdir; Direction md = pnum >= 0 ? GetDirection(monster.position.tile, Players[pnum].position.tile) : monster._mdir;
MonsterDeath(monsterId, pnum, md, sendmsg); MonsterDeath(monster, pnum, md, sendmsg);
} }
void M_StartKill(int monsterId, int pnum) void M_StartKill(int monsterId, int pnum)
@ -3959,7 +3953,7 @@ void M_StartKill(int monsterId, int pnum)
} }
} }
StartMonsterDeath(monsterId, pnum, true); StartMonsterDeath(monster, pnum, true);
} }
void M_SyncStartKill(int monsterId, Point position, int pnum) void M_SyncStartKill(int monsterId, Point position, int pnum)
@ -3977,7 +3971,7 @@ void M_SyncStartKill(int monsterId, Point position, int pnum)
monster.position.old = position; monster.position.old = position;
} }
StartMonsterDeath(monsterId, pnum, false); StartMonsterDeath(monster, pnum, false);
} }
void M_UpdateLeader(int monsterId) void M_UpdateLeader(int monsterId)

2
Source/monster.h

@ -309,7 +309,7 @@ void M_ClearSquares(const Monster &monster);
void M_GetKnockback(Monster &monster); void M_GetKnockback(Monster &monster);
void M_StartHit(int monsterId, int dam); void M_StartHit(int monsterId, int dam);
void M_StartHit(int monsterId, int pnum, int dam); void M_StartHit(int monsterId, int pnum, int dam);
void StartMonsterDeath(int monsterId, int pnum, bool sendmsg); void StartMonsterDeath(Monster &monster, int pnum, bool sendmsg);
void M_StartKill(int monsterId, int pnum); void M_StartKill(int monsterId, int pnum);
void M_SyncStartKill(int monsterId, Point position, int pnum); void M_SyncStartKill(int monsterId, Point position, int pnum);
void M_UpdateLeader(int monsterId); void M_UpdateLeader(int monsterId);

Loading…
Cancel
Save