diff --git a/src/Makefile b/src/Makefile index e6ac7c4..897e856 100644 --- a/src/Makefile +++ b/src/Makefile @@ -8,7 +8,7 @@ ########## Variables ########## CXX = g++ # compiler -CXXFLAGS = -std=c++20 -g -Wall -Wold-style-cast -MMD -O0 # compiler flags +CXXFLAGS = -std=c++20 -g -Wall -MMD -O0 # compiler flags MAKEFILE_NAME = ${firstword ${MAKEFILE_LIST}} # makefile name SOURCES = $(wildcard *.cc) $(wildcard */*.cc) # source files (*.cc) diff --git a/src/enemies/dragon.cc b/src/enemies/dragon.cc index 3a5d803..41fe497 100644 --- a/src/enemies/dragon.cc +++ b/src/enemies/dragon.cc @@ -26,3 +26,7 @@ int dragon::dies(level *lvl) { return 0; } + +position dragon::get_guards() const { + return guards; +} diff --git a/src/enemies/dragon.h b/src/enemies/dragon.h index f7955d6..c2d1359 100644 --- a/src/enemies/dragon.h +++ b/src/enemies/dragon.h @@ -11,6 +11,7 @@ public: const char *get_race_name() const override; long_result act(level *lvl, character *pc, bool hostile) override; int dies(level *lvl) override; + position get_guards() const; }; #endif diff --git a/src/enemy.cc b/src/enemy.cc index 4400851..f1ce193 100644 --- a/src/enemy.cc +++ b/src/enemy.cc @@ -3,6 +3,7 @@ #include "constants.h" #include "player.h" #include "level.h" +#include "enemies/dragon.h" enemy_base::enemy_base(RNG *rng, const feature enabled_features, const enum race &nrace, const position &pos, @@ -17,6 +18,10 @@ int enemy_base::get_room_num() const { long_result enemy_base::act(level *lvl, character *pc, bool hostile) { if (is_adjacent(pos, pc->get_pos()) && hostile) return attack(pc); + else if (race == DRAGON && + is_adjacent(static_cast(this)->get_guards(), + pc->get_pos())) + return attack(pc); if (enabled_features & FEATURE_ENEMIES_CHASE && hostile && distance_sqr(pos, pc->get_pos()) <= DIST_THRESHOLD_SQR) {