#include "world.h"
#include "sort.h"
+#include "avatar.h"
#include "mutation.h"
#include "quest.h"
+#include "artifact.h"
+#include "cmd-spell.h"
+#include "rumor.h"
+#include "player-status.h"
+#include "spells-status.h"
/*!
* ループ中で / hack as in leave_store in store.c
/* Prepare to make a prize */
object_prep(&forge, lookup_kind(prize_list[num-1].tval, prize_list[num-1].sval));
- apply_magic(&forge, object_level, AM_NO_FIXED_ART);
+ apply_magic(&forge, current_floor_ptr->object_level, AM_NO_FIXED_ART);
- /* Identify it fully */
object_aware(&forge);
object_known(&forge);
clear_bldg(4, 18);
/* Current quest of the building */
- q_index = cave[p_ptr->y][p_ptr->x].special;
+ q_index = current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].special;
/* Is there a quest available at the building? */
if (!q_index)
screen_save();
clear_bldg(0, 22);
-#ifdef JP
- put_str(format("あなたの現在のAC: %3d", iAC), row++, 0);
- put_str(format("ダメージ軽減率 : %3d%%", protection), row++, 0);
+ put_str(format(_("あなたの現在のAC: %3d", "Your current AC : %3d"), iAC), row++, 0);
+ put_str(format(_("ダメージ軽減率 : %3d%%", "Protection rate : %3d%%"), protection), row++, 0);
row++;
- put_str("敵のレベル :", row + 0, 0);
- put_str("回避率 :", row + 1, 0);
- put_str("ダメージ期待値 :", row + 2, 0);
-#else
- put_str(format("Your current AC : %3d", iAC), row++, 0);
- put_str(format("Protection rate : %3d%%", protection), row++, 0);
- row++;
-
- put_str("Level of Monster:", row + 0, 0);
- put_str("Dodge Rate :", row + 1, 0);
- put_str("Average Damage :", row + 2, 0);
-#endif
+ put_str(_("敵のレベル :", "Level of Monster:"), row + 0, 0);
+ put_str(_("回避率 :", "Dodge Rate :"), row + 1, 0);
+ put_str(_("ダメージ期待値 :", "Average Damage :"), row + 2, 0);
for (col = 17 + 1, lvl = 0; lvl <= 100; lvl += 10, col += 5)
{
#else
msg_format("%^s %s recharged for %d gold.", tmp_str, ((o_ptr->number > 1) ? "were" : "was"), price);
#endif
-
- /* Combine / Reorder the pack (later) */
p_ptr->update |= (PU_COMBINE | PU_REORDER);
p_ptr->window |= (PW_INVEN);
/* Give feedback */
msg_format(_("$%d で再充填しました。", "You pay %d gold."), total_cost);
msg_print(NULL);
-
- /* Combine / Reorder the pack (later) */
p_ptr->update |= (PU_COMBINE | PU_REORDER);
p_ptr->window |= (PW_INVEN);
POSITION x, y;
int num = 0;
- if (dun_level)
+ if (current_floor_ptr->dun_level)
{
msg_print(_("この魔法は地上でしか使えない!", "This spell can only be used on the surface!"));
return FALSE;
if ((i == NO_TOWN) || (i == SECRET_TOWN) || (i == p_ptr->town_num) || !(p_ptr->visit & (1L << (i - 1)))) continue;
- sprintf(buf, "%c) %-20s", I2A(i - 1), town[i].name);
+ sprintf(buf, "%c) %-20s", I2A(i - 1), town_info[i].name);
prt(buf, 5 + i, 5);
num++;
}
"Enter character to be identified(^A:All,^U:Uniqs,^N:Non uniqs,^M:Name): "), &sym, FALSE))
{
- /* Restore */
screen_load();
return (FALSE);
if (!get_string(_("名前(英語の場合小文字で可)", "Enter name:"),temp, 70))
{
temp[0]=0;
-
- /* Restore */
screen_load();
return FALSE;
/* Display the result */
prt(buf, 16, 10);
-
/* Allocate the "who" array */
C_MAKE(who, max_r_idx, MONRACE_IDX);
{
/* Free the "who" array */
C_KILL(who, max_r_idx, MONRACE_IDX);
-
- /* Restore */
screen_load();
return (FALSE);
/* Free the "who" array */
C_KILL(who, max_r_idx, MONRACE_IDX);
-
- /* Restore */
screen_load();
return (!notpicked);
{
if(p_ptr->wild_mode) return;
- p_ptr->energy_use = 100;
+ take_turn(p_ptr, 100);
if (!cave_have_flag_bold(p_ptr->y, p_ptr->x, FF_QUEST_ENTER))
{
leave_quest_check();
- if (quest[p_ptr->inside_quest].type != QUEST_TYPE_RANDOM) dun_level = 1;
- p_ptr->inside_quest = cave[p_ptr->y][p_ptr->x].special;
+ if (quest[p_ptr->inside_quest].type != QUEST_TYPE_RANDOM) current_floor_ptr->dun_level = 1;
+ p_ptr->inside_quest = current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].special;
p_ptr->leaving = TRUE;
}
if(p_ptr->wild_mode) return;
- p_ptr->energy_use = 100;
+ take_turn(p_ptr, 100);
if (!cave_have_flag_bold(p_ptr->y, p_ptr->x, FF_BLDG))
{
return;
}
- which = f_info[cave[p_ptr->y][p_ptr->x].feat].subtype;
+ which = f_info[current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].feat].subtype;
bldg = &building[which];
command_new = SPECIAL_KEY_BUILDING;
/* No energy needed to re-enter the arena */
- p_ptr->energy_use = 0;
+ free_turn(p_ptr);
}
return;
command_new = SPECIAL_KEY_BUILDING;
/* No energy needed to re-enter the arena */
- p_ptr->energy_use = 0;
+ free_turn(p_ptr);
return;
}
p_ptr->redraw |= (PR_BASIC | PR_EXTRA | PR_EQUIPPY | PR_MAP);
p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
}
-
-
-/*!
- * @brief クエスト突入時のメッセージテーブル / Array of places to find an inscription
- */
-static concptr find_quest[] =
-{
- _("床にメッセージが刻まれている:", "You find the following inscription in the floor"),
- _("壁にメッセージが刻まれている:", "You see a message inscribed in the wall"),
- _("メッセージを見つけた:", "There is a sign saying"),
- _("何かが階段の上に書いてある:", "Something is written on the staircase"),
- _("巻物を見つけた。メッセージが書いてある:", "You find a scroll with the following message"),
-};
-
-
-/*!
- * @brief クエストの導入メッセージを表示する / Discover quest
- * @param q_idx 開始されたクエストのID
- */
-void quest_discovery(QUEST_IDX q_idx)
-{
- quest_type *q_ptr = &quest[q_idx];
- monster_race *r_ptr = &r_info[q_ptr->r_idx];
- MONSTER_NUMBER q_num = q_ptr->max_num;
- GAME_TEXT name[MAX_NLEN];
-
- /* No quest index */
- if (!q_idx) return;
-
- strcpy(name, (r_name + r_ptr->name));
-
- msg_print(find_quest[rand_range(0, 4)]);
- msg_print(NULL);
-
- if (q_num == 1)
- {
- /* Unique */
-
- /* Hack -- "unique" monsters must be "unique" */
- if ((r_ptr->flags1 & RF1_UNIQUE) && (0 == r_ptr->max_num))
- {
- msg_print(_("この階は以前は誰かによって守られていたようだ…。", "It seems that this level was protected by someone before..."));
- /* The unique is already dead */
- quest[q_idx].status = QUEST_STATUS_FINISHED;
- q_ptr->complev = 0;
- update_playtime();
- q_ptr->comptime = playtime;
- }
- else
- {
- msg_format(_("注意せよ!この階は%sによって守られている!", "Beware, this level is protected by %s!"), name);
- }
- }
- else
- {
- /* Normal monsters */
-#ifndef JP
- plural_aux(name);
-#endif
- msg_format(_("注意しろ!この階は%d体の%sによって守られている!", "Be warned, this level is guarded by %d %s!"), q_num, name);
-
- }
-}
-
-
-/*!
- * @brief 新しく入ったダンジョンの階層に固定されている一般のクエストを探し出しIDを返す。
- * / Hack -- Check if a level is a "quest" level
- * @param level 検索対象になる階
- * @return クエストIDを返す。該当がない場合0を返す。
- */
-QUEST_IDX quest_number(DEPTH level)
-{
- QUEST_IDX i;
-
- /* Check quests */
- if (p_ptr->inside_quest)
- return (p_ptr->inside_quest);
-
- for (i = 0; i < max_q_idx; i++)
- {
- if (quest[i].status != QUEST_STATUS_TAKEN) continue;
-
- if ((quest[i].type == QUEST_TYPE_KILL_LEVEL) &&
- !(quest[i].flags & QUEST_FLAG_PRESET) &&
- (quest[i].level == level) &&
- (quest[i].dungeon == dungeon_type))
- return (i);
- }
-
- /* Check for random quest */
- return (random_quest_number(level));
-}
-
-/*!
- * @brief 新しく入ったダンジョンの階層に固定されているランダムクエストを探し出しIDを返す。
- * @param level 検索対象になる階
- * @return クエストIDを返す。該当がない場合0を返す。
- */
-QUEST_IDX random_quest_number(DEPTH level)
-{
- QUEST_IDX i;
-
- if (dungeon_type != DUNGEON_ANGBAND) return 0;
-
- for (i = MIN_RANDOM_QUEST; i < MAX_RANDOM_QUEST + 1; i++)
- {
- if ((quest[i].type == QUEST_TYPE_RANDOM) &&
- (quest[i].status == QUEST_STATUS_TAKEN) &&
- (quest[i].level == level) &&
- (quest[i].dungeon == DUNGEON_ANGBAND))
- {
- return i;
- }
- }
-
- return 0;
-}