73 lines
1.4 KiB
C++
73 lines
1.4 KiB
C++
|
#include "fighter.h"
|
||
|
|
||
|
fighter::fighter(string name, int max_hp, int strength, int speed, int magic) :
|
||
|
name(name), max_hp(max_hp), hp(max_hp), strength(strength),
|
||
|
speed(speed), magic(magic) {}
|
||
|
|
||
|
string fighter::getName() {
|
||
|
return name;
|
||
|
}
|
||
|
|
||
|
int fighter::getMaximumHP() {
|
||
|
return max_hp;
|
||
|
}
|
||
|
|
||
|
int fighter::getCurrentHP() {
|
||
|
return hp;
|
||
|
}
|
||
|
|
||
|
int fighter::getStrength() {
|
||
|
return strength;
|
||
|
}
|
||
|
|
||
|
int fighter::getSpeed() {
|
||
|
return speed;
|
||
|
}
|
||
|
|
||
|
int fighter::getMagic() {
|
||
|
return magic;
|
||
|
}
|
||
|
|
||
|
void fighter::regenerate() {
|
||
|
int increase = strength / 6;
|
||
|
|
||
|
if(increase < 0) {
|
||
|
increase = 0;
|
||
|
}
|
||
|
else if(increase == 0) {
|
||
|
increase = 1;
|
||
|
}
|
||
|
|
||
|
if(hp + increase <= max_hp) {
|
||
|
hp += increase;
|
||
|
}
|
||
|
else {
|
||
|
hp = max_hp;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void fighter::takeDamage(int damage) {
|
||
|
int hurt = damage - (speed / 4);
|
||
|
if (hurt <= 0) {
|
||
|
hurt = 1;
|
||
|
}
|
||
|
hp -= hurt;
|
||
|
}
|
||
|
|
||
|
bool fighter::isSimplified() {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
ostream & operator<<(ostream & os, fighter & f) {
|
||
|
os << "{\n"
|
||
|
<< " \"name\": \"" << f.name << "\",\n"
|
||
|
<< " \"type\": \"" << f.get_type() << "\",\n"
|
||
|
<< " \"hp\": " << f.hp << ",\n"
|
||
|
<< " \"max hp\": " << f.max_hp << ",\n"
|
||
|
<< " \"strength\": " << f.strength << ",\n"
|
||
|
<< " \"speed\": " << f.speed << ",\n"
|
||
|
<< " \"magic\": " << f.magic << ",\n"
|
||
|
<< "}";
|
||
|
return os;
|
||
|
}
|