#pragma region ATTACK_FINISH
if(damage > 0)
{
gEffectManager.DelEffect(lpTarget,EFFECT_SLEEP);
if(effect != 4 && lpTarget->Type == OBJECT_USER)
{
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);
}
}
#ifdef FIX_REFLECT
if(lpTarget->Type == OBJECT_USER)
#else
else if(effect == 4 && lpTarget->Type == OBJECT_USER)
#endif // FIX_REFLECT
{
if(lpTarget->Inventory[8].IsItem() == 0 || (lpTarget->Inventory[8].m_Index != GET_ITEM(13,2) && lpTarget->Inventory[8].m_Index != GET_ITEM(13,3) && lpTarget->Inventory[8].m_Index != GET_ITEM(13,4) && lpTarget->Inventory[8].m_Index != GET_ITEM(13,37)))
{
if((GetLargeRand()%100) < gServerInfo.m_DamageStuckRate[lpTarget->Class])
{
flag = 1;
}
}
}
gObjectManager.CharacterLifeCheck(lpObj,lpTarget,(damage-ShieldDamage),0,flag,effect,((lpSkill==0)?0:lpSkill->m_index),ShieldDamage);
#if(GAMESERVER_UPDATE>=701)
this->AttackElemental(lpObj,lpTarget,lpSkill,send,flag,damage,count,combo);
#endif
}
else
{
GCDamageSend(lpObj->Index,lpTarget->Index,0,0,effect,0);
#if(GAMESERVER_UPDATE>=701)
this->AttackElemental(lpObj,lpTarget,lpSkill,send,flag,damage,count,combo);
#endif
}
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