mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2025-11-17 15:30:06 +00:00
minor refactoring
This commit is contained in:
@@ -32,6 +32,9 @@ void MobManager::pcAttackNpcs(CNSocket *sock, CNPacketData *data) {
|
||||
sP_CL2FE_REQ_PC_ATTACK_NPCs* pkt = (sP_CL2FE_REQ_PC_ATTACK_NPCs*)data->buf;
|
||||
Player *plr = PlayerManager::getPlayer(sock);
|
||||
|
||||
if (plr == nullptr)
|
||||
return;
|
||||
|
||||
// sanity check
|
||||
if (!validInVarPacket(sizeof(sP_CL2FE_REQ_PC_ATTACK_NPCs), pkt->iNPCCnt, sizeof(int32_t), data->size)) {
|
||||
std::cout << "[WARN] bad sP_CL2FE_REQ_PC_ATTACK_NPCs packet size\n";
|
||||
@@ -98,9 +101,11 @@ void MobManager::pcAttackNpcs(CNSocket *sock, CNPacketData *data) {
|
||||
}
|
||||
|
||||
void MobManager::npcAttackPc(Mob *mob) {
|
||||
// player pointer has already been validated
|
||||
Player *plr = PlayerManager::getPlayer(mob->target);
|
||||
|
||||
if (plr == nullptr)
|
||||
return;
|
||||
|
||||
const size_t resplen = sizeof(sP_FE2CL_PC_ATTACK_NPCs_SUCC) + sizeof(sAttackResult);
|
||||
assert(resplen < CN_PACKET_BUFFER_SIZE - 8);
|
||||
uint8_t respbuf[CN_PACKET_BUFFER_SIZE];
|
||||
@@ -132,6 +137,9 @@ void MobManager::npcAttackPc(Mob *mob) {
|
||||
void MobManager::giveReward(CNSocket *sock) {
|
||||
Player *plr = PlayerManager::getPlayer(sock);
|
||||
|
||||
if (plr == nullptr)
|
||||
return;
|
||||
|
||||
const size_t resplen = sizeof(sP_FE2CL_REP_REWARD_ITEM) + sizeof(sItemReward);
|
||||
assert(resplen < CN_PACKET_BUFFER_SIZE - 8);
|
||||
// we know it's only one trailing struct, so we can skip full validation
|
||||
@@ -268,6 +276,9 @@ void MobManager::combatStep(Mob *mob, time_t currTime) {
|
||||
}
|
||||
Player *plr = PlayerManager::getPlayer(mob->target);
|
||||
|
||||
if (plr == nullptr)
|
||||
return;
|
||||
|
||||
// did something else kill the player in the mean time?
|
||||
if (plr->HP <= 0) {
|
||||
mob->target = nullptr;
|
||||
@@ -501,19 +512,24 @@ std::pair<int,int> MobManager::lerp(int x1, int y1, int x2, int y2, int speed) {
|
||||
|
||||
void MobManager::combatBegin(CNSocket *sock, CNPacketData *data) {
|
||||
Player *plr = PlayerManager::getPlayer(sock);
|
||||
plr->inCombat = true;
|
||||
|
||||
if (plr != nullptr)
|
||||
plr->inCombat = true;
|
||||
}
|
||||
|
||||
void MobManager::combatEnd(CNSocket *sock, CNPacketData *data) {
|
||||
Player *plr = PlayerManager::getPlayer(sock);
|
||||
plr->inCombat = false;
|
||||
|
||||
if (plr != nullptr)
|
||||
plr->inCombat = false;
|
||||
}
|
||||
|
||||
void MobManager::dotDamageOnOff(CNSocket *sock, CNPacketData *data) {
|
||||
sP_CL2FE_DOT_DAMAGE_ONOFF *pkt = (sP_CL2FE_DOT_DAMAGE_ONOFF*)data->buf;
|
||||
Player *plr = PlayerManager::getPlayer(sock);
|
||||
|
||||
plr->dotDamage = (bool)pkt->iFlag;
|
||||
if (plr != nullptr)
|
||||
plr->dotDamage = (bool)pkt->iFlag;
|
||||
}
|
||||
|
||||
void MobManager::dealGooDamage(CNSocket *sock, int amount) {
|
||||
@@ -527,6 +543,9 @@ void MobManager::dealGooDamage(CNSocket *sock, int amount) {
|
||||
sSkillResult_DotDamage *dmg = (sSkillResult_DotDamage*)(respbuf + sizeof(sP_FE2CL_CHAR_TIME_BUFF_TIME_TICK));
|
||||
Player *plr = PlayerManager::getPlayer(sock);
|
||||
|
||||
if (plr == nullptr)
|
||||
return;
|
||||
|
||||
// update player
|
||||
plr->HP -= amount;
|
||||
|
||||
@@ -629,6 +648,9 @@ void MobManager::pcAttackChars(CNSocket *sock, CNPacketData *data) {
|
||||
sP_CL2FE_REQ_PC_ATTACK_CHARs* pkt = (sP_CL2FE_REQ_PC_ATTACK_CHARs*)data->buf;
|
||||
Player *plr = PlayerManager::getPlayer(sock);
|
||||
|
||||
if (plr == nullptr)
|
||||
return;
|
||||
|
||||
// Unlike the attack mob packet, attacking players packet has an 8-byte trail (Instead of 4 bytes).
|
||||
if (!validInVarPacket(sizeof(sP_CL2FE_REQ_PC_ATTACK_CHARs), pkt->iTargetCnt, sizeof(int32_t) * 2, data->size)) {
|
||||
std::cout << "[WARN] bad sP_CL2FE_REQ_PC_ATTACK_CHARs packet size\n";
|
||||
|
||||
Reference in New Issue
Block a user