Make sure each group member is alive before healing/buffing them

This commit is contained in:
dongresource 2020-12-01 21:15:43 +01:00
parent 046e7bb6f1
commit 8a86c75747

View File

@ -590,6 +590,10 @@ bool doBuff(CNSocket *sock, sSkillResult_Buff *respdata, int i, int32_t targetID
respdata[i].eCT = 1; respdata[i].eCT = 1;
respdata[i].iID = plr->iID; respdata[i].iID = plr->iID;
respdata[i].iConditionBitFlag = 0;
// only apply buffs if the player is actually alive
if (plr->HP > 0) {
respdata[i].iConditionBitFlag = bitFlag; respdata[i].iConditionBitFlag = bitFlag;
INITSTRUCT(sP_FE2CL_PC_BUFF_UPDATE, pkt); INITSTRUCT(sP_FE2CL_PC_BUFF_UPDATE, pkt);
@ -602,6 +606,7 @@ bool doBuff(CNSocket *sock, sSkillResult_Buff *respdata, int i, int32_t targetID
pkt.TimeBuff.iValue = amount; pkt.TimeBuff.iValue = amount;
sock->sendPacket((void*)&pkt, P_FE2CL_PC_BUFF_UPDATE, sizeof(sP_FE2CL_PC_BUFF_UPDATE)); sock->sendPacket((void*)&pkt, P_FE2CL_PC_BUFF_UPDATE, sizeof(sP_FE2CL_PC_BUFF_UPDATE));
}
return true; return true;
} }
@ -646,6 +651,10 @@ bool doHeal(CNSocket *sock, sSkillResult_Heal_HP *respdata, int i, int32_t targe
int healedAmount = PC_MAXHEALTH(plr->level) * amount / 1500; int healedAmount = PC_MAXHEALTH(plr->level) * amount / 1500;
// do not heal dead players
if (plr->HP <= 0)
healedAmount = 0;
plr->HP += healedAmount; plr->HP += healedAmount;
if (plr->HP > PC_MAXHEALTH(plr->level)) if (plr->HP > PC_MAXHEALTH(plr->level))