#include "angband.h"
#include "cmd-pet.h"
#include "object-curse.h"
+#include "monsterrace-hook.h"
+#include "objectkind-hook.h"
#define REWARD_CHANCE 10
/* Redraw experience */
p_ptr->redraw |= (PR_EXP);
-
- /* Handle stuff */
handle_stuff();
{
/* Lose a level */
p_ptr->lev--;
-
- /* Update some stuff */
p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
-
- /* Redraw some stuff */
p_ptr->redraw |= (PR_LEV | PR_TITLE);
-
p_ptr->window |= (PW_PLAYER);
-
- /* Handle stuff */
handle_stuff();
}
msg_format(_("レベル %d にようこそ。", "Welcome to level %d."), p_ptr->lev);
- /* Update some stuff */
p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
-
- /* Redraw some stuff */
p_ptr->redraw |= (PR_LEV | PR_TITLE | PR_EXP);
-
p_ptr->window |= (PW_PLAYER | PW_SPELL | PW_INVEN);
/* HPとMPの上昇量を表示 */
level_up = 1;
-
- /* Handle stuff */
handle_stuff();
level_up = 0;
int n;
char tmp[32];
-#ifdef JP
cnv_stat(p_ptr->stat_max[0], tmp);
- prt(format(" a) 腕力 (現在値 %s)", tmp), 2, 14);
+ prt(format(_(" a) 腕力 (現在値 %s)", " a) Str (cur %s)"), tmp), 2, 14);
cnv_stat(p_ptr->stat_max[1], tmp);
- prt(format(" b) 知能 (現在値 %s)", tmp), 3, 14);
+ prt(format(_(" b) 知能 (現在値 %s)", " a) Int (cur %s)"), tmp), 3, 14);
cnv_stat(p_ptr->stat_max[2], tmp);
- prt(format(" c) 賢さ (現在値 %s)", tmp), 4, 14);
+ prt(format(_(" c) 賢さ (現在値 %s)", " a) Wis (cur %s)"), tmp), 4, 14);
cnv_stat(p_ptr->stat_max[3], tmp);
- prt(format(" d) 器用 (現在値 %s)", tmp), 5, 14);
+ prt(format(_(" d) 器用 (現在値 %s)", " a) Dex (cur %s)"), tmp), 5, 14);
cnv_stat(p_ptr->stat_max[4], tmp);
- prt(format(" e) 耐久 (現在値 %s)", tmp), 6, 14);
+ prt(format(_(" e) 耐久 (現在値 %s)", " a) Con (cur %s)"), tmp), 6, 14);
cnv_stat(p_ptr->stat_max[5], tmp);
- prt(format(" f) 魅力 (現在値 %s)", tmp), 7, 14);
- prt("", 8, 14);
- prt(" どの能力値を上げますか?", 1, 14);
-#else
- cnv_stat(p_ptr->stat_max[0], tmp);
- prt(format(" a) Str (cur %s)", tmp), 2, 14);
- cnv_stat(p_ptr->stat_max[1], tmp);
- prt(format(" b) Int (cur %s)", tmp), 3, 14);
- cnv_stat(p_ptr->stat_max[2], tmp);
- prt(format(" c) Wis (cur %s)", tmp), 4, 14);
- cnv_stat(p_ptr->stat_max[3], tmp);
- prt(format(" d) Dex (cur %s)", tmp), 5, 14);
- cnv_stat(p_ptr->stat_max[4], tmp);
- prt(format(" e) Con (cur %s)", tmp), 6, 14);
- cnv_stat(p_ptr->stat_max[5], tmp);
- prt(format(" f) Chr (cur %s)", tmp), 7, 14);
+ prt(format(_(" f) 魅力 (現在値 %s)", " a) Chr (cur %s)"), tmp), 7, 14);
+
prt("", 8, 14);
- prt(" Which stat do you want to raise?", 1, 14);
-#endif
+ prt(_(" どの能力値を上げますか?", " Which stat do you want to raise?"), 1, 14);
+
while(1)
{
choice = inkey();
if ((choice >= 'a') && (choice <= 'f')) break;
}
- for(n = 0; n < 6; n++)
+ for(n = 0; n < A_MAX; n++)
if (n != choice - 'a')
prt("",n+2,14);
if (get_check(_("よろしいですか?", "Are you sure? "))) break;
level_reward = FALSE;
}
- /* Update some stuff */
p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
-
- /* Redraw some stuff */
p_ptr->redraw |= (PR_LEV | PR_TITLE);
-
p_ptr->window |= (PW_PLAYER | PW_SPELL);
-
- /* Handle stuff */
handle_stuff();
}
* Used to allocate proper treasure when "Creeping coins" die
* Note the use of actual "monster names"
*/
-static int get_coin_type(MONRACE_IDX r_idx)
+static OBJECT_SUBTYPE_VALUE get_coin_type(MONRACE_IDX r_idx)
{
/* Analyze monsters */
switch (r_idx)
}
-/*!
- * @brief オブジェクトがクロークかどうかを判定する /
- * Hack -- determine if a template is Cloak
- * @param k_idx 判定したいオブジェクトのベースアイテムID
- * @return オブジェクトがクロークならばTRUEを返す
- */
-static bool kind_is_cloak(KIND_OBJECT_IDX k_idx)
-{
- object_kind *k_ptr = &k_info[k_idx];
-
- /* Analyze the item type */
- if (k_ptr->tval == TV_CLOAK)
- {
- return (TRUE);
- }
-
- /* Assume not good */
- return (FALSE);
-}
-
-
-/*!
- * @brief オブジェクトが竿状武器かどうかを判定する /
- * Hack -- determine if a template is Polearm
- * @param k_idx 判定したいオブジェクトのベースアイテムID
- * @return オブジェクトが竿状武器ならばTRUEを返す
- */
-static bool kind_is_polearm(KIND_OBJECT_IDX k_idx)
-{
- object_kind *k_ptr = &k_info[k_idx];
-
- /* Analyze the item type */
- if (k_ptr->tval == TV_POLEARM)
- {
- return (TRUE);
- }
-
- /* Assume not good */
- return (FALSE);
-}
-
-
-/*!
- * @brief オブジェクトが剣かどうかを判定する /
- * Hack -- determine if a template is Sword
- * @param k_idx 判定したいオブジェクトのベースアイテムID
- * @return オブジェクトが剣ならばTRUEを返す
- */
-static bool kind_is_sword(KIND_OBJECT_IDX k_idx)
-{
- object_kind *k_ptr = &k_info[k_idx];
-
- /* Analyze the item type */
- if ((k_ptr->tval == TV_SWORD) && (k_ptr->sval > 2))
- {
- return (TRUE);
- }
-
- /* Assume not good */
- return (FALSE);
-}
-
-
-/*!
- * @brief オブジェクトが魔法書かどうかを判定する /
- * Hack -- determine if a template is Book
- * @param k_idx 判定したいオブジェクトのベースアイテムID
- * @return オブジェクトが魔法書ならばTRUEを返す
- */
-static bool kind_is_book(KIND_OBJECT_IDX k_idx)
-{
- object_kind *k_ptr = &k_info[k_idx];
-
- /* Analyze the item type */
- if ((k_ptr->tval >= TV_LIFE_BOOK) && (k_ptr->tval <= TV_CRUSADE_BOOK))
- {
- return (TRUE);
- }
-
- /* Assume not good */
- return (FALSE);
-}
-
-
-/*!
- * @brief オブジェクトがベースアイテム時点でGOODかどうかを判定する /
- * Hack -- determine if a template is Good book
- * @param k_idx 判定したいオブジェクトのベースアイテムID
- * @return オブジェクトがベースアイテム時点でGOODなアイテムならばTRUEを返す
- */
-static bool kind_is_good_book(KIND_OBJECT_IDX k_idx)
-{
- object_kind *k_ptr = &k_info[k_idx];
-
- /* Analyze the item type */
- if ((k_ptr->tval >= TV_LIFE_BOOK) && (k_ptr->tval <= TV_CRUSADE_BOOK) && (k_ptr->tval != TV_ARCANE_BOOK) && (k_ptr->sval > 1))
- {
- return (TRUE);
- }
-
- /* Assume not good */
- return (FALSE);
-}
-
-
-/*!
- * @brief オブジェクトが鎧かどうかを判定する /
- * Hack -- determine if a template is Armor
- * @param k_idx 判定したいオブジェクトのベースアイテムID
- * @return オブジェクトが鎧ならばTRUEを返す
- */
-static bool kind_is_armor(KIND_OBJECT_IDX k_idx)
-{
- object_kind *k_ptr = &k_info[k_idx];
-
- /* Analyze the item type */
- if (k_ptr->tval == TV_HARD_ARMOR)
- {
- return (TRUE);
- }
-
- /* Assume not good */
- return (FALSE);
-}
-
-
-/*!
- * @brief オブジェクトが打撃武器かどうかを判定する /
- * Hack -- determine if a template is hafted weapon
- * @param k_idx 判定したいオブジェクトのベースアイテムID
- * @return オブジェクトが打撃武器ならばTRUEを返す
- */
-static bool kind_is_hafted(KIND_OBJECT_IDX k_idx)
-{
- object_kind *k_ptr = &k_info[k_idx];
-
- /* Analyze the item type */
- if (k_ptr->tval == TV_HAFTED)
- {
- return (TRUE);
- }
-
- /* Assume not good */
- return (FALSE);
-}
/*!
* @brief クエストを達成状態にする /
object_type forge;
object_type *o_ptr;
- /* Get the location */
y = m_ptr->fy;
x = m_ptr->fx;
for (i = 0; i < (dun_level / 15)+1; i++)
{
- /* Get local object */
o_ptr = &forge;
object_wipe(o_ptr);
/* Make a great object */
make_object(o_ptr, AM_GOOD | AM_GREAT);
-
- /* Drop it in the dungeon */
(void)drop_near(o_ptr, -1, y, x);
}
}
* @param r_ptr 撃破されたモンスターの種族情報を持つ構造体の参照ポインタ
* @return 撃破されたモンスターの述語
*/
-cptr extract_note_dies(monster_race *r_ptr)
+cptr extract_note_dies(MONRACE_IDX r_idx)
{
+ monster_race *r_ptr = &r_info[r_idx];
/* Some monsters get "destroyed" */
- if (!monster_living(r_ptr))
+ if (!monster_living(r_idx))
{
int i;
*/
void monster_death(MONSTER_IDX m_idx, bool drop_item)
{
- int i, j, y, x;
+ int i, j;
+ POSITION y, x;
int dump_item = 0;
int dump_gold = 0;
-
int number = 0;
monster_type *m_ptr = &m_list[m_idx];
-
monster_race *r_ptr = &r_info[m_ptr->r_idx];
bool visible = ((m_ptr->ml && !p_ptr->image) || (r_ptr->flags1 & RF1_UNIQUE));
p_ptr->update |= (PU_MON_LITE);
}
- /* Get the location */
y = m_ptr->fy;
x = m_ptr->fx;
if (record_named_pet && is_pet(m_ptr) && m_ptr->nickname)
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
do_cmd_write_nikki(NIKKI_NAMED_PET, 3, m_name);
if (arena_info[p_ptr->arena_number].tval)
{
- /* Get local object */
q_ptr = &forge;
/* Prepare to make a prize */
object_prep(q_ptr, lookup_kind(arena_info[p_ptr->arena_number].tval, arena_info[p_ptr->arena_number].sval));
-
apply_magic(q_ptr, object_level, AM_NO_FIXED_ART);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
p_ptr->arena_number++;
if (record_arena)
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
/* Extract monster name */
monster_desc(m_name, m_ptr, MD_IGNORE_HALLU | MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE);
if (!one_in_(5)) corpse = TRUE;
}
}
-
- /* Get local object */
q_ptr = &forge;
/* Prepare to make an object */
apply_magic(q_ptr, object_level, AM_NO_FIXED_ART);
q_ptr->pval = m_ptr->r_idx;
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
for (i = 0; i < 2; i++)
{
- int wy = y, wx = x;
+ POSITION wy = y, wx = x;
bool pet = is_pet(m_ptr);
BIT_FLAGS mode = 0L;
if (pet) mode |= PM_FORCE_PET;
- if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_BLUE_HORROR, mode))
+ if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_BLUE_HORROR, mode, '\0'))
{
- if (player_can_see_bold(wy, wx))
- notice = TRUE;
+ if (player_can_see_bold(wy, wx)) notice = TRUE;
}
}
- if (notice)
- msg_print(_("ピンク・ホラーは分裂した!", "The Pink horror divides!"));
+ if (notice) msg_print(_("ピンク・ホラーは分裂した!", "The Pink horror divides!"));
}
break;
/* Bloodletters of Khorne may drop a blade of chaos */
if (drop_chosen_item && (randint1(100) < 15))
{
- /* Get local object */
q_ptr = &forge;
/* Prepare to make a Blade of Chaos */
object_prep(q_ptr, lookup_kind(TV_SWORD, SV_BLADE_OF_CHAOS));
apply_magic(q_ptr, object_level, AM_NO_FIXED_ART | mo_mode);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
break;
case MON_RAAL:
if (drop_chosen_item && (dun_level > 9))
{
- /* Get local object */
q_ptr = &forge;
object_wipe(q_ptr);
/* Make a book */
make_object(q_ptr, mo_mode);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
break;
BIT_FLAGS mode = 0L;
if (pet) mode |= PM_FORCE_PET;
- if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_DAWN, mode))
+ if (summon_specific((pet ? -1 : m_idx), wy, wx, 100, SUMMON_DAWN, mode, '\0'))
{
if (player_can_see_bold(wy, wx))
msg_print(_("新たな戦士が現れた!", "A new warrior steps forth!"));
case MON_SERPENT:
if (!drop_chosen_item) break;
-
- /* Get local object */
q_ptr = &forge;
/* Mega-Hack -- Prepare to make "Grond" */
/* Mega-Hack -- Actually create "Grond" */
apply_magic(q_ptr, -1, AM_GOOD | AM_GREAT);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
-
- /* Get local object */
q_ptr = &forge;
/* Mega-Hack -- Prepare to make "Chaos" */
/* Mega-Hack -- Actually create "Chaos" */
apply_magic(q_ptr, -1, AM_GOOD | AM_GREAT);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
break;
case MON_B_DEATH_SWORD:
if (drop_chosen_item)
{
- /* Get local object */
q_ptr = &forge;
/* Prepare to make a broken sword */
object_prep(q_ptr, lookup_kind(TV_SWORD, randint1(2)));
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
break;
if (drop_chosen_item && ((m_ptr->r_idx == MON_A_GOLD) ||
((m_ptr->r_idx == MON_A_SILVER) && (r_ptr->r_akills % 5 == 0))))
{
- /* Get local object */
q_ptr = &forge;
/* Prepare to make a Can of Toys */
object_prep(q_ptr, lookup_kind(TV_CHEST, SV_CHEST_KANDUME));
apply_magic(q_ptr, object_level, AM_NO_FIXED_ART);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
break;
case '(':
if (dun_level > 0)
{
- /* Get local object */
q_ptr = &forge;
object_wipe(q_ptr);
/* Make a cloak */
make_object(q_ptr, mo_mode);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
break;
case '/':
if (dun_level > 4)
{
- /* Get local object */
q_ptr = &forge;
object_wipe(q_ptr);
/* Make a poleweapon */
make_object(q_ptr, mo_mode);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
break;
case '[':
if (dun_level > 19)
{
- /* Get local object */
q_ptr = &forge;
object_wipe(q_ptr);
/* Make a hard armor */
make_object(q_ptr, mo_mode);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
break;
case '\\':
if (dun_level > 4)
{
- /* Get local object */
q_ptr = &forge;
object_wipe(q_ptr);
/* Make a hafted weapon */
make_object(q_ptr, mo_mode);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
break;
case '|':
if (m_ptr->r_idx != MON_STORMBRINGER)
{
- /* Get local object */
q_ptr = &forge;
object_wipe(q_ptr);
/* Make a sword */
make_object(q_ptr, mo_mode);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
break;
if (k_idx)
{
- /* Get local object */
q_ptr = &forge;
/* Prepare to make a reward */
object_prep(q_ptr, k_idx);
apply_magic(q_ptr, object_level, AM_NO_FIXED_ART | AM_GOOD);
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
msg_format(_("あなたは%sを制覇した!", "You have conquered %s!"),d_name+d_info[dungeon_type].name);
/* Drop some objects */
for (j = 0; j < number; j++)
{
- /* Get local object */
q_ptr = &forge;
object_wipe(q_ptr);
dump_item++;
}
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
/* It is dead now */
if (m_ptr->hp < 0)
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
if (r_info[m_ptr->r_idx].flags7 & RF7_TANUKI)
{
if (r_ptr->flags2 & RF2_CAN_SPEAK)
{
char line_got[1024];
-
- /* Dump a message */
if (!get_rnd_line(_("mondeath_j.txt", "mondeath.txt"), m_ptr->r_idx, line_got))
{
msg_format("%^s %s", m_name, line_got);
#ifdef WORLD_SCORE
if (m_ptr->r_idx == MON_SERPENT)
{
- /* Make screen dump */
screen_dump = make_screen_dump();
}
#endif
}
/* Death by Physical attack -- non-living monster */
- else if (!monster_living(r_ptr))
+ else if (!monster_living(m_ptr->r_idx))
{
bool explode = FALSE;
*/
void panel_bounds_center(void)
{
- int wid, hgt;
+ TERM_LEN wid, hgt;
get_screen_size(&wid, &hgt);
verify_panel();
p_ptr->update |= (PU_TORCH | PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
-
- /* Forget lite/view */
p_ptr->update |= (PU_UN_VIEW | PU_UN_LITE);
-
- /* Update lite/view */
p_ptr->update |= (PU_VIEW | PU_LITE | PU_MON_LITE);
-
- /* Update monsters */
p_ptr->update |= (PU_MONSTERS);
-
- /* Redraw everything */
p_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
- /* Hack -- update */
handle_stuff();
Term_redraw();
*/
if (can_save) move_cursor_relative(p_ptr->y, p_ptr->x);
- /* Refresh */
Term_fresh();
}
p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_SPELL | PW_PLAYER);
p_ptr->window |= (PW_MESSAGE | PW_OVERHEAD | PW_DUNGEON | PW_MONSTER | PW_OBJECT);
- /* Hack -- update */
handle_stuff();
Term_redraw();
}
panel_bounds_center();
p_ptr->update |= (PU_MONSTERS);
-
p_ptr->redraw |= (PR_MAP);
-
- /* Handle stuff */
handle_stuff();
/* Success */
{
POSITION y = p_ptr->y;
POSITION x = p_ptr->x;
- int wid, hgt;
+ TERM_LEN wid, hgt;
int prow_min;
int pcol_min;
panel_bounds_center();
p_ptr->update |= (PU_MONSTERS);
-
p_ptr->redraw |= (PR_MAP);
-
p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
}
cptr look_mon_desc(monster_type *m_ptr, BIT_FLAGS mode)
{
monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx];
- bool living;
- int perc;
+ bool living;
+ int perc;
cptr desc;
cptr attitude;
cptr clone;
/* Determine if the monster is "living" */
- living = monster_living(ap_r_ptr);
+ living = monster_living(m_ptr->ap_r_idx);
/* Calculate a health "percentage" */
- perc = 100L * m_ptr->hp / m_ptr->maxhp;
+ perc = m_ptr->maxhp > 0 ? 100L * m_ptr->hp / m_ptr->maxhp : 0;
/* Healthy monsters */
if (m_ptr->hp >= m_ptr->maxhp)
{
- /* No damage */
-#ifdef JP
- desc = living ? "無傷" : "無ダメージ";
-#else
- desc = living ? "unhurt" : "undamaged";
-#endif
-
+ desc = living ? _("無傷", "unhurt") : _("無ダメージ", "undamaged");
}
else if (perc >= 60)
{
-#ifdef JP
- desc = living ? "軽傷" : "小ダメージ";
-#else
- desc = living ? "somewhat wounded" : "somewhat damaged";
-#endif
-
+ desc = living ? _("軽傷", "somewhat wounded") : _("小ダメージ", "somewhat damaged");
}
else if (perc >= 25)
{
-#ifdef JP
- desc = living ? "負傷" : "中ダメージ";
-#else
- desc = living ? "wounded" : "damaged";
-#endif
-
+ desc = living ? _("負傷", "wounded") : _("中ダメージ", "damaged");
}
else if (perc >= 10)
{
-#ifdef JP
- desc = living ? "重傷" : "大ダメージ";
-#else
- desc = living ? "badly wounded" : "badly damaged";
-#endif
-
+ desc = living ? _("重傷", "badly wounded") : _("大ダメージ", "badly damaged");
}
else
{
-#ifdef JP
- desc = living ? "半死半生" : "倒れかけ";
-#else
- desc = living ? "almost dead" : "almost destroyed";
-#endif
+ desc = living ? _("半死半生", "almost dead") : _("倒れかけ", "almost destroyed");
}
-
/* Need attitude information? */
if (!(mode & 0x01))
{
attitude = _("", "");
}
-
/* Clone monster? */
if (m_ptr->smart & SM_CLONED)
{
{
return format(_("レベル???, %s%s%s", "Level ???, %s%s%s"), desc, attitude, clone);
}
+
}
for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
{
object_type *o_ptr;
-
- /* Acquire object */
o_ptr = &o_list[this_o_idx];
/* Acquire next object */
/* Hack -- under the player */
if (player_bold(y, x))
{
- /* Description */
#ifdef JP
s1 = "あなたは";
s2 = "の上";
s3 = "にいる";
#else
s1 = "You are ";
-
- /* Preposition */
s2 = "on ";
#endif
}
{
monster_type *m_ptr = &m_list[c_ptr->m_idx];
monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx];
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
bool recall = FALSE;
/* Not boring */
boring = FALSE;
- /* Get the monster name ("a kobold") */
monster_desc(m_name, m_ptr, MD_INDEF_VISIBLE);
-
- /* Hack -- track this monster race */
monster_race_track(m_ptr->ap_r_idx);
-
- /* Hack -- health bar for this monster */
health_track(c_ptr->m_idx);
-
- /* Hack -- handle stuff */
handle_stuff();
/* Interact */
/* Recall */
if (recall)
{
- /* Save */
screen_save();
/* Recall on screen */
/* Command */
query = inkey();
- /* Restore */
screen_load();
/* Normal commands */
/* Scan all objects being carried */
for (this_o_idx = m_ptr->hold_o_idx; this_o_idx; this_o_idx = next_o_idx)
{
- char o_name[MAX_NLEN];
+ GAME_TEXT o_name[MAX_NLEN];
object_type *o_ptr;
-
- /* Acquire object */
o_ptr = &o_list[this_o_idx];
/* Acquire next object */
{
if (floor_num == 1)
{
- char o_name[MAX_NLEN];
+ GAME_TEXT o_name[MAX_NLEN];
object_type *o_ptr;
-
- /* Acquire object */
o_ptr = &o_list[floor_list[0]];
object_desc(o_name, o_ptr, 0);
{
/* Display rough information about items */
#ifdef JP
- sprintf(out_val, "%s %d個のアイテム%s%s ['x'で一覧, %s]",
- s1, (int)floor_num, s2, s3, info);
+ sprintf(out_val, "%s %d個のアイテム%s%s ['x'で一覧, %s]", s1, (int)floor_num, s2, s3, info);
#else
- sprintf(out_val, "%s%s%sa pile of %d items [x,%s]",
- s1, s2, s3, (int)floor_num, info);
+ sprintf(out_val, "%s%s%sa pile of %d items [x,%s]", s1, s2, s3, (int)floor_num, info);
#endif
prt(out_val, 0, 0);
{
int i;
OBJECT_IDX o_idx;
-
- /* Save screen */
screen_save();
/* Display */
/* Prompt */
#ifdef JP
- sprintf(out_val, "%s %d個のアイテム%s%s [Enterで次へ, %s]",
- s1, (int)floor_num, s2, s3, info);
+ sprintf(out_val, "%s %d個のアイテム%s%s [Enterで次へ, %s]", s1, (int)floor_num, s2, s3, info);
#else
- sprintf(out_val, "%s%s%sa pile of %d items [Enter,%s]",
- s1, s2, s3, (int)floor_num, info);
+ sprintf(out_val, "%s%s%sa pile of %d items [Enter,%s]", s1, s2, s3, (int)floor_num, info);
#endif
prt(out_val, 0, 0);
-
- /* Wait */
query = inkey();
-
- /* Load screen */
screen_load();
/* Exit unless 'Enter' */
for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
{
object_type *o_ptr;
-
- /* Acquire object */
o_ptr = &o_list[this_o_idx];
/* Acquire next object */
next_o_idx = o_ptr->next_o_idx;
- /* Describe it */
if (o_ptr->marked & OM_FOUND)
{
- char o_name[MAX_NLEN];
+ GAME_TEXT o_name[MAX_NLEN];
/* Not boring */
boring = FALSE;
(have_flag(f_ptr->flags, FF_BLDG) && !p_ptr->inside_arena) ||
have_flag(f_ptr->flags, FF_ENTRANCE))
{
-#ifdef JP
- s2 = "の入口";
-#else
- s3 = "";
-#endif
+ s2 = _("の入口", "");
}
#ifndef JP
else if (have_flag(f_ptr->flags, FF_FLOOR) ||
*/
bool target_set(BIT_FLAGS mode)
{
- int i, d, m, t, bd;
+ int i, d, m, t, bd;
POSITION y = p_ptr->y;
POSITION x = p_ptr->x;
- bool done = FALSE;
- bool flag = TRUE;
- char query;
- char info[80];
- char same_key;
-
- cave_type *c_ptr;
-
- int wid, hgt;
+ bool done = FALSE;
+ bool flag = TRUE;
+ char query;
+ char info[80];
+ char same_key;
+ cave_type *c_ptr;
+ TERM_LEN wid, hgt;
get_screen_size(&wid, &hgt);
/* Cancel target */
target_who = 0;
-
- /* Cancel tracking */
- /* health_track(0); */
-
if (rogue_like_commands)
{
same_key = 'x';
{
char cheatinfo[30];
sprintf(cheatinfo, " LOS:%d, PROJECTABLE:%d",
- los(p_ptr->y, p_ptr->x, y, x),
- projectable(p_ptr->y, p_ptr->x, y, x));
+ los(p_ptr->y, p_ptr->x, y, x), projectable(p_ptr->y, p_ptr->x, y, x));
strcat(info, cheatinfo);
}
if(query)break;
}
- /* Cancel tracking */
- /* health_track(0); */
-
/* Assume no "direction" */
d = 0;
{
/* Recenter the map around the player */
verify_panel();
-
p_ptr->update |= (PU_MONSTERS);
-
p_ptr->redraw |= (PR_MAP);
-
p_ptr->window |= (PW_OVERHEAD);
-
- /* Handle stuff */
handle_stuff();
/* Recalculate interesting grids */
/* Nothing interesting */
else
{
- int dx = ddx[d];
- int dy = ddy[d];
+ POSITION dx = ddx[d];
+ POSITION dy = ddy[d];
/* Restore previous position */
panel_row_min = y2;
panel_bounds_center();
p_ptr->update |= (PU_MONSTERS);
-
p_ptr->redraw |= (PR_MAP);
-
p_ptr->window |= (PW_OVERHEAD);
-
- /* Handle stuff */
handle_stuff();
/* Recalculate interesting grids */
/* Describe and Prompt (enable "TARGET_LOOK") */
while ((query = target_set_aux(y, x, mode | TARGET_LOOK, info)) == 0);
- /* Cancel tracking */
- /* health_track(0); */
-
/* Assume no direction */
d = 0;
{
/* Recenter the map around the player */
verify_panel();
-
p_ptr->update |= (PU_MONSTERS);
-
p_ptr->redraw |= (PR_MAP);
-
p_ptr->window |= (PW_OVERHEAD);
-
- /* Handle stuff */
handle_stuff();
/* Recalculate interesting grids */
/* Handle "direction" */
if (d)
{
- int dx = ddx[d];
- int dy = ddy[d];
+ POSITION dx = ddx[d];
+ POSITION dy = ddy[d];
/* XTRA HACK MOVEFAST */
if (move_fast)
/* Recenter the map around the player */
verify_panel();
-
p_ptr->update |= (PU_MONSTERS);
-
p_ptr->redraw |= (PR_MAP);
-
p_ptr->window |= (PW_OVERHEAD);
-
- /* Handle stuff */
handle_stuff();
/* Failure to set target */
}
else
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_type *m_ptr = &m_list[p_ptr->riding];
monster_desc(m_name, m_ptr, 0);
}
else
{
- char m_name[80];
+ GAME_TEXT m_name[MAX_NLEN];
monster_type *m_ptr = &m_list[p_ptr->riding];
monster_desc(m_name, m_ptr, 0);
OBJECT_SUBTYPE_VALUE dummy2 = 0;
int type, effect;
cptr reward = NULL;
- char o_name[MAX_NLEN];
+ GAME_TEXT o_name[MAX_NLEN];
int count = 0;
msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[p_ptr->chaos_patron]);
msg_print(_("「汝の行いは貴き剣に値せり。」", "'Thy deed hath earned thee a worthy blade.'"));
-
- /* Get local object */
q_ptr = &forge;
dummy = TV_SWORD;
switch (randint1(p_ptr->lev))
q_ptr->to_d = 3 + randint1(dun_level) % 10;
one_resistance(q_ptr);
q_ptr->name2 = EGO_CHAOTIC;
-
- /* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, p_ptr->y, p_ptr->x);
reward = _("(混沌)の武器を手に入れた。", "chaos weapon");
break;
for (dummy = 0; dummy < randint1(5) + 1; dummy++)
{
- (void)summon_specific(0, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
+ (void)summon_specific(0, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0');
}
reward = _("モンスターを召喚された。", "summoning hostile monsters");
break;
msg_print(_("「汝、謙虚たることを学ぶべし!」", "'Thou needst a lesson in humility, mortal!'"));
msg_print(_("あなたは以前より弱くなった!", "You feel less powerful!"));
- for (dummy = 0; dummy < 6; dummy++)
+ for (dummy = 0; dummy < A_MAX; dummy++)
{
(void)dec_stat(dummy, 10 + randint1(15), TRUE);
}
msg_print(_("「我がささやかなる賜物を受けとるがよい!」", "'Receive this modest gift from me!'"));
- for (dummy = 0; dummy < 6; dummy++)
+ for (dummy = 0; dummy < A_MAX; dummy++)
{
(void)do_inc_stat(dummy);
}
}
break;
default:
- for (dummy = 0; dummy < 6; dummy++)
+ for (dummy = 0; dummy < A_MAX; dummy++)
{
(void)dec_stat(dummy, 10 + randint1(15), TRUE);
}
msg_print(_("「死ぬがよい、下僕よ!」", "'Die, mortal!'"));
take_hit(DAMAGE_LOSELIFE, p_ptr->lev * 4, wrath_reason, -1);
- for (dummy = 0; dummy < 6; dummy++)
+ for (dummy = 0; dummy < A_MAX; dummy++)
{
(void)dec_stat(dummy, 10 + randint1(15), FALSE);
}
msg_format(_("%sは褒美として悪魔の使いをよこした!", "%s rewards you with a demonic servant!"),chaos_patrons[p_ptr->chaos_patron]);
- if (!summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, PM_FORCE_PET))
+ if (!summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, PM_FORCE_PET, '\0'))
msg_print(_("何も現れなかった...", "Nobody ever turns up..."));
else
reward = _("悪魔がペットになった。", "a demonic servant");
case REW_SER_MONS:
msg_format(_("%sは褒美として使いをよこした!", "%s rewards you with a servant!"),chaos_patrons[p_ptr->chaos_patron]);
- if (!summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, 0, PM_FORCE_PET))
+ if (!summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, 0, PM_FORCE_PET, '\0'))
msg_print(_("何も現れなかった...", "Nobody ever turns up..."));
else
reward = _("モンスターがペットになった。", "a servant");
case REW_SER_UNDE:
msg_format(_("%sは褒美としてアンデッドの使いをよこした。", "%s rewards you with an undead servant!"),chaos_patrons[p_ptr->chaos_patron]);
- if (!summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, SUMMON_UNDEAD, PM_FORCE_PET))
+ if (!summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, SUMMON_UNDEAD, PM_FORCE_PET, '\0'))
msg_print(_("何も現れなかった...", "Nobody ever turns up..."));
else
reward = _("アンデッドがペットになった。", "an undead servant");
POSITION x, y;
bool success = FALSE;
- int wid, hgt;
+ TERM_LEN wid, hgt;
get_screen_size(&wid, &hgt);
p_ptr->redraw |= (PR_MAP);
p_ptr->window |= (PW_OVERHEAD);
-
- /* Handle stuff */
handle_stuff();
}
else /* move cursor to next stair and change panel */
p_ptr->redraw |= (PR_MAP);
p_ptr->window |= (PW_OVERHEAD);
-
- /* Handle stuff */
handle_stuff();
*x_ptr = x;
}
-/*
- * エネルギーの増加量10d5を速く計算するための関数
- */
-
-#define Go_no_JuuJou 5*5*5*5*5*5*5*5*5*5
-
-s16b gain_energy(void)
-{
- int i;
- s32b energy_result = 10;
- s32b tmp;
-
- tmp = randint0(Go_no_JuuJou);
-
- for (i = 0; i < 9; i ++){
- energy_result += tmp % 5;
- tmp /= 5;
- }
-
- return (s16b)(energy_result + tmp);
-}
-
-
/*!
* @brief 射撃武器の攻撃に必要な基本消費エネルギーを返す/Return bow energy
* @param sval 射撃武器のアイテム副分類ID
return (tmul);
}
-/*
- * Return alignment title
- */
-cptr your_alignment(void)
-{
-#ifdef JP
- if (p_ptr->align > 150) return "大善";
- else if (p_ptr->align > 50) return "中善";
- else if (p_ptr->align > 10) return "小善";
- else if (p_ptr->align > -11) return "中立";
- else if (p_ptr->align > -51) return "小悪";
- else if (p_ptr->align > -151) return "中悪";
- else return "大悪";
-#else
- if (p_ptr->align > 150) return "Lawful";
- else if (p_ptr->align > 50) return "Good";
- else if (p_ptr->align > 10) return "Neutral Good";
- else if (p_ptr->align > -11) return "Neutral";
- else if (p_ptr->align > -51) return "Neutral Evil";
- else if (p_ptr->align > -151) return "Evil";
- else return "Chaotic";
-#endif
-}
-
-
-/*
- * Return proficiency level of weapons and misc. skills (except riding)
- */
-int weapon_exp_level(int weapon_exp)
-{
- if (weapon_exp < WEAPON_EXP_BEGINNER) return EXP_LEVEL_UNSKILLED;
- else if (weapon_exp < WEAPON_EXP_SKILLED) return EXP_LEVEL_BEGINNER;
- else if (weapon_exp < WEAPON_EXP_EXPERT) return EXP_LEVEL_SKILLED;
- else if (weapon_exp < WEAPON_EXP_MASTER) return EXP_LEVEL_EXPERT;
- else return EXP_LEVEL_MASTER;
-}
-
-
-/*
- * Return proficiency level of riding
- */
-int riding_exp_level(int riding_exp)
-{
- if (riding_exp < RIDING_EXP_BEGINNER) return EXP_LEVEL_UNSKILLED;
- else if (riding_exp < RIDING_EXP_SKILLED) return EXP_LEVEL_BEGINNER;
- else if (riding_exp < RIDING_EXP_EXPERT) return EXP_LEVEL_SKILLED;
- else if (riding_exp < RIDING_EXP_MASTER) return EXP_LEVEL_EXPERT;
- else return EXP_LEVEL_MASTER;
-}
-
-
-/*
- * Return proficiency level of spells
- */
-int spell_exp_level(int spell_exp)
-{
- if (spell_exp < SPELL_EXP_BEGINNER) return EXP_LEVEL_UNSKILLED;
- else if (spell_exp < SPELL_EXP_SKILLED) return EXP_LEVEL_BEGINNER;
- else if (spell_exp < SPELL_EXP_EXPERT) return EXP_LEVEL_SKILLED;
- else if (spell_exp < SPELL_EXP_MASTER) return EXP_LEVEL_EXPERT;
- else return EXP_LEVEL_MASTER;
-}
-
/*
* Display a rumor and apply its effects