cave_type *c_ptr;
if (!get_rep_dir(&dir, FALSE)) return FALSE;
- y = py + ddy[dir];
- x = px + ddx[dir];
+ y = p_ptr->y + ddy[dir];
+ x = p_ptr->x + ddx[dir];
c_ptr = &cave[y][x];
if (!have_flag(f_info[get_feat_mimic(c_ptr)].flags, FF_CAN_DIG))
q_ptr = &forge;
/* Hack -- Give the player some small firestones */
- object_prep(q_ptr, lookup_kind(TV_SHOT, m_bonus(1, p_ptr->lev) + 1));
+ object_prep(q_ptr, lookup_kind(TV_SHOT, (OBJECT_SUBTYPE_VALUE)m_bonus(1, p_ptr->lev) + 1));
q_ptr->number = (byte)rand_range(15,30);
object_aware(q_ptr);
object_known(q_ptr);
/**********Create arrows*********/
else if (ext == 2)
{
- int item;
+ OBJECT_IDX item;
cptr q, s;
s16b slot;
q_ptr = &forge;
/* Hack -- Give the player some small firestones */
- object_prep(q_ptr, lookup_kind(TV_ARROW, m_bonus(1, p_ptr->lev)+ 1));
+ object_prep(q_ptr, lookup_kind(TV_ARROW, (OBJECT_SUBTYPE_VALUE)m_bonus(1, p_ptr->lev)+ 1));
q_ptr->number = (byte)rand_range(5, 10);
object_aware(q_ptr);
object_known(q_ptr);
/**********Create bolts*********/
else if (ext == 3)
{
- int item;
+ OBJECT_IDX item;
cptr q, s;
s16b slot;
q_ptr = &forge;
/* Hack -- Give the player some small firestones */
- object_prep(q_ptr, lookup_kind(TV_BOLT, m_bonus(1, p_ptr->lev)+1));
+ object_prep(q_ptr, lookup_kind(TV_BOLT, (OBJECT_SUBTYPE_VALUE)m_bonus(1, p_ptr->lev)+1));
q_ptr->number = (byte)rand_range(4, 8);
object_aware(q_ptr);
object_known(q_ptr);
*/
bool gain_magic(void)
{
- int item;
- int pval;
+ OBJECT_IDX item;
+ PARAMETER_VALUE pval;
int ext = 0;
cptr q, s;
object_type *o_ptr;
if (o_ptr->tval == TV_ROD)
{
- p_ptr->magic_num2[o_ptr->sval + ext] += o_ptr->number;
+ p_ptr->magic_num2[o_ptr->sval + ext] += (MAGIC_NUM2)o_ptr->number;
if (p_ptr->magic_num2[o_ptr->sval + ext] > 99) p_ptr->magic_num2[o_ptr->sval + ext] = 99;
}
else
gain_num = (gain_num/3 + randint0(gain_num/3)) / 256;
if (gain_num < 1) gain_num = 1;
}
- p_ptr->magic_num2[o_ptr->sval + ext] += gain_num;
+ p_ptr->magic_num2[o_ptr->sval + ext] += (MAGIC_NUM2)gain_num;
if (p_ptr->magic_num2[o_ptr->sval + ext] > 99) p_ptr->magic_num2[o_ptr->sval + ext] = 99;
p_ptr->magic_num1[o_ptr->sval + ext] += pval * 0x10000;
if (p_ptr->magic_num1[o_ptr->sval + ext] > 99 * 0x10000) p_ptr->magic_num1[o_ptr->sval + ext] = 99 * 0x10000;
floor_item_describe(0 - item);
floor_item_optimize(0 - item);
}
- energy_use = 100;
+ p_ptr->energy_use = 100;
return TRUE;
}
struct power_desc_type
{
char name[40];
- int level;
+ PLAYER_LEVEL level;
int cost;
int stat;
int fail;
*/
static int racial_chance(power_desc_type *pd_ptr)
{
- s16b min_level = pd_ptr->level;
+ PLAYER_LEVEL min_level = pd_ptr->level;
int difficulty = pd_ptr->fail;
int i;
msg_format(_("この能力を使用するにはレベル %d に達していなければなりません。",
"You need to attain level %d to use this power."), min_level);
- energy_use = 0;
+ p_ptr->energy_use = 0;
return 0;
}
else if (p_ptr->confused)
{
msg_print(_("混乱していてその能力は使えない。", "You are too confused to use this power."));
- energy_use = 0;
+ p_ptr->energy_use = 0;
return 0;
}
{
if (!get_check(_("本当に今の衰弱した状態でこの能力を使いますか?", "Really use the power in your weakened state? ")))
{
- energy_use = 0;
+ p_ptr->energy_use = 0;
return 0;
}
}
}
/* take time and pay the price */
- energy_use = 100;
+ p_ptr->energy_use = 100;
/* Success? */
if (randint1(p_ptr->stat_cur[use_stat]) >=
* @brief レイシャル・パワー発動時に口を使う継続的な詠唱処理を中断する
* @return なし
*/
-void ratial_stop_mouth()
+void ratial_stop_mouth(void)
{
if (music_singing_any()) stop_singing();
if (hex_spelling_any()) stop_hex_spell_all();
for (i = 0; i < 6; i++)
{
dir = randint0(8);
- y = py + ddy_ddd[dir];
- x = px + ddx_ddd[dir];
+ y = p_ptr->y + ddy_ddd[dir];
+ x = p_ptr->x + ddx_ddd[dir];
c_ptr = &cave[y][x];
/* Hack -- attack monsters */
if (p_ptr->realm1 == REALM_HEX)
{
bool retval = stop_hex_spell();
- if (retval) energy_use = 10;
+ if (retval) p_ptr->energy_use = 10;
return (retval);
}
case CLASS_MAGE:
int x, y;
if (!get_rep_dir(&dir, FALSE)) return FALSE;
- y = py + ddy[dir];
- x = px + ddx[dir];
+ y = p_ptr->y + ddy[dir];
+ x = p_ptr->x + ddx[dir];
if (cave[y][x].m_idx)
{
py_attack(y, x, 0);
int x, y;
if (!get_rep_dir(&dir, FALSE)) return FALSE;
- y = py + ddy[dir];
- x = px + ddx[dir];
+ y = p_ptr->y + ddy[dir];
+ x = p_ptr->x + ddx[dir];
if (cave[y][x].m_idx)
{
if (one_in_(2))
case CLASS_BARD:
{
/* Singing is already stopped */
- if (!p_ptr->magic_num1[0] && !p_ptr->magic_num1[1]) return FALSE;
+ if (!SINGING_SONG_EFFECT(p_ptr) && !INTERUPTING_SONG_EFFECT(p_ptr)) return FALSE;
stop_singing();
- energy_use = 10;
+ p_ptr->energy_use = 10;
break;
}
case CLASS_RED_MAGE:
{
set_action(ACTION_LEARN);
}
- energy_use = 0;
+ p_ptr->energy_use = 0;
break;
}
case CLASS_CAVALRY:
msg_print(_("今はペットを操ることに集中していないと。", "You need concentration on the pets now."));
return FALSE;
}
- if (is_mirror_grid(&cave[py][px]))
+ if (is_mirror_grid(&cave[p_ptr->y][p_ptr->x]))
{
msg_print(_("少し頭がハッキリした。", "You feel your head clear a little."));
}
else
{
- cave_type *c_ptr = &cave[py][px];
+ cave_type *c_ptr = &cave[p_ptr->y][p_ptr->x];
feature_type *f_ptr = &f_info[c_ptr->feat];
if (!have_flag(f_ptr->flags, FF_PROJECT) ||
}
- energy_use = 0;
+ p_ptr->energy_use = 0;
break;
}
msg_format("You breathe %s.",((type == GF_NETHER) ? "nether" : "fire"));
#endif
- fire_ball(type, dir, plev * 3, -(plev / 15) - 1);
+ fire_breath(type, dir, plev * 3, (plev / 15) + 1);
break;
}
case MIMIC_VAMPIRE:
/* Only works on adjacent monsters */
if (!get_rep_dir(&dir, FALSE)) return FALSE; /* was get_aim_dir */
- y = py + ddy[dir];
- x = px + ddx[dir];
+ y = p_ptr->y + ddy[dir];
+ x = p_ptr->x + ddx[dir];
c_ptr = &cave[y][x];
ratial_stop_mouth();
msg_print(_("あなたはニヤリとして牙をむいた...", "You grin and bare your fangs..."));
dummy = plev + randint1(plev) * MAX(1, plev / 10); /* Dmg */
- if (drain_life(dir, dummy))
+ if (hypodynamic_bolt(dir, dummy))
{
if (p_ptr->food < PY_FOOD_FULL)
/* No heal if we are "full" */
object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_RATION));
/* Drop the object from heaven */
- (void)drop_near(q_ptr, -1, py, px);
+ (void)drop_near(q_ptr, -1, p_ptr->y, p_ptr->x);
msg_print(_("食事を料理して作った。", "You cook some food."));
}
break;
/* Only works on adjacent monsters */
if (!get_rep_dir(&dir,FALSE)) return FALSE; /* was get_aim_dir */
- y = py + ddy[dir];
- x = px + ddx[dir];
+ y = p_ptr->y + ddy[dir];
+ x = p_ptr->x + ddx[dir];
c_ptr = &cave[y][x];
ratial_stop_mouth();
msg_print(_("あなたはニヤリとして牙をむいた...", "You grin and bare your fangs..."));
dummy = plev + randint1(plev) * MAX(1, plev / 10); /* Dmg */
- if (drain_life(dir, dummy))
+ if (hypodynamic_bolt(dir, dummy))
{
if (p_ptr->food < PY_FOOD_FULL)
/* No heal if we are "full" */
msg_format("You breathe %s.",((type == GF_NETHER) ? "nether" : "fire"));
#endif
- fire_ball(type, dir, plev * 3, -(plev / 15) - 1);
+ fire_breath(type, dir, plev * 3, (plev / 15) + 1);
}
break;
default:
msg_print(_("この種族は特殊な能力を持っていません。", "This race has no bonus power."));
- energy_use = 0;
+ p_ptr->energy_use = 0;
}
}
return TRUE;
void do_cmd_racial_power(void)
{
power_desc_type power_desc[36];
- int num, i = 0;
- int ask = TRUE;
- int lvl = p_ptr->lev;
+ int num;
+ COMMAND_CODE i = 0;
+ int ask = TRUE;
+ PLAYER_LEVEL lvl = p_ptr->lev;
bool flag, redraw, cast = FALSE;
bool warrior = ((p_ptr->pclass == CLASS_WARRIOR || p_ptr->pclass == CLASS_BERSERKER) ? TRUE : FALSE);
char choice;
if (p_ptr->confused)
{
msg_print(_("混乱していて特殊能力を使えません!", "You are too confused to use any powers!"));
- energy_use = 0;
+ p_ptr->energy_use = 0;
return;
}
power_desc[num++].number = -1;
break;
case MIMIC_VAMPIRE:
- strcpy(power_desc[num].name, _("生命力吸収", "Drain Life"));
+ strcpy(power_desc[num].name, _("吸血", "Vampiric Drain"));
power_desc[num].level = 2;
power_desc[num].cost = 1 + (lvl / 3);
power_desc[num].stat = A_CON;
power_desc[num++].number = -1;
break;
case RACE_VAMPIRE:
- strcpy(power_desc[num].name, _("生命力吸収", "Drain Life"));
+ strcpy(power_desc[num].name, _("吸血", "Vampiric Drain"));
power_desc[num].level = 2;
power_desc[num].cost = 1 + (lvl / 3);
power_desc[num].stat = A_CON;
if (p_ptr->muta1 & MUT1_VAMPIRISM)
{
- strcpy(power_desc[num].name, _("吸血ドレイン", "Vampiric Drain"));
+ strcpy(power_desc[num].name, _("吸血", "Vampiric Drain"));
power_desc[num].level = 2;
power_desc[num].cost = (1 + (lvl / 3));
power_desc[num].stat = A_CON;
case '0':
{
screen_load();
- energy_use = 0;
+ p_ptr->energy_use = 0;
return;
}
ask = (isupper(choice));
/* Lowercase */
- if (ask) choice = tolower(choice);
+ if (ask) choice = (char)tolower(choice);
/* Extract request */
i = (islower(choice) ? A2I(choice) : -1);
/* Abort if needed */
if (!flag)
{
- energy_use = 0;
+ p_ptr->energy_use = 0;
return;
}
#ifdef ALLOW_REPEAT
p_ptr->window |= (PW_PLAYER | PW_SPELL);
}
}
- else energy_use = 0;
+ else p_ptr->energy_use = 0;
/* Success */
return;