#include "cmd-zapwand.h"
#include "cmd-pet.h"
#include "floor-events.h"
+#include "object-curse.h"
static bool load = TRUE; /*!<ロード処理中の分岐フラグ*/
static int wild_regen = 20; /*!<広域マップ移動時の自然回復処理カウンタ(広域マップ1マス毎に20回処理を基本とする)*/
}
/* Stop everything */
- if (disturb_minor) disturb(0, 0);
+ if (disturb_minor) disturb(FALSE, FALSE);
/* Get an object description */
object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
/* Combine / Reorder the pack (later) */
p_ptr->notice |= (PN_COMBINE | PN_REORDER);
- /* Window stuff */
p_ptr->window |= (PW_INVEN | PW_EQUIP);
}
/* Heavy sensing */
heavy = TRUE;
- /* Done */
break;
}
/* Heavy sensing */
heavy = TRUE;
- /* Done */
break;
}
/* Very bad (light) sensing */
if (0 != randint0(240000L / (plev + 5))) return;
- /* Done */
break;
}
/* Good (light) sensing */
if (0 != randint0(10000L / (plev * plev + 40))) return;
- /* Done */
break;
}
/* Heavy sensing */
heavy = TRUE;
- /* Done */
break;
}
/* Changed! */
heavy = TRUE;
- /* Done */
break;
}
/* Heavy sensing */
heavy = TRUE;
- /* Done */
break;
}
/* Bad sensing */
if (0 != randint0(75000L / (plev * plev + 40))) return;
- /* Done */
break;
}
/* Bad sensing */
if (0 != randint0(55000L / (plev * plev + 40))) return;
- /* Done */
break;
}
/* Changed! */
heavy = TRUE;
- /* Done */
break;
}
/* Okay sensing */
if (0 != randint0(20000L / (plev * plev + 40))) return;
- /* Done */
break;
}
/* Heavy sensing */
heavy = TRUE;
- /* Done */
break;
}
/* Bad sensing */
if (0 != randint0(65000L / (plev * plev + 40))) return;
- /* Done */
break;
}
case CLASS_BERSERKER:
/* Heavy sensing */
heavy = TRUE;
- /* Done */
break;
}
}
/* Very bad (light) sensing */
if (0 != randint0(240000L / (plev + 5))) return;
- /* Done */
break;
}
/* Bad sensing */
if (0 != randint0(95000L / (plev * plev + 40))) return;
- /* Done */
break;
}
/* Good sensing */
if (0 != randint0(20000L / (plev * plev + 40))) return;
- /* Done */
break;
}
/* Good sensing */
if (0 != randint0(9000L / (plev * plev + 40))) return;
- /* Done */
break;
}
/* Good sensing */
if (0 != randint0(20000L / ((plev+50)*(plev+50)))) return;
- /* Done */
break;
}
}
/* Redraw */
p_ptr->redraw |= (PR_HP);
- /* Window stuff */
p_ptr->window |= (PW_PLAYER);
wild_regen = 20;
/* Redraw */
p_ptr->redraw |= (PR_MANA);
- /* Window stuff */
p_ptr->window |= (PW_PLAYER);
p_ptr->window |= (PW_SPELL);
/*!
* @brief 100ゲームターン毎のモンスターのHP自然回復処理 / Regenerate the monsters (once per 100 game turns)
* @return なし
- * @note XXX XXX XXX Should probably be done during monster turns.
+ * @note Should probably be done during monster turns.
*/
static void regen_monsters(void)
{
/*!
* @brief 30ゲームターン毎のボール中モンスターのHP自然回復処理 / Regenerate the captured monsters (once per 30 game turns)
* @return なし
- * @note XXX XXX XXX Should probably be done during monster turns.
+ * @note Should probably be done during monster turns.
*/
static void regen_captured_monsters(void)
{
/* Combine pack */
p_ptr->notice |= (PN_COMBINE);
- /* Window stuff */
p_ptr->window |= (PW_INVEN);
p_ptr->window |= (PW_EQUIP);
wild_regen = 20;
/* Hack -- notice interesting fuel steps */
if ((o_ptr->xtra4 < 100) || (!(o_ptr->xtra4 % 100)))
{
- /* Window stuff */
p_ptr->window |= (PW_EQUIP);
}
/* The light is now out */
else if (o_ptr->xtra4 == 0)
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("明かりが消えてしまった!", "Your light has gone out!"));
/* Recalculate torch radius */
if ((o_ptr->xtra4 < 50) && (!(o_ptr->xtra4 % 5))
&& (turn % (TURNS_PER_TICK*2)))
{
- if (disturb_minor) disturb(0, 1);
+ if (disturb_minor) disturb(FALSE, TRUE);
msg_print(_("明かりが微かになってきている。", "Your light is growing faint."));
}
}
/* The light is getting dim */
else if ((o_ptr->xtra4 < 100) && (!(o_ptr->xtra4 % 10)))
{
- if (disturb_minor) disturb(0, 1);
+ if (disturb_minor) disturb(FALSE, TRUE);
msg_print(_("明かりが微かになってきている。", "Your light is growing faint."));
}
}
msg_format("Your %s is recharged.", o_name);
#endif
- disturb(0, 0);
+ disturb(FALSE, FALSE);
/* Done. */
return;
/* Update monsters */
p_ptr->update |= (PU_MONSTERS);
- /* Window stuff */
p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
}
}
/* Faint occasionally */
if (!p_ptr->paralyzed && (randint0(100) < 10))
{
- /* Message */
msg_print(_("あまりにも空腹で気絶してしまった。", "You faint from the lack of food."));
- disturb(1, 1);
+ disturb(TRUE, TRUE);
/* Hack -- faint (bypass free action) */
(void)set_paralyzed(p_ptr->paralyzed + 1 + randint0(5));
if ((p_ptr->muta2 & MUT2_BERS_RAGE) && one_in_(3000))
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("ウガァァア!", "RAAAAGHH!"));
msg_print(_("激怒の発作に襲われた!", "You feel a fit of rage coming over you!"));
(void)set_shero(10 + randint1(p_ptr->lev), FALSE);
{
if (!p_ptr->resist_fear)
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("とても暗い... とても恐い!", "It's so dark... so scary!"));
set_afraid(p_ptr->afraid + 13 + randint1(26));
}
{
if (!p_ptr->resist_nexus && !(p_ptr->muta1 & MUT1_VTELEPORT) && !p_ptr->anti_tele)
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("あなたの位置は突然ひじょうに不確定になった...", "Your position suddenly seems very uncertain..."));
msg_print(NULL);
teleport_player(40, TELEPORT_PASSIVE);
{
if (!p_ptr->resist_conf && !p_ptr->resist_chaos)
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
p_ptr->redraw |= PR_EXTRA;
msg_print(_("いひきがもーろーとひてきたきがふる...ヒック!", "You feel a SSSCHtupor cOmINg over yOu... *HIC*!"));
}
{
if (!p_ptr->resist_chaos)
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
p_ptr->redraw |= PR_EXTRA;
(void)set_image(p_ptr->image + randint0(50) + 20);
}
if ((p_ptr->muta2 & MUT2_FLATULENT) && (randint1(3000) == 13))
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("ブゥーーッ!おっと。", "BRRAAAP! Oops."));
msg_print(NULL);
fire_ball(GF_POIS, 0, p_ptr->lev, 3);
!p_ptr->anti_magic && one_in_(9000))
{
int dire = 0;
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("魔法のエネルギーが突然あなたの中に流れ込んできた!エネルギーを解放しなければならない!",
"Magical energy flows through you! You must release it!"));
if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, mode))
{
msg_print(_("あなたはデーモンを引き寄せた!", "You have attracted a demon!"));
- disturb(0, 1);
+ disturb(FALSE, TRUE);
}
}
if ((p_ptr->muta2 & MUT2_SPEED_FLUX) && one_in_(6000))
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
if (one_in_(2))
{
msg_print(_("精力的でなくなった気がする。", "You feel less energetic."));
}
if ((p_ptr->muta2 & MUT2_BANISH_ALL) && one_in_(9000))
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("突然ほとんど孤独になった気がする。", "You suddenly feel almost lonely."));
banish_monsters(100);
if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, dun_level, SUMMON_ANIMAL, mode))
{
msg_print(_("動物を引き寄せた!", "You have attracted an animal!"));
- disturb(0, 1);
+ disturb(FALSE, TRUE);
}
}
if ((p_ptr->muta2 & MUT2_RAW_CHAOS) && !p_ptr->anti_magic && one_in_(8000))
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("周りの空間が歪んでいる気がする!", "You feel the world warping around you!"));
msg_print(NULL);
}
if ((p_ptr->muta2 & MUT2_WRAITH) && !p_ptr->anti_magic && one_in_(3000))
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("非物質化した!", "You feel insubstantial!"));
msg_print(NULL);
if (!sustained)
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("自分が衰弱していくのが分かる!", "You can feel yourself wasting away!"));
msg_print(NULL);
(void)dec_stat(which_stat, randint1(6) + 6, one_in_(3));
if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, dun_level, SUMMON_DRAGON, mode))
{
msg_print(_("ドラゴンを引き寄せた!", "You have attracted a dragon!"));
- disturb(0, 1);
+ disturb(FALSE, TRUE);
}
}
if ((p_ptr->muta2 & MUT2_WEIRD_MIND) && !p_ptr->anti_magic && one_in_(3000))
}
if ((p_ptr->muta2 & MUT2_NAUSEA) && !p_ptr->slow_digest && one_in_(9000))
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("胃が痙攣し、食事を失った!", "Your stomach roils, and you lose your lunch!"));
msg_print(NULL);
set_food(PY_FOOD_WEAK);
if ((p_ptr->muta2 & MUT2_INVULN) && !p_ptr->anti_magic && one_in_(5000))
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("無敵な気がする!", "You feel invincible!"));
msg_print(NULL);
(void)set_invuln(randint1(8) + 8, FALSE);
INVENTORY_IDX slot = 0;
object_type *o_ptr = NULL;
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("足がもつれて転んだ!", "You trip over your own feet!"));
take_hit(DAMAGE_NOESCAPE, randint1(p_ptr->wt / 6), _("転倒", "tripping"), -1);
msg_format(_("%sがテレポートの能力を発動させようとしている。", "Your %s is activating teleportation."), o_name);
if (get_check_strict(_("テレポートしますか?", "Teleport? "), CHECK_OKAY_CANCEL))
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
teleport_player(50, 0L);
}
else
{
msg_format(_("%sに{.}(ピリオド)と銘を刻むと発動を抑制できます。",
"You can inscribe {.} on your %s to disable random teleportation. "), o_name);
- disturb(1, 1);
+ disturb(TRUE, TRUE);
}
}
/* Make a chainsword noise */
object_desc(o_name, choose_cursed_obj_name(TRC_CALL_ANIMAL), (OD_OMIT_PREFIX | OD_NAME_ONLY));
msg_format(_("%sが動物を引き寄せた!", "Your %s have attracted an animal!"), o_name);
- disturb(0, 1);
+ disturb(FALSE, TRUE);
}
}
/* Call demon */
object_desc(o_name, choose_cursed_obj_name(TRC_CALL_DEMON), (OD_OMIT_PREFIX | OD_NAME_ONLY));
msg_format(_("%sが悪魔を引き寄せた!", "Your %s have attracted a demon!"), o_name);
- disturb(0, 1);
+ disturb(FALSE, TRUE);
}
}
/* Call dragon */
object_desc(o_name, choose_cursed_obj_name(TRC_CALL_DRAGON), (OD_OMIT_PREFIX | OD_NAME_ONLY));
msg_format(_("%sがドラゴンを引き寄せた!", "Your %s have attracted an dragon!"), o_name);
- disturb(0, 1);
+ disturb(FALSE, TRUE);
}
}
/* Call undead */
object_desc(o_name, choose_cursed_obj_name(TRC_CALL_UNDEAD), (OD_OMIT_PREFIX | OD_NAME_ONLY));
msg_format(_("%sが死霊を引き寄せた!", "Your %s have attracted an undead!"), o_name);
- disturb(0, 1);
+ disturb(FALSE, TRUE);
}
}
if ((p_ptr->cursed & TRC_COWARDICE) && one_in_(1500))
{
if (!p_ptr->resist_fear)
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
msg_print(_("とても暗い... とても恐い!", "It's so dark... so scary!"));
set_afraid(p_ptr->afraid + 13 + randint1(26));
}
/* Teleport player */
if ((p_ptr->cursed & TRC_TELEPORT) && one_in_(200) && !p_ptr->anti_tele)
{
- disturb(0, 1);
+ disturb(FALSE, TRUE);
/* Teleport player */
teleport_player(40, TELEPORT_PASSIVE);
/* Notice changes */
if (changed)
{
- /* Window stuff */
p_ptr->window |= (PW_EQUIP);
wild_regen = 20;
}
/* Notice changes */
if (changed)
{
- /* Window stuff */
p_ptr->window |= (PW_INVEN);
wild_regen = 20;
}
if (!p_ptr->word_recall)
{
/* Disturbing! */
- disturb(0, 1);
+ disturb(FALSE, TRUE);
/* Determine the level */
if (dun_level || p_ptr->inside_quest || p_ptr->enter_dungeon)
if (!p_ptr->alter_reality)
{
/* Disturbing! */
- disturb(0, 1);
+ disturb(FALSE, TRUE);
/* Determine the level */
if (!quest_number(dun_level) && dun_level)
/* Update the level indicator */
p_ptr->redraw |= (PR_DEPTH);
- /* Disturb */
- if (disturb_minor) disturb(0, 0);
+ if (disturb_minor) disturb(FALSE, FALSE);
}
/*!
/* Warning */
if (closing_flag <= 2)
{
- /* Disturb */
- disturb(0, 1);
+ disturb(FALSE, TRUE);
/* Count warnings */
closing_flag++;
- /* Message */
msg_print(_("アングバンドへの門が閉じかかっています...", "The gates to ANGBAND are closing..."));
msg_print(_("ゲームを終了するかセーブするかして下さい。", "Please finish up and/or save your game."));
/* Slam the gate */
else
{
- /* Message */
msg_print(_("今、アングバンドへの門が閉ざされました。", "The gates to ANGBAND are now closed."));
/* Stop playing */
/* Verify store type */
if (f_ptr->subtype == n)
{
- /* Message */
if (cheat_xtra) msg_format(_("%sの店主をシャッフルします。", "Shuffle a Shopkeeper of %s."), f_name + f_ptr->name);
/* Shuffle it */
if ((hour == 23) && !(min % 15))
{
/* Disturbing */
- disturb(0, 1);
+ disturb(FALSE, TRUE);
switch (min / 15)
{
if (!hour && !min)
{
- disturb(1, 1);
+ disturb(TRUE, TRUE);
msg_print(_("遠くで鐘が何回も鳴り、死んだような静けさの中へ消えていった。", "A distant bell tolls many times, fading into an deathly silence."));
if (p_ptr->wild_mode)
/*!
* @brief プレイヤーから受けた入力コマンドの分岐処理。
* / Parse and execute the current command Give "Warning" on illegal commands.
- * @todo XXX XXX XXX Make some "blocks"
+ * @todo Make some "blocks"
* @return なし
*/
static void process_command(void)
{
COMMAND_CODE old_now_message = now_message;
-#ifdef ALLOW_REPEAT /* TNB */
-
/* Handle repeating the last command */
repeat_check();
-#endif /* ALLOW_REPEAT -- TNB */
-
now_message = 0;
/* Sniper */
o_ptr = &inventory[INVEN_PACK];
/* Disturbing */
- disturb(0, 1);
+ disturb(FALSE, TRUE);
/* Warning */
msg_print(_("ザックからアイテムがあふれた!", "Your pack overflows!"));
/* Describe */
object_desc(o_name, o_ptr, 0);
- /* Message */
msg_format(_("%s(%c)を落とした。", "You drop %s (%c)."), o_name, index_to_label(INVEN_PACK));
/* Drop it (carefully) near the player */
{
msg_print(_("餌だけ食われてしまった!くっそ~!", "Damn! The fish stole your bait!"));
}
- disturb(0, 1);
+ disturb(FALSE, TRUE);
}
}
{
flush(); /* Flush input */
- /* Disturb */
- disturb(0, 1);
+ disturb(FALSE, TRUE);
/* Hack -- Show a Message */
msg_print(_("中断しました。", "Canceled."));
/* Update monsters */
p_ptr->update |= (PU_MONSTERS);
- /* Window stuff */
p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
msg_print(_("「時は動きだす…」", "You feel time flowing around you once more."));
repair_objects = TRUE;
- /* Disturb */
- disturb(1, 1);
+ disturb(TRUE, TRUE);
/* Get index of current quest (if any) */
quest_num = quest_number(dun_level);
/* Enter "xtra" mode */
character_xtra = TRUE;
- /* Window stuff */
p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_SPELL | PW_PLAYER | PW_MONSTER | PW_OVERHEAD | PW_DUNGEON);
/* Redraw dungeon */
/* Redraw map */
p_ptr->redraw |= (PR_MAP);
- /* Update stuff */
p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
/* Update lite/view */
/* Leave "xtra" mode */
character_xtra = FALSE;
- /* Update stuff */
p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
/* Combine / Reorder the pack */
/* Attempt to load */
if (!load_player())
{
- /* Oops */
quit(_("セーブファイルが壊れています", "broken savefile"));
}
if (!get_check_strict(_("待機していたスコア登録を今行ないますか?", "Do you register score now? "), CHECK_NO_HISTORY))
quit(0);
- /* Update stuff */
p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
- /* Update stuff */
update_stuff();
p_ptr->is_dead = TRUE;
/* React to changes */
Term_xtra(TERM_XTRA_REACT, 0);
- /* Window stuff */
p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_SPELL | PW_PLAYER);
- /* Window stuff */
p_ptr->window |= (PW_MESSAGE | PW_OVERHEAD | PW_DUNGEON | PW_MONSTER | PW_OBJECT);
- /* Window stuff */
window_stuff();
if (!p_ptr->is_dead) wipe_m_list();
- /* XXX XXX XXX */
msg_print(NULL);
load_game = FALSE;
/* Mark savefile */
p_ptr->noscore |= 0x0001;
- /* Message */
msg_print(_("ウィザードモードに念を送り、死を欺いた。", "You invoke wizard mode and cheat death."));
msg_print(NULL);
/* Hack -- cancel recall */
if (p_ptr->word_recall)
{
- /* Message */
msg_print(_("張りつめた大気が流れ去った...", "A tension leaves the air around you..."));
msg_print(NULL);
p_ptr->redraw |= (PR_STATUS);
}
- /* Note cause of death XXX XXX XXX */
+ /* Note cause of death */
(void)strcpy(p_ptr->died_from, _("死の欺き", "Cheating death"));
/* Do not die */