From ca3481028e5aabc4cb7ac5e48198fc6346eb7e2a Mon Sep 17 00:00:00 2001 From: Derek Tan Date: Sat, 13 Jul 2024 19:24:54 -0400 Subject: [PATCH 1/3] astylerc automated formatting --- src/map.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/map.cc b/src/map.cc index 24f64e8..03d30bb 100644 --- a/src/map.cc +++ b/src/map.cc @@ -277,7 +277,7 @@ std::vector game_map::distr_rooms(RNG *rng, if (l == r) { result.push_back({ 0, rng->rand_under(ACTUAL_MAP_WIDTH - - room_dims[l].first.x + 1), + room_dims[l].first.x + 1), room_dims[l].first.x, room_dims[l].first.y, {0, 0}, {0, 0}}); continue; From b183fcec7fbb56fbb764069f4ec6b1cf455d1a56 Mon Sep 17 00:00:00 2001 From: Derek Tan Date: Sun, 14 Jul 2024 01:27:57 -0400 Subject: [PATCH 2/3] moved uml.md to docs/archive/ --- docs/{ => archive}/uml.md | 5 +++++ 1 file changed, 5 insertions(+) rename docs/{ => archive}/uml.md (83%) diff --git a/docs/uml.md b/docs/archive/uml.md similarity index 83% rename from docs/uml.md rename to docs/archive/uml.md index 3d54d2c..32a714e 100644 --- a/docs/uml.md +++ b/docs/archive/uml.md @@ -2,6 +2,7 @@ ## Class Diagram + + +Archived. Please see new UML diagram uploaded in chats. Thanks! + From a521c860dfae6114510e8cf2de9b2db7b49ab64a Mon Sep 17 00:00:00 2001 From: Derek Tan Date: Sun, 14 Jul 2024 02:03:20 -0400 Subject: [PATCH 3/3] added troll class, cleaned up shade, vampire, and goblin classes --- src/constants.h | 4 +++- src/goblin.cc | 6 ++---- src/goblin.h | 1 + src/races.h | 3 ++- src/shade.cc | 3 --- src/troll.cc | 36 ++++++++++++++++++++++++++++++++++++ src/troll.h | 18 ++++++++++++++++++ src/vampire.cc | 4 +--- src/vampire.h | 1 + 9 files changed, 64 insertions(+), 12 deletions(-) create mode 100644 src/troll.cc create mode 100644 src/troll.h diff --git a/src/constants.h b/src/constants.h index 2e696bd..338652e 100644 --- a/src/constants.h +++ b/src/constants.h @@ -33,7 +33,9 @@ enum stat_name {HP, ATK, DEF, hostile}; const int RACE_CNT = 5; // TODO: update as you go -enum race {rshade = 0, rvampire, rgoblin, rdrow, rdragon /* TODO: fill out the other races (including enemies) */}; +// TODO: Update races as you go +// PC races [x], Enemy races [x], other? [ ] +enum race {rshade = 0, rdrow, rvampire, rtroll, rgoblin, rhuman, rdwarf, relf, rorc, rmerchant, rdragon, rhalfling}; // TODO: fill out the other races (including enemies) const int MAX_HP[RACE_CNT] = {125, INF, 110, 150, 150}; diff --git a/src/goblin.cc b/src/goblin.cc index 9abc4ac..fa0a745 100644 --- a/src/goblin.cc +++ b/src/goblin.cc @@ -1,9 +1,7 @@ #include "goblin.h" -#include -#include goblin::goblin(RNG *rng, const position &pos): - character{rng, race::rshade, pos} { + character{rng, race::rgoblin, pos} { gold = 0; hostile = true; } @@ -27,7 +25,7 @@ result goblin::attack(const direction dir, character_list &chlist) { result goblin::get_hit(const enum race &race, const int atk, const fraction hitrate) { - if (rng->trial(hitrate)) + if (rng->trial(hitrate)) HP = std::max(HP - calc_dmg(atk, DEF), 0); if (HP == 0) diff --git a/src/goblin.h b/src/goblin.h index a1d81cf..460fe9e 100644 --- a/src/goblin.h +++ b/src/goblin.h @@ -1,5 +1,6 @@ #ifndef __GOBLIN_H__ #define __GOBLIN_H__ + #include "characters.h" class goblin final: public character { diff --git a/src/races.h b/src/races.h index ddd0058..55b5a8a 100644 --- a/src/races.h +++ b/src/races.h @@ -2,8 +2,9 @@ #define __RACES_H__ #include "shade.h" -#include "goblin.h" #include "vampire.h" +#include "troll.h" +#include "goblin.h" #include "dragon.h" #endif diff --git a/src/shade.cc b/src/shade.cc index 9fcac64..ad3dbb5 100644 --- a/src/shade.cc +++ b/src/shade.cc @@ -1,8 +1,5 @@ #include "shade.h" -#include -#include - shade::shade(RNG *rng, const position &pos): character{rng, race::rshade, pos} { gold = 0; diff --git a/src/troll.cc b/src/troll.cc new file mode 100644 index 0000000..61a5b22 --- /dev/null +++ b/src/troll.cc @@ -0,0 +1,36 @@ +#include "troll.h" + +troll::troll(RNG *rng, const position &pos): + character{rng, race::rtroll, pos} { + gold = 0; + hostile = true; +} + +result troll::attack(const direction dir, character_list &chlist) { + position tmp{pos + MOVE[dir]}; + + if (HP + REGAIN_HP > HP_CAP) { + HP = HP_CAP; + } else { + HP += REGAIN_HP; + } + + for (auto &ch : chlist) + if (tmp == ch->get_position()) { + auto res = ch->get_hit(race, ATK, base_hit_rate); + return res; + } + + return result::fine; +} + +result troll::get_hit(const enum race &race, const int atk, + const fraction hitrate) { + if (rng->trial(hitrate)) + HP = std::max(HP - calc_dmg(atk, DEF), 0); + + if (HP == 0) + return result::died; + + return result::hit; +} diff --git a/src/troll.h b/src/troll.h new file mode 100644 index 0000000..d144db3 --- /dev/null +++ b/src/troll.h @@ -0,0 +1,18 @@ +#ifndef __TROLL_H__ +#define __TROLL_H__ + +#include "characters.h" + +class troll final: public character { + static const int REGAIN_HP = 5; + static const int HP_CAP = 120; +public: + troll(RNG *rng, const position &pos); + virtual result attack(const direction dir, + character_list &chlist) override; + virtual result get_hit(const enum race &race, const int afk, + const fraction hit_rate) override; + +}; + +#endif diff --git a/src/vampire.cc b/src/vampire.cc index 705a69f..79c27b1 100644 --- a/src/vampire.cc +++ b/src/vampire.cc @@ -1,9 +1,7 @@ #include "vampire.h" -#include -#include vampire::vampire(RNG *rng, const position &pos): - character{rng, race::rshade, pos} { + character{rng, race::rvampire, pos} { gold = 0; hostile = true; } diff --git a/src/vampire.h b/src/vampire.h index acb1a01..b7ccf6c 100644 --- a/src/vampire.h +++ b/src/vampire.h @@ -1,5 +1,6 @@ #ifndef __VAMPIRE_H__ #define __VAMPIRE_H__ + #include "characters.h" class vampire final: public character {