added T-800 as playable character
This commit is contained in:
@ -9,12 +9,12 @@ character::character(RNG *rng, const feature enabled_features,
|
||||
rng{rng}, enabled_features{enabled_features},
|
||||
race{nrace}, HP{STARTING_HP[race]}, pos{pos},
|
||||
ATK{STARTING_ATK[race]}, DEF{STARTING_DEF[race]},
|
||||
base_hit_rate{1, 1}, base_hit_rate_reset{1, 1} {}
|
||||
base_hit_rate{STARTING_HR[race]} {}
|
||||
|
||||
void character::start_turn() {
|
||||
ATK = STARTING_ATK[race];
|
||||
DEF = STARTING_DEF[race];
|
||||
base_hit_rate = base_hit_rate_reset;
|
||||
base_hit_rate = STARTING_HR[race];
|
||||
}
|
||||
|
||||
enum race character::get_race() const {
|
||||
|
@ -56,7 +56,6 @@ protected:
|
||||
int ATK;
|
||||
int DEF;
|
||||
fraction base_hit_rate;
|
||||
fraction base_hit_rate_reset;
|
||||
|
||||
potion_list effects;
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <ncurses.h>
|
||||
#include <string>
|
||||
#include "position.h"
|
||||
#include "fraction.h"
|
||||
|
||||
static const int INF = 0x3F3F3F3F;
|
||||
|
||||
@ -41,27 +42,33 @@ enum game_command : int {game_command_terminate = 0,
|
||||
};
|
||||
|
||||
// Character generation related
|
||||
static const int RACE_CNT = 12;
|
||||
static const int RACE_CNT = 13;
|
||||
enum race : int {rshade = 0, rdrow, rvampire, rtroll,
|
||||
rgoblin, rhuman, rdwarf, relf,
|
||||
rorc, rmerchant, rdragon, rhalfling
|
||||
rorc, rmerchant, rdragon, rhalfling,
|
||||
rt_800
|
||||
};
|
||||
|
||||
static const char CHAR_REP[RACE_CNT] = {
|
||||
's', 'd', 'v', 't', 'g', 'H', 'W', 'E', 'O', 'M', 'D', 'L'
|
||||
's', 'd', 'v', 't', 'g', 'H', 'W', 'E', 'O', 'M', 'D', 'L', 't'
|
||||
};
|
||||
|
||||
static const int MAX_HP[RACE_CNT] = {
|
||||
125, 150, INF, 120, 110, 140, 100, 140, 180, 30, 150, 100
|
||||
125, 150, INF, 120, 110, 140, 100, 140, 180, 30, 150, 100, 500
|
||||
};
|
||||
static const int STARTING_HP[RACE_CNT] = {
|
||||
125, 150, 50, 120, 110, 140, 100, 140, 180, 30, 150, 100
|
||||
125, 150, 50, 120, 110, 140, 100, 140, 180, 30, 150, 100, 500
|
||||
};
|
||||
static const int STARTING_ATK[RACE_CNT] = {
|
||||
25, 25, 25, 25, 15, 20, 20, 30, 30, 70, 20, 15
|
||||
25, 25, 25, 25, 15, 20, 20, 30, 30, 70, 20, 15, 40
|
||||
};
|
||||
static const int STARTING_DEF[RACE_CNT] = {
|
||||
25, 15, 25, 15, 20, 20, 30, 10, 25, 5, 20, 20
|
||||
25, 15, 25, 15, 20, 20, 30, 10, 25, 5, 20, 20, 50
|
||||
};
|
||||
static const fraction STARTING_HR[RACE_CNT] = {
|
||||
{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1},
|
||||
{1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2},
|
||||
{1, 1}
|
||||
};
|
||||
|
||||
|
||||
|
@ -8,9 +8,7 @@ enemy_base::enemy_base(RNG *rng, const feature enabled_features,
|
||||
const enum race &nrace, const position &pos,
|
||||
const int gen_room_num, std::string abbrev):
|
||||
character{rng, enabled_features, nrace, pos},
|
||||
room_num{gen_room_num}, abbrev{abbrev} {
|
||||
base_hit_rate_reset = {1, 2};
|
||||
}
|
||||
room_num{gen_room_num}, abbrev{abbrev} {}
|
||||
|
||||
int enemy_base::get_room_num() const {
|
||||
return room_num;
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include "player/shade.h"
|
||||
#include "player/troll.h"
|
||||
#include "player/vampire.h"
|
||||
#include "player/t_800.h"
|
||||
|
||||
void init_player(RNG *rng, std::unique_ptr<player_base> &pc,
|
||||
const feature enabled_features, const enum race &r) {
|
||||
@ -34,6 +35,10 @@ void init_player(RNG *rng, std::unique_ptr<player_base> &pc,
|
||||
pc = make_unique<vampire>(rng, enabled_features);
|
||||
break;
|
||||
|
||||
case rt_800:
|
||||
pc = make_unique<t_800>(rng, enabled_features);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -39,6 +39,10 @@ long_result player_base::apply(potion *p) {
|
||||
|
||||
apply_effect(p);
|
||||
|
||||
if (race == rt_800)
|
||||
return {result::applied,
|
||||
"PC gets rusty joints (-5 HP). "};
|
||||
|
||||
return {result::applied,
|
||||
(std::string)"PC applied potion of " + p->get_name() + ". "};
|
||||
}
|
||||
|
15
src/player/t_800.cc
Normal file
15
src/player/t_800.cc
Normal file
@ -0,0 +1,15 @@
|
||||
#include "t_800.h"
|
||||
|
||||
#include "../constants.h"
|
||||
|
||||
t_800::t_800(RNG *rng, const feature enabled_features):
|
||||
player_base{rng, enabled_features, race::rt_800} {}
|
||||
|
||||
const char *t_800::get_race_name() const {
|
||||
return "T-800";
|
||||
}
|
||||
|
||||
void t_800::apply_effect(potion *p) {
|
||||
HP -= RUSTY;
|
||||
return;
|
||||
}
|
15
src/player/t_800.h
Normal file
15
src/player/t_800.h
Normal file
@ -0,0 +1,15 @@
|
||||
#ifndef __T_800_H__
|
||||
#define __T_800_H__
|
||||
|
||||
#include "../player.h"
|
||||
class potion;
|
||||
|
||||
class t_800 final: public player_base {
|
||||
static const int RUSTY = 5;
|
||||
public:
|
||||
t_800(RNG *rng, const feature enabled_features);
|
||||
const char *get_race_name() const override;
|
||||
void apply_effect(potion *p) override;
|
||||
};
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user