Esto ya fue publicado y le dieron solución en otro post. De igual manera te comparto la región completa para que veas cómo armar correctamente el if
#pragma region ATTACK_FINISH
if (damage > 0)
{
if (lpTarget->Type == OBJECT_USER)
{
if (effect != 4)
{
if ((GetLargeRand() % 100) < lpTarget->FullDamageReflectRate)
{
gObjAddMsgSendDelay(lpTarget, 10, lpObj->Index, 10, damage);
}
else if ((lpTarget->DamageReflect + lpTarget->EffectOption.AddDamageReflect) > 0)
{
gObjAddMsgSendDelay(lpTarget, 10, lpObj->Index, 10, ((damage*(lpTarget->DamageReflect + lpTarget->EffectOption.AddDamageReflect)) / 100));
}
if ((GetLargeRand() % 100) < lpTarget->DefensiveFullHPRestoreRate)
{
lpTarget->Life = lpTarget->MaxLife + lpTarget->AddLife;
GCLifeSend(lpTarget->Index, 0xFF, (int)lpTarget->Life, lpTarget->Shield);
}
if ((GetLargeRand() % 100) < lpTarget->DefensiveFullSDRestoreRate)
{
lpTarget->Shield = lpTarget->MaxShield + lpTarget->AddShield;
GCLifeSend(lpTarget->Index, 0xFF, (int)lpTarget->Life, lpTarget->Shield);
}
if ((GetLargeRand() % 100) < lpTarget->DefensiveFullMPRestoreRate)
{
lpTarget->Mana = lpTarget->MaxMana + lpTarget->AddMana;
GCManaSend(lpTarget->Index, 0xFF, (int)lpTarget->Mana, lpTarget->BP);
}
if ((GetLargeRand() % 100) < lpTarget->DefensiveFullBPRestoreRate)
{
lpTarget->BP = lpTarget->MaxBP + lpTarget->AddBP;
GCManaSend(lpTarget->Index, 0xFF, (int)lpTarget->Mana, lpTarget->BP);
}
}
if (lpTarget->Inventory[8].IsItem() == 0 // Stuck if has no pet
|| (lpTarget->Inventory[8].m_Index == GET_ITEM(13, 2) && gServerInfo.m_PetUniriaEnableStuck != 0) // Stuck if has Uniria
|| (lpTarget->Inventory[8].m_Index == GET_ITEM(13, 3) && gServerInfo.m_PetDinorantEnableStuck != 0) // Stuck if has Dinorant
|| (lpTarget->Inventory[8].m_Index == GET_ITEM(13, 4) && gServerInfo.m_PetDarkHorseEnableStuck != 0) // Stuck if has Dark Horse
|| (lpTarget->Inventory[8].m_Index == GET_ITEM(13, 37) && gServerInfo.m_PetFenrirEnableStuck != 0)) // Stuck if has Fenrir
{
if ((GetLargeRand() % 100) < gServerInfo.m_DamageStuckRate[lpTarget->Class])
{
flag = 1;
}
}
}
gObjectManager.CharacterLifeCheck(lpObj, lpTarget, (damage - ShieldDamage), 0, flag, effect, skill, ShieldDamage);
}
else
{
GCDamageSend(lpObj->Index, lpTarget->Index, 0, 0, effect, 0);
}
if (lpObj->Type == OBJECT_USER && lpObj->Life <= 0 && lpObj->CheckLifeTime <= 0)
{
lpObj->AttackObj = lpTarget;
lpObj->AttackerKilled = ((lpTarget->Type == OBJECT_USER) ? 1 : 0);
lpObj->CheckLifeTime = 3;
}
#pragma endregion