From 859b24229a51ed13545711568a56e111d87b42ce Mon Sep 17 00:00:00 2001 From: Kamil Date: Sat, 24 Oct 2020 22:57:50 +0200 Subject: [PATCH] added a condition to not send mob/egg _ENTER packet when it's HP is 0 --- src/NPCManager.cpp | 12 ++++++++---- src/PlayerManager.cpp | 4 ++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/NPCManager.cpp b/src/NPCManager.cpp index 998c125..32f4e24 100644 --- a/src/NPCManager.cpp +++ b/src/NPCManager.cpp @@ -734,10 +734,11 @@ int NPCManager::eggBuffPlayer(CNSocket* sock, int skillId, int duration) { void NPCManager::eggStep(CNServer* serv, time_t currTime) { // tick buffs + time_t timeStamp = getTimestamp(); auto it = EggBuffs.begin(); while (it != EggBuffs.end()) { // check remaining time - if (it->second > currTime) + if (it->second > timeStamp) it++; // if time reached 0 @@ -781,11 +782,13 @@ void NPCManager::eggStep(CNServer* serv, time_t currTime) { // check dead eggs for (auto egg : Eggs) { if (!egg.second->dead) - return; - if (egg.second->deadUntil <= currTime) { + continue; + if (egg.second->deadUntil <= timeStamp) { // respawn it - addNPC(egg.second->currentChunks, egg.first); egg.second->dead = false; + egg.second->deadUntil = 0; + egg.second->appearanceData.iHP = 400; + addNPC(egg.second->currentChunks, egg.first); } } @@ -920,5 +923,6 @@ void NPCManager::eggPickup(CNSocket* sock, CNPacketData* data) { removeNPC(egg->currentChunks, eggId); egg->dead = true; egg->deadUntil = getTimestamp() + type->regen; + egg->appearanceData.iHP = 0; } } diff --git a/src/PlayerManager.cpp b/src/PlayerManager.cpp index f00ded7..e04386b 100644 --- a/src/PlayerManager.cpp +++ b/src/PlayerManager.cpp @@ -150,6 +150,10 @@ void PlayerManager::addPlayerToChunks(std::vector chunks, CNSocket* sock // add npcs for (int32_t id : chunk->NPCs) { BaseNPC* npc = NPCManager::NPCs[id]; + + if (npc->appearanceData.iHP <= 0) + continue; + switch (npc->npcClass) { case NPC_BUS: INITSTRUCT(sP_FE2CL_TRANSPORTATION_ENTER, enterBusData);