bool ConditionDamage::updateCondition(const Condition* addCondition) { const ConditionDamage& conditionDamage = static_cast<const ConditionDamage&>(*addCondition); if (conditionDamage.doForceUpdate()) { return true; } if (getTicks() == -1 && conditionDamage.getTicks() > 0) { return false; } if (conditionDamage.getTicks() <= getTicks()) { return false; } if (conditionDamage.getTotalDamage() < getTotalDamage()) { return false; } if (conditionDamage.periodDamage < periodDamage) { return false; } return true; }
bool ConditionDamage::updateCondition(const Condition* addCondition) { const ConditionDamage& conditionDamage = static_cast<const ConditionDamage&>(*addCondition); if (conditionDamage.doForceUpdate()) { return true; } if (ticks == -1 && conditionDamage.ticks > 0) { return false; } return conditionDamage.getTotalDamage() > getTotalDamage(); }
bool ConditionDamage::updateCondition(const ConditionDamage* addCondition) { if(addCondition->doForceUpdate()) return true; if(getTicks() == -1 && addCondition->getTicks() > 0) return false; if(addCondition->getTicks() <= getTicks()) return false; if(addCondition->getTotalDamage() < getTotalDamage()) return false; if(addCondition->periodDamage < periodDamage) return false; return true; }
bool ConditionDamage::updateCondition(const ConditionDamage* addCondition) { if (addCondition->doForceUpdate()) { return true; } if (getTicks() == -1 && addCondition->getTicks() > 0) { return false; } if (addCondition->getTicks() <= getTicks()) { return false; } int32_t oldTotDamage = getTotalDamage(); int32_t newTotDamage = addCondition->getTotalDamage(); //TODO: to consider the PVP damage reduction to correctly decide which condition should stay? /*if ((owner >= PLAYER_ID_RANGE) && (owner < MONSTER_ID_RANGE)){ //we shouldn't check attacker because pvp reduction happens even if the creature who owns the condition is dead Combat::doPVPDamageReduction(oldTotDamage, ?); } if ((addCondition->owner >= PLAYER_ID_RANGE) && (addCondition->owner < MONSTER_ID_RANGE)){ //we shouldn't check attacker because pvp reduction happens even if the creature who owns the condition is dead Combat::doPVPDamageReduction(newTotDamage, ?); }*/ if (newTotDamage < oldTotDamage) { return false; } if (addCondition->periodDamage < periodDamage) { return false; } return true; }