- fixed some bugs around hp regeneration and attack-boost

This commit is contained in:
Mark Vejvoda 2011-07-22 20:06:48 +00:00
parent 82a0f23487
commit 7bc9394e85
2 changed files with 26 additions and 16 deletions

View File

@ -1731,11 +1731,16 @@ bool Unit::applyAttackBoost(const AttackBoost *boost, const Unit *source) {
//regenerate hp upgrade / or boost
if(totalUpgrade.getMaxHpRegeneration() != 0) {
checkItemInVault(&this->hp,this->hp);
//printf("BEFORE Apply Hp Regen max = %d, prev = %d, hp = %d\n",totalUpgrade.getMaxHpRegeneration(),prevMaxHpRegen,hp);
hp += (totalUpgrade.getMaxHpRegeneration() - prevMaxHpRegen);
if(hp > totalUpgrade.getMaxHp()) {
hp = totalUpgrade.getMaxHp();
}
//if(hp > type->getTotalMaxHp(&totalUpgrade)) {
// hp = type->getTotalMaxHp(&totalUpgrade);
//}
addItemToVault(&this->hp,this->hp);
//printf("AFTER Apply Hp Regen max = %d, prev = %d, hp = %d\n",totalUpgrade.getMaxHpRegeneration(),prevMaxHpRegen,hp);
}
//printf("#2 wasAlive = %d hp = %d boosthp = %d\n",wasAlive,hp,boost->boostUpgrade.getMaxHp());
@ -1810,11 +1815,16 @@ void Unit::deapplyAttackBoost(const AttackBoost *boost, const Unit *source) {
//regenerate hp upgrade / or boost
if(totalUpgrade.getMaxHpRegeneration() != 0) {
checkItemInVault(&this->hp,this->hp);
//printf("BEFORE DeApply Hp Regen max = %d, prev = %d, hp = %d\n",totalUpgrade.getMaxHpRegeneration(),prevMaxHpRegen,hp);
hp -= (totalUpgrade.getMaxHpRegeneration() - prevMaxHpRegen);
if(hp > totalUpgrade.getMaxHp()) {
hp = totalUpgrade.getMaxHp();
}
//if(hp > totalUpgrade.getMaxHp()) {
// hp = totalUpgrade.getMaxHp();
//}
addItemToVault(&this->hp,this->hp);
//printf("AFTER DeApply Hp Regen max = %d, prev = %d, hp = %d\n",totalUpgrade.getMaxHpRegeneration(),prevMaxHpRegen,hp);
}
if(wasAlive == true) {
@ -2101,10 +2111,10 @@ string Unit::getDesc() const {
//str += "\n"+lang.get("Hp")+ ": " + intToStr(hp) + "/" + intToStr(type->getTotalMaxHp(&totalUpgrade)) + " [" + floatToStr(getHpRatio()) + "] [" + floatToStr(animProgress) + "]";
str += "\n"+lang.get("Hp")+ ": " + intToStr(hp) + "/" + intToStr(type->getTotalMaxHp(&totalUpgrade));
if(type->getHpRegeneration() != 0) {
if(type->getHpRegeneration() != 0 || totalUpgrade.getMaxHpRegeneration() != 0) {
str+= " (" + lang.get("Regeneration") + ": " + intToStr(type->getHpRegeneration());
if(type->getTotalMaxHpRegeneration(&totalUpgrade) != 0) {
str+= "/" + intToStr(type->getTotalMaxHpRegeneration(&totalUpgrade));
if(totalUpgrade.getMaxHpRegeneration() != 0) {
str+= "+" + intToStr(totalUpgrade.getMaxHpRegeneration());
}
str+= ")";
}
@ -2113,10 +2123,10 @@ string Unit::getDesc() const {
if(getType()->getMaxEp()!=0){
str+= "\n" + lang.get("Ep")+ ": " + intToStr(ep) + "/" + intToStr(type->getTotalMaxEp(&totalUpgrade));
}
if(type->getEpRegeneration() != 0) {
if(type->getEpRegeneration() != 0 || totalUpgrade.getMaxEpRegeneration() != 0) {
str+= " (" + lang.get("Regeneration") + ": " + intToStr(type->getEpRegeneration());
if(type->getTotalMaxEpRegeneration(&totalUpgrade) != 0) {
str += "/" + intToStr(type->getTotalMaxEpRegeneration(&totalUpgrade));
if(totalUpgrade.getMaxEpRegeneration() != 0) {
str += "+" + intToStr(totalUpgrade.getMaxEpRegeneration());
}
str+= ")";
}

View File

@ -460,7 +460,7 @@ void TotalUpgrade::sum(const UpgradeTypeBase *ut, const Unit *unit) {
//printf("#1 Maxhp maxHp = %d, unit->getHp() = %d ut->getMaxHp() = %d\n",maxHp,unit->getHp(),ut->getMaxHp());
maxHp += ((double)unit->getHp() * ((double)ut->getMaxHp() / (double)100));
if(ut->getMaxHpRegeneration() != 0) {
maxHpRegeneration += ((double)unit->getType()->getHpRegeneration() * ((double)ut->getMaxHpRegeneration() / (double)100));
maxHpRegeneration += ((double)unit->getType()->getHpRegeneration() + ((double)max(maxHp,unit->getHp()) * ((double)ut->getMaxHpRegeneration() / (double)100)));
}
//printf("#1.1 Maxhp maxHp = %d, unit->getHp() = %d ut->getMaxHp() = %d\n",maxHp,unit->getHp(),ut->getMaxHp());
}
@ -475,7 +475,7 @@ void TotalUpgrade::sum(const UpgradeTypeBase *ut, const Unit *unit) {
if(ut->getMaxEpIsMultiplier() == true) {
maxEp += ((double)unit->getEp() * ((double)ut->getMaxEp() / (double)100));
if(ut->getMaxHpRegeneration() != 0) {
maxEpRegeneration += ((double)unit->getType()->getEpRegeneration() * ((double)ut->getMaxEpRegeneration() / (double)100));
maxEpRegeneration += ((double)unit->getType()->getEpRegeneration() + ((double)max(maxEp,unit->getEp()) * ((double)ut->getMaxEpRegeneration() / (double)100)));
}
}
else {
@ -583,7 +583,7 @@ void TotalUpgrade::deapply(const UpgradeTypeBase *ut,const Unit *unit) {
if(ut->getMaxHpIsMultiplier() == true) {
maxHp -= ((double)unit->getHp() * ((double)ut->getMaxHp() / (double)100));
if(ut->getMaxHpRegeneration() != 0) {
maxHpRegeneration -= ((double)unit->getType()->getHpRegeneration() * ((double)ut->getMaxHpRegeneration() / (double)100));
maxHpRegeneration -= ((double)unit->getType()->getHpRegeneration() + ((double)max(maxHp,unit->getHp()) * ((double)ut->getMaxHpRegeneration() / (double)100)));
}
}
else {
@ -596,7 +596,7 @@ void TotalUpgrade::deapply(const UpgradeTypeBase *ut,const Unit *unit) {
if(ut->getMaxEpIsMultiplier() == true) {
maxEp -= ((double)unit->getEp() * ((double)ut->getMaxEp() / (double)100));
if(ut->getMaxEpRegeneration() != 0) {
maxEpRegeneration += ((double)unit->getType()->getEpRegeneration() * ((double)ut->getMaxEpRegeneration() / (double)100));
maxEpRegeneration += ((double)unit->getType()->getEpRegeneration() + ((double)max(maxEp,unit->getEp()) * ((double)ut->getMaxEpRegeneration() / (double)100)));
}
}
else {