school/cs142/lab10/cleric.cpp

60 lines
1.1 KiB
C++

#include "FighterInterface.h"
#include "cleric.h"
cleric::cleric(string name, int max_hp, int strength, int speed, int magic) :
fighter(name, max_hp, strength, speed, magic), mana(5*magic) {}
int cleric::getDamage() {
return magic;
}
void cleric::reset() {
hp = max_hp;
mana = 5 * magic;
}
void cleric::regenerate() {
fighter::regenerate();
int increase = magic / 5;
if(increase < 0) {
increase = 0;
}
else if(increase == 0) {
increase = 1;
}
if(mana + increase < magic * 5) {
mana += increase;
}
else {
mana = 5 * magic;
}
}
bool cleric::useAbility() {
// a.k.a. Healing light
if(mana - CLERIC_ABILITY_COST >= 0) {
int increase = magic / 3;
if(increase < 0) {
increase = 0;
}
else if(increase == 0) {
increase = 1;
}
if(hp + increase < max_hp) {
hp += increase;
}
else {
hp = max_hp;
}
mana -= CLERIC_ABILITY_COST;
return true;
}
return false;
}
int cleric::get_mana() {
return mana;
}