From 535533206f27d8de71a58fa79b3f85cbc1e17cf9 Mon Sep 17 00:00:00 2001 From: Peisong Xiao Date: Thu, 25 Jul 2024 11:26:05 -0400 Subject: [PATCH] fixed: adjacent merchants under The World will now no move unless hostile fixed typo --- src/arguments.cc | 2 +- src/constants.h | 2 +- src/game.cc | 12 ++++++---- src/potions.cc | 6 ++--- src/potions/berzerk_brew.cc | 24 +++++++++++++++++++ src/potions/{bezerk_brew.h => berzerk_brew.h} | 8 +++---- src/potions/bezerk_brew.cc | 24 ------------------- 7 files changed, 41 insertions(+), 37 deletions(-) create mode 100644 src/potions/berzerk_brew.cc rename src/potions/{bezerk_brew.h => berzerk_brew.h} (73%) delete mode 100644 src/potions/bezerk_brew.cc diff --git a/src/arguments.cc b/src/arguments.cc index a55028b..c78531f 100644 --- a/src/arguments.cc +++ b/src/arguments.cc @@ -348,7 +348,7 @@ const char *POTIONS_LIST = "\ Gets 3x final ATK multiplier;\n\ Gets 0.5x final DEF multiplier;\n\ Lasts 12 turns.\n\n\ -- Bezerk Brew (BB):\n\ +- Berzerk Brew (BB):\n\ Gets 2x basic ATK multiplier;\n\ Gets 0.5x basic DEF multiplier;\n\ Lasts 15 turns.\n\n\ diff --git a/src/constants.h b/src/constants.h index 61ecc7c..8d8201c 100644 --- a/src/constants.h +++ b/src/constants.h @@ -96,7 +96,7 @@ enum potion_type : int {RESTORE_HEALTH = 0, BOOST_ATK, BOOST_DEF, POISON_HEALTH, WOUND_ATK, WOUND_DEF, CONTINUOUS_RESTORATION, SAVAGE_STRIKE, ECHOING_RESIL, TEMPEST_TANTRUM, - BEZERK_BREW, BORROW_LIFE, + BERZERK_BREW, BORROW_LIFE, FINE_BOOZE, IRONCLAD_WARD }; diff --git a/src/game.cc b/src/game.cc index 36586de..ec29a7f 100644 --- a/src/game.cc +++ b/src/game.cc @@ -91,10 +91,14 @@ character *game::move_enemies() { continue; } - 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())))) + if (ch->get_race() == MERCHANT) { + if (!hostile_merchants) + continue; + } else 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 ? diff --git a/src/potions.cc b/src/potions.cc index e64492e..6235ebf 100644 --- a/src/potions.cc +++ b/src/potions.cc @@ -11,7 +11,7 @@ #include "potions/savage_strike.h" #include "potions/echoing_resilience.h" #include "potions/tempest_tantrum.h" -#include "potions/bezerk_brew.h" +#include "potions/berzerk_brew.h" #include "potions/borrow_life.h" #include "potions/fine_booze.h" #include "potions/ironclad_ward.h" @@ -48,8 +48,8 @@ std::unique_ptr new_potion(potion_type type, const position &pos) { case TEMPEST_TANTRUM: return std::make_unique(pos); - case BEZERK_BREW: - return std::make_unique(pos); + case BERZERK_BREW: + return std::make_unique(pos); case BORROW_LIFE: return std::make_unique(pos); diff --git a/src/potions/berzerk_brew.cc b/src/potions/berzerk_brew.cc new file mode 100644 index 0000000..c132acd --- /dev/null +++ b/src/potions/berzerk_brew.cc @@ -0,0 +1,24 @@ +#include "berzerk_brew.h" + +#include +#include "../constants.h" + +berzerk_brew::berzerk_brew(const position &pos): + potion{potion_type::BERZERK_BREW, DURATION, pos} {} + +void berzerk_brew::apply(const enum race &race, int &HP, int &ATK, + int &DEF, fraction &base_hit_rate) { + if (remaining_duration != 0) { + ATK *= ATK_MUL * (race == DROW ? DROW_POTION_MUL : 1); + DEF *= DEF_MUL * (race == DROW ? DROW_POTION_MUL : 1); + --remaining_duration; + } +} + +int berzerk_brew::get_priority() const { + return CALC_MID; +} + +const char *berzerk_brew::get_name() const { + return "BB"; +} diff --git a/src/potions/bezerk_brew.h b/src/potions/berzerk_brew.h similarity index 73% rename from src/potions/bezerk_brew.h rename to src/potions/berzerk_brew.h index 803d2d3..7942298 100644 --- a/src/potions/bezerk_brew.h +++ b/src/potions/berzerk_brew.h @@ -1,14 +1,14 @@ -#ifndef __BEZERK_BREW_H__ -#define __BEZERK_BREW_H__ +#ifndef __BERZERK_BREW_H__ +#define __BERZERK_BREW_H__ #include "../potion.h" -class bezerk_brew final: public potion { +class berzerk_brew final: public potion { static const int ATK_MUL = 2; inline static const float DEF_MUL = 0.5f; static const int DURATION = 15; public: - bezerk_brew(const position &pos); + berzerk_brew(const position &pos); void apply(const enum race &race, int &HP, int &ATK, int &DEF, fraction &base_hit_rate) override; int get_priority() const override; diff --git a/src/potions/bezerk_brew.cc b/src/potions/bezerk_brew.cc deleted file mode 100644 index 4272955..0000000 --- a/src/potions/bezerk_brew.cc +++ /dev/null @@ -1,24 +0,0 @@ -#include "bezerk_brew.h" - -#include -#include "../constants.h" - -bezerk_brew::bezerk_brew(const position &pos): - potion{potion_type::BEZERK_BREW, DURATION, pos} {} - -void bezerk_brew::apply(const enum race &race, int &HP, int &ATK, - int &DEF, fraction &base_hit_rate) { - if (remaining_duration != 0) { - ATK *= ATK_MUL * (race == DROW ? DROW_POTION_MUL : 1); - DEF *= DEF_MUL * (race == DROW ? DROW_POTION_MUL : 1); - --remaining_duration; - } -} - -int bezerk_brew::get_priority() const { - return CALC_MID; -} - -const char *bezerk_brew::get_name() const { - return "BB"; -}