From 8baccd8fd71ea22818c3c0ee25edf33f6b0f4e33 Mon Sep 17 00:00:00 2001 From: Peisong Xiao Date: Wed, 24 Jul 2024 13:41:51 -0400 Subject: [PATCH] fixed dragon's ranged attack --- src/enemies/dragon.cc | 3 +++ src/enemy.cc | 5 ----- src/game.cc | 6 +++++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/enemies/dragon.cc b/src/enemies/dragon.cc index 41fe497..d721e83 100644 --- a/src/enemies/dragon.cc +++ b/src/enemies/dragon.cc @@ -16,6 +16,9 @@ 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, ""}; } diff --git a/src/enemy.cc b/src/enemy.cc index f1ce193..4400851 100644 --- a/src/enemy.cc +++ b/src/enemy.cc @@ -3,7 +3,6 @@ #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, @@ -18,10 +17,6 @@ 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) { diff --git a/src/game.cc b/src/game.cc index 79ba08e..36586de 100644 --- a/src/game.cc +++ b/src/game.cc @@ -2,6 +2,7 @@ #include "constants.h" #include "pc.h" +#include "enemies/dragon.h" game::game(const enum race starting_race, const feature enabled_features, @@ -90,7 +91,10 @@ character *game::move_enemies() { continue; } - if (the_world && !is_adjacent(ch->get_pos(), player->get_pos())) + if (the_world && !(is_adjacent(ch->get_pos(), player->get_pos()) || + (ch->get_race() == DRAGON && + is_adjacent(static_cast(ch)->get_guards(), + player->get_pos())))) continue; bool hostile = ch->get_race() == MERCHANT ?