diff --git a/src/arguments.cc b/src/arguments.cc index 538dcf3..3398a7d 100644 --- a/src/arguments.cc +++ b/src/arguments.cc @@ -168,9 +168,8 @@ void print_args_list() { static const char *ARGS_LIST = "-n : Use ncurses for I/O\n\ -r : Randomly generate maps\n\ -m : Enabled a main menu + options\n\ --c : Enemies chase the player (through doors and up stairs)\n\ --C : Give things better coloring\n\ --i : Enable inventory (player can walk on potions)\n\ +-c : Enemies chase the player (CAUTION: THEY CAN REALLY CHASE!!!)\n\ +-i : Enable inventory (player can pick up potions)\n\ -t : Enable throw\n\ -R : Enable revisiting levels\n\ -e : Enable extra potions and races\n\ diff --git a/src/enemies/elf.cc b/src/enemies/elf.cc index 90117b0..1d8b244 100644 --- a/src/enemies/elf.cc +++ b/src/enemies/elf.cc @@ -4,10 +4,10 @@ elf::elf(RNG *rng, const feature enabled_features, const position &pos, const int gen_room_num): - enemy_base{rng, enabled_features, relf, pos, gen_room_num, "H"} {} + enemy_base{rng, enabled_features, relf, pos, gen_room_num, "E"} {} void elf::print(display *out) { - out->print_char(pos, 'H', COLOR_PAIR(COLOR_RED)); + out->print_char(pos, 'E', COLOR_PAIR(COLOR_RED)); } const char *elf::get_race_name() const { diff --git a/src/enemy.cc b/src/enemy.cc index 463dbb8..d94f9a2 100644 --- a/src/enemy.cc +++ b/src/enemy.cc @@ -20,7 +20,7 @@ long_result enemy_base::act(level *lvl, character *pc, bool hostile) { if (is_adjacent(pos, pc->get_pos()) && hostile) return attack(pc); - if (enabled_features & FEATURE_ENEMIES_CHASE && + if (enabled_features & FEATURE_ENEMIES_CHASE && hostile && distance_sqr(pos, pc->get_pos()) <= DIST_THRESHOLD_SQR) { position tmp; position target = {BIG_NUMBER, BIG_NUMBER}; @@ -28,8 +28,7 @@ long_result enemy_base::act(level *lvl, character *pc, bool hostile) { for (int i = 0; i < DIRECTION_CNT; ++i) { tmp = pos + MOVE[i]; - if (lvl->get_room(tmp) == room_num && - lvl->is_available(tmp) && + if (lvl->is_available(tmp) && distance_sqr(tmp, pc->get_pos()) < distance_sqr(target, pc->get_pos())) target = tmp; @@ -43,7 +42,8 @@ long_result enemy_base::act(level *lvl, character *pc, bool hostile) { position choices[DIRECTION_CNT]; for (int i = 0; i < DIRECTION_CNT; ++i) - if (lvl->get_room(pos + MOVE[i]) == room_num && + if (((enabled_features & FEATURE_ENEMIES_CHASE) ? + true : lvl->get_room(pos + MOVE[i]) == room_num ) && lvl->is_available(pos + MOVE[i])) { choices[choices_cnt] = pos + MOVE[i]; ++choices_cnt; diff --git a/src/enemy.h b/src/enemy.h index 2f11c63..e43fd32 100644 --- a/src/enemy.h +++ b/src/enemy.h @@ -6,7 +6,7 @@ class enemy_base : public character { private: const static int BIG_NUMBER = 500; - const static int DIST_THRESHOLD_SQR = 8 * 8; + const static int DIST_THRESHOLD_SQR = 3 * 3; protected: const int room_num;