mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2025-02-20 08:40:41 +00:00
Fix battery drain block
This commit is contained in:
parent
d936d0b621
commit
94b08659d2
@ -150,19 +150,24 @@ static SkillResult handleSkillBatteryDrain(SkillData* skill, int power, ICombata
|
|||||||
Player* plr = dynamic_cast<Player*>(target);
|
Player* plr = dynamic_cast<Player*>(target);
|
||||||
|
|
||||||
const double scalingFactor = (18 + source->getLevel()) / 36.0;
|
const double scalingFactor = (18 + source->getLevel()) / 36.0;
|
||||||
|
const bool blocked = target->hasBuff(ECSB_PROTECT_BATTERY);
|
||||||
|
|
||||||
int boostDrain = (int)(skill->values[0][power] * scalingFactor);
|
int boostDrain = 0;
|
||||||
if(boostDrain > plr->batteryW) boostDrain = plr->batteryW;
|
int potionDrain = 0;
|
||||||
plr->batteryW -= boostDrain;
|
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);
|
potionDrain = (int)(skill->values[1][power] * scalingFactor);
|
||||||
if(potionDrain > plr->batteryN) potionDrain = plr->batteryN;
|
if(potionDrain > plr->batteryN) potionDrain = plr->batteryN;
|
||||||
plr->batteryN -= potionDrain;
|
plr->batteryN -= potionDrain;
|
||||||
|
}
|
||||||
|
|
||||||
sSkillResult_BatteryDrain result{};
|
sSkillResult_BatteryDrain result{};
|
||||||
result.eCT = target->getCharType();
|
result.eCT = target->getCharType();
|
||||||
result.iID = target->getID();
|
result.iID = target->getID();
|
||||||
result.bProtected = target->hasBuff(ECSB_PROTECT_BATTERY);
|
result.bProtected = blocked;
|
||||||
result.iDrainW = boostDrain;
|
result.iDrainW = boostDrain;
|
||||||
result.iBatteryW = plr->batteryW;
|
result.iBatteryW = plr->batteryW;
|
||||||
result.iDrainN = potionDrain;
|
result.iDrainN = potionDrain;
|
||||||
|
Loading…
Reference in New Issue
Block a user