adg5/Attacker.cpp
2025-04-20 14:24:02 +10:00

23 lines
761 B
C++

#include "Attacker.h"
#include "Actor.h"
#include "Destructible.h"
Attacker::Attacker(float power) : power(power) {
}
void Attacker::attack(Actor* owner, Actor* target) {
if (target->destructible && !target->destructible->isDead()) {
if (power - target->destructible->defense > 0) {
printf("%s attacks %s for %g hit points.\n", owner->name.c_str(), target->name.c_str(),
power - target->destructible->defense);
}
else {
printf("%s attacks %s but it has no effect!\n", owner->name.c_str(), target->name.c_str());
}
target->destructible->takeDamage(target, power);
}
else {
printf("%s attacks %s in vain.\n", owner->name.c_str(), target->name.c_str());
}
}