#ifndef __ENEMY_H__
#define __ENEMY_H__

#include "characters.h"

class enemy_base : public character {
private:
        const static int BIG_NUMBER = 500;
        const static int DIST_THRESHOLD_SQR = 3 * 3;
protected:
        const int room_num;

        std::string abbrev;
public:
        enemy_base(RNG *rng, const feature enabled_features,
                   const enum race &nrace, const position &pos,
                   const int gen_room_num, std::string abbrev);

        int get_room_num() const;

        virtual long_result act(level *lvl, character *pc, bool hostile = true);

        virtual long_result attack(character *ch) override;
        virtual long_result get_hit(character *ch, const int tATK,
                                    const fraction &hit_rate) override;

        void print(output *out) override;

        virtual std::string get_abbrev() const override;

        virtual int dies(level *lvl);
};

typedef std::vector<enemy_base *> enemy_list;

enemy_base *get_enemy_at(const position &pos, const enemy_list &elist);

#endif
