added troll class, cleaned up shade, vampire, and goblin classes

This commit is contained in:
Derek Tan
2024-07-14 02:03:20 -04:00
parent b183fcec7f
commit a521c860df
9 changed files with 64 additions and 12 deletions

36
src/troll.cc Normal file
View File

@ -0,0 +1,36 @@
#include "troll.h"
troll::troll(RNG *rng, const position &pos):
character{rng, race::rtroll, pos} {
gold = 0;
hostile = true;
}
result troll::attack(const direction dir, character_list &chlist) {
position tmp{pos + MOVE[dir]};
if (HP + REGAIN_HP > HP_CAP) {
HP = HP_CAP;
} else {
HP += REGAIN_HP;
}
for (auto &ch : chlist)
if (tmp == ch->get_position()) {
auto res = ch->get_hit(race, ATK, base_hit_rate);
return res;
}
return result::fine;
}
result troll::get_hit(const enum race &race, const int atk,
const fraction hitrate) {
if (rng->trial(hitrate))
HP = std::max(HP - calc_dmg(atk, DEF), 0);
if (HP == 0)
return result::died;
return result::hit;
}