1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-02-03 13:01:33 +02:00

* general defence reduction support (behemoths)

This commit is contained in:
mateuszb 2010-03-12 19:05:23 +00:00
parent ad841f7fea
commit 047849a23e

View File

@ -2387,11 +2387,22 @@ std::pair<ui32, ui32> BattleInfo::calculateDmgRange(const CStack* attacker, cons
if(attacker->hasFeatureOfType(StackFeature::GENERAL_ATTACK_REDUCTION))
{
attackDefenseBonus = attacker->Attack() * (attacker->valOfFeatures(StackFeature::GENERAL_ATTACK_REDUCTION, -1024) / 100.0f) - defender->Defense();
float multAttackReduction = attacker->valOfFeatures(StackFeature::GENERAL_ATTACK_REDUCTION, -1024) / 100.0f;
attackDefenseBonus = attacker->Attack() * multAttackReduction;
}
else
{
attackDefenseBonus = attacker->Attack() - defender->Defense();
attackDefenseBonus = attacker->Attack();
}
if(attacker->hasFeatureOfType(StackFeature::ENEMY_DEFENCE_REDUCTION))
{
float multDefenceReduction = (100.0f - attacker->valOfFeatures(StackFeature::ENEMY_DEFENCE_REDUCTION, -1024)) / 100.0f;
attackDefenseBonus -= defender->Defense() * multDefenceReduction;
}
else
{
attackDefenseBonus -= defender->Defense();
}
//calculating total attack/defense skills modifier
@ -2406,7 +2417,6 @@ std::pair<ui32, ui32> BattleInfo::calculateDmgRange(const CStack* attacker, cons
attackDefenseBonus += attacker->valOfFeatures(StackFeature::ATTACK_BONUS, 1);
}
if(attacker->getEffect(55)) //slayer handling
{
std::vector<int> affectedIds;