#include "dragon.h"

#include "constants.h"
#include "level.h"

dragon::dragon(RNG *rng, const feature enabled_features, const position &pos,
               const int gen_room_num, const position &guards):
        enemy_base{rng, enabled_features, DRAGON, pos, gen_room_num, "D"},
        guards{guards} {}

const char *dragon::get_race_name() const {
        return "Dragon";
}

long_result dragon::act(level *lvl, character *pc, bool hostile) {
        if (is_adjacent(pos, pc->get_pos()) && hostile)
                return attack(pc);

        if (is_adjacent(guards, pc->get_pos()))
                return attack(pc);

        return {NOTHING, ""};
}

int dragon::dies(level *lvl) {
        for (auto &g : lvl->get_glist())
                if (g.get_pos() == guards)
                        g.unlock();

        return 0;
}

position dragon::get_guards() const {
        return guards;
}
