Browse Source

♻️ Refactor M_StartHit to receive a Monster reference

pull/4881/merge
Cesar Canassa 4 years ago committed by Anders Jenbo
parent
commit
0d106beaf3
  1. 4
      Source/missiles.cpp
  2. 18
      Source/monster.cpp
  3. 4
      Source/monster.h
  4. 5
      Source/msg.cpp
  5. 2
      Source/player.cpp

4
Source/missiles.cpp

@ -251,7 +251,7 @@ bool MonsterMHit(int pnum, int monsterId, int mindam, int maxdam, int dist, miss
if (monster._mmode != MonsterMode::Petrified && MissilesData[t].mType == 0 && HasAnyOf(player._pIFlags, ItemSpecialEffect::Knockback))
M_GetKnockback(monster);
if (monster.type().type != MT_GOLEM)
M_StartHit(monsterId, pnum, dam);
M_StartHit(monster, pnum, dam);
}
if (monster._msquelch == 0) {
@ -877,7 +877,7 @@ bool MonsterTrapHit(int monsterId, int mindam, int maxdam, int dist, missile_id
PlayEffect(monster, 1);
} else {
if (monster.type().type != MT_GOLEM)
M_StartHit(monsterId, dam);
M_StartHit(monster, dam);
}
return true;
}

18
Source/monster.cpp

@ -1287,7 +1287,7 @@ void CheckReflect(int monsterId, int pnum, int dam)
if (monster._mhitpoints >> 6 <= 0)
M_StartKill(monsterId, pnum);
else
M_StartHit(monsterId, pnum, mdam);
M_StartHit(monster, pnum, mdam);
}
void MonsterAttackPlayer(int monsterId, int pnum, int hit, int minDam, int maxDam)
@ -1375,7 +1375,7 @@ void MonsterAttackPlayer(int monsterId, int pnum, int hit, int minDam, int maxDa
if (monster._mhitpoints >> 6 <= 0)
M_StartKill(monsterId, pnum);
else
M_StartHit(monsterId, pnum, mdam);
M_StartHit(monster, pnum, mdam);
}
if ((monster._mFlags & MFLAG_NOLIFESTEAL) == 0 && monster.type().type == MT_SKING && gbIsMultiplayer)
monster._mhitpoints += dam;
@ -3886,10 +3886,8 @@ void M_GetKnockback(Monster &monster)
StartMonsterGotHit(monster);
}
void M_StartHit(int monsterId, int dam)
void M_StartHit(Monster &monster, int dam)
{
Monster &monster = Monsters[monsterId];
PlayEffect(monster, 1);
if (IsAnyOf(monster.type().type, MT_SNEAK, MT_STALKER, MT_UNSEEN, MT_ILLWEAV) || dam >> 6 >= monster.mLevel + 3) {
@ -3907,14 +3905,12 @@ void M_StartHit(int monsterId, int dam)
}
}
void M_StartHit(int monsterId, int pnum, int dam)
void M_StartHit(Monster &monster, int pnum, int dam)
{
Monster &monster = Monsters[monsterId];
monster.mWhoHit |= 1 << pnum;
if (pnum == MyPlayerId) {
delta_monster_hp(monster, *MyPlayer);
NetSendCmdMonDmg(false, monsterId, dam);
NetSendCmdMonDmg(false, monster.getId(), dam);
}
if (IsAnyOf(monster.type().type, MT_SNEAK, MT_STALKER, MT_UNSEEN, MT_ILLWEAV) || dam >> 6 >= monster.mLevel + 3) {
monster._menemy = pnum;
@ -3923,7 +3919,7 @@ void M_StartHit(int monsterId, int pnum, int dam)
monster._mdir = GetMonsterDirection(monster);
}
M_StartHit(monsterId, dam);
M_StartHit(monster, dam);
}
void StartMonsterDeath(Monster &monster, int pnum, bool sendmsg)
@ -4625,7 +4621,7 @@ void MissToMonst(Missile &missile, Point position)
monster.position.tile = position;
M_StartStand(monster, monster._mdir);
if ((monster._mFlags & MFLAG_TARGETS_MONSTER) == 0)
M_StartHit(monsterId, 0);
M_StartHit(monster, 0);
else
HitMonster(monsterId, 0);

4
Source/monster.h

@ -307,8 +307,8 @@ bool M_Talker(const Monster &monster);
void M_StartStand(Monster &monster, Direction md);
void M_ClearSquares(const Monster &monster);
void M_GetKnockback(Monster &monster);
void M_StartHit(int monsterId, int dam);
void M_StartHit(int monsterId, int pnum, int dam);
void M_StartHit(Monster &monster, int dam);
void M_StartHit(Monster &monster, int pnum, int dam);
void StartMonsterDeath(Monster &monster, int pnum, bool sendmsg);
void M_StartKill(int monsterId, int pnum);
void M_SyncStartKill(int monsterId, Point position, int pnum);

5
Source/msg.cpp

@ -1434,8 +1434,9 @@ DWORD OnKnockback(const TCmd *pCmd, int pnum)
const auto &message = *reinterpret_cast<const TCmdParam1 *>(pCmd);
if (gbBufferMsgs != 1 && Players[pnum].isOnActiveLevel() && message.wParam1 < MaxMonsters) {
M_GetKnockback(Monsters[message.wParam1]);
M_StartHit(message.wParam1, pnum, 0);
Monster &monster = Monsters[message.wParam1];
M_GetKnockback(monster);
M_StartHit(monster, pnum, 0);
}
return sizeof(message);

2
Source/player.cpp

@ -975,7 +975,7 @@ bool PlrHitMonst(int pnum, int monsterId, bool adjacentDamage = false)
} else {
if (monster._mmode != MonsterMode::Petrified && HasAnyOf(player._pIFlags, ItemSpecialEffect::Knockback))
M_GetKnockback(monster);
M_StartHit(monsterId, pnum, dam);
M_StartHit(monster, pnum, dam);
}
return true;

Loading…
Cancel
Save