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