コード例 #1
0
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;
}
コード例 #2
0
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();
}
コード例 #3
0
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;
}
コード例 #4
0
ファイル: condition.cpp プロジェクト: edubart/otserv
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;
}