#include "DesertEagle.h" #define print(n) std::cout << n << std::endl DesertEagle::DesertEagle(int damagePerRound,int clipSize, int remainingAmmo) : Pistol(damagePerRound, clipSize, remainingAmmo) {} bool DesertEagle::fire(PlayerVitalData& enemyData) { this->_currClipBullets--; /* By description it has to be when it's == 0, but there is no reason to add more code, so I've just put the clipSize before all conditions and check for <= */ if (this->_currClipBullets < 0) { Pistol::reload(); return false; } else { if (enemyData.armor == 0) { enemyData.health -= _damagePerRound; } else if((_damagePerRound * 0.75) > enemyData.armor) { // Проверявам дали текущата 25% от текущата щета е по-голяма от бронята enemyData.health -= _damagePerRound - enemyData.armor; enemyData.armor = 0; } else { enemyData.armor -= _damagePerRound * 0.25; enemyData.health -= _damagePerRound * 0.75; } } print("Enemy left with: " << enemyData.health << " health and " << enemyData.armor << " armor"); if (enemyData.health <= 0) return true; else return false; }