diff --git a/src/Abilities.cpp b/src/Abilities.cpp index a3b3f86..7e1112b 100644 --- a/src/Abilities.cpp +++ b/src/Abilities.cpp @@ -150,19 +150,24 @@ static SkillResult handleSkillBatteryDrain(SkillData* skill, int power, ICombata Player* plr = dynamic_cast(target); const double scalingFactor = (18 + source->getLevel()) / 36.0; + const bool blocked = target->hasBuff(ECSB_PROTECT_BATTERY); - int boostDrain = (int)(skill->values[0][power] * scalingFactor); - if(boostDrain > plr->batteryW) boostDrain = plr->batteryW; - plr->batteryW -= boostDrain; + int boostDrain = 0; + int potionDrain = 0; + if(blocked) { + boostDrain = (int)(skill->values[0][power] * scalingFactor); + if(boostDrain > plr->batteryW) boostDrain = plr->batteryW; + plr->batteryW -= boostDrain; - int potionDrain = (int)(skill->values[1][power] * scalingFactor); - if(potionDrain > plr->batteryN) potionDrain = plr->batteryN; - plr->batteryN -= potionDrain; + potionDrain = (int)(skill->values[1][power] * scalingFactor); + if(potionDrain > plr->batteryN) potionDrain = plr->batteryN; + plr->batteryN -= potionDrain; + } sSkillResult_BatteryDrain result{}; result.eCT = target->getCharType(); result.iID = target->getID(); - result.bProtected = target->hasBuff(ECSB_PROTECT_BATTERY); + result.bProtected = blocked; result.iDrainW = boostDrain; result.iBatteryW = plr->batteryW; result.iDrainN = potionDrain;