#include "angband.h"
#include "world.h"
+#include "quest.h"
+#include "artifact.h"
+#include "avatar.h"
/*!
* @brief 現在の修正後能力値を3~17及び18/xxx形式に変換する / Converts stat num into a six-char (right justified) string
* @param col 描画行
* @return なし
*/
-static void prt_field(cptr info, TERM_LEN row, TERM_LEN col)
+static void prt_field(concptr info, TERM_LEN row, TERM_LEN col)
{
/* Dump 13 spaces to clear */
c_put_str(TERM_WHITE, " ", row, col);
* @brief 現在のマップ名を返す /
* @return マップ名の文字列参照ポインタ
*/
-cptr map_name(void)
+concptr map_name(void)
{
if (p_ptr->inside_quest && is_fixed_quest_idx(p_ptr->inside_quest)
&& (quest[p_ptr->inside_quest].flags & QUEST_FLAG_PRESET))
*/
static void prt_dungeon(void)
{
- cptr dungeon_name;
+ concptr dungeon_name;
TERM_LEN col;
/* Dump 13 spaces to clear */
static struct {
TERM_COLOR attr;
- cptr sstr;
- cptr lstr;
+ concptr sstr;
+ concptr lstr;
} bar[]
#ifdef JP
= {
{
if (IS_FLG(i))
{
- cptr str;
+ concptr str;
if (space == 2) str = bar[i].lstr;
else str = bar[i].sstr;
*/
static void prt_title(void)
{
- cptr p = "";
+ concptr p = "";
GAME_TEXT str[14];
if (p_ptr->wizard)
/*
MONRACE_IDX r_idx = m_ptr->ap_r_idx;
monster_race* r_ptr = &r_info[r_idx];
- cptr name = (r_name + r_ptr->name);
- cptr ename = (r_name + r_ptr->name);
+ concptr name = (r_name + r_ptr->name);
+ concptr ename = (r_name + r_ptr->name);
//ミミック類や「それ」等は、一覧に出てはいけない
if(r_ptr->flags1&RF1_CHAR_CLEAR)continue;
if((r_ptr->flags1&RF1_NEVER_MOVE)&&(r_ptr->flags2&RF2_CHAR_MULTI))continue;
int bonus = 0;
- cptr p;
+ concptr p;
/* Hack -- must be literate */
if (!mp_ptr->spell_book) return;
*/
void calc_bonuses(void)
{
- int i, j, hold, neutral[2];
- int new_speed;
- int default_hand = 0;
- int empty_hands_status = empty_hands(TRUE);
- int extra_blows[2];
- object_type *o_ptr;
+ int i, j, hold, neutral[2];
+ int new_speed;
+ int default_hand = 0;
+ int empty_hands_status = empty_hands(TRUE);
+ int extra_blows[2];
+ object_type *o_ptr;
BIT_FLAGS flgs[TR_FLAG_SIZE];
- bool omoi = FALSE;
- bool yoiyami = FALSE;
- bool down_saving = FALSE;
+ bool omoi = FALSE;
+ bool yoiyami = FALSE;
+ bool down_saving = FALSE;
#if 0
- bool have_dd_s = FALSE, have_dd_t = FALSE;
+ bool have_dd_s = FALSE, have_dd_t = FALSE;
#endif
- bool have_sw = FALSE, have_kabe = FALSE;
- bool easy_2weapon = FALSE;
- bool riding_levitation = FALSE;
+ bool have_sw = FALSE, have_kabe = FALSE;
+ bool easy_2weapon = FALSE;
+ bool riding_levitation = FALSE;
OBJECT_IDX this_o_idx, next_o_idx = 0;
const player_race *tmp_rp_ptr;
bool old_see_inv = p_ptr->see_inv;
bool old_mighty_throw = p_ptr->mighty_throw;
+ /* Current feature under player. */
+ feature_type *f_ptr = &f_info[cave[p_ptr->y][p_ptr->x].feat];
+
/* Save the old armor class */
- s16b old_dis_ac = p_ptr->dis_ac;
- s16b old_dis_to_a = p_ptr->dis_to_a;
+ ARMOUR_CLASS old_dis_ac = p_ptr->dis_ac;
+ ARMOUR_CLASS old_dis_to_a = p_ptr->dis_to_a;
/* Clear extra blows/shots */
p_ptr->resist_blind = FALSE;
p_ptr->resist_neth = FALSE;
p_ptr->resist_time = FALSE;
+ p_ptr->resist_water = FALSE;
p_ptr->resist_fear = FALSE;
p_ptr->reflect = FALSE;
p_ptr->sh_fire = FALSE;
p_ptr->resist_pois = TRUE;
p_ptr->hold_exp = TRUE;
break;
+ case RACE_MERFOLK:
+ p_ptr->resist_water = TRUE;
+ break;
default:
/* Do nothing */
;
/* Sexy Gal */
if (p_ptr->pseikaku == SEIKAKU_SEXY) p_ptr->cursed |= (TRC_AGGRAVATE);
+
if (p_ptr->pseikaku == SEIKAKU_NAMAKE) p_ptr->to_m_chance += 10;
if (p_ptr->pseikaku == SEIKAKU_KIREMONO) p_ptr->to_m_chance -= 3;
if ((p_ptr->pseikaku == SEIKAKU_GAMAN) || (p_ptr->pseikaku == SEIKAKU_CHIKARA)) p_ptr->to_m_chance++;
+ if (p_ptr->pseikaku == SEIKAKU_CHARGEMAN)
+ {
+ p_ptr->to_m_chance += 5;
+ p_ptr->resist_conf = TRUE;
+ }
+
/* Lucky man */
if (p_ptr->pseikaku == SEIKAKU_LUCKY) p_ptr->muta3 |= MUT3_GOOD_LUCK;
if (object_is_cursed(o_ptr)) p_ptr->cursed |= TRC_TELEPORT;
else
{
- cptr insc = quark_str(o_ptr->inscription);
+ concptr insc = quark_str(o_ptr->inscription);
if (o_ptr->inscription && my_strchr(insc, '.'))
{
}
}
+ /* Shield skill bonus */
+ if (object_is_armour(&inventory[INVEN_RARM]) || object_is_armour(&inventory[INVEN_LARM]))
+ {
+ p_ptr->ac += p_ptr->skill_exp[GINOU_SHIELD] * (1 + p_ptr->lev / 22) / 2000;
+ p_ptr->dis_ac += p_ptr->skill_exp[GINOU_SHIELD] * (1 + p_ptr->lev / 22) / 2000;
+ }
+
if (old_mighty_throw != p_ptr->mighty_throw)
{
/* Redraw average damege display of Shuriken */
/* Searching slows the player down */
if (p_ptr->action == ACTION_SEARCH) new_speed -= 10;
+ /* Feature bonus */
+ if(p_ptr->prace == RACE_MERFOLK)
+ {
+ if (have_flag(f_ptr->flags, FF_WATER))
+ {
+ new_speed += (2 + p_ptr->lev / 10);
+ }
+ else if (!p_ptr->levitation)
+ {
+ new_speed -= 2;
+ }
+ }
+
+
/* Actual Modifier Bonuses (Un-inflate stat bonuses) */
p_ptr->to_a += ((int)(adj_dex_ta[p_ptr->stat_ind[A_DEX]]) - 128);
p_ptr->to_d[0] += ((int)(adj_str_td[p_ptr->stat_ind[A_STR]]) - 128);