if (IsAffectFlag(AFF_MANASHIELD))
{
int iSP = GetSP();
int iManaShieldRatio = MAX(GetPoint(POINT_MANASHIELD), 1); // Mana Kalkanı oranı
// Hasarın mana ile absorbe edilecek kısmını hesapla
int iDamageSPPart = (dam * iManaShieldRatio) / 100;
// Eğer SP yeterliyse
if (iDamageSPPart <= iSP)
{
PointChange(POINT_SP, -iDamageSPPart); // SP azalt
dam -= iDamageSPPart; // Hasarı azalt
}
else
{
// SP yetersizse, mevcut SP kadar hasarı absorbe et
dam -= iSP;
PointChange(POINT_SP, -iSP); // Tüm SP'yi tüket
}
}
char_battle.cpp bu kodu yapın sorunsuz oluyor wslik sunucular için işinizi çözer