break;
case BACT_RECALL:
- if (recall_player(1)) paid = TRUE;
+ if (recall_player(p_ptr, 1)) paid = TRUE;
break;
case BACT_TELEPORT_LEVEL:
case ACT_RECALL:
{
msg_print(_("やわらかな白色に輝いている...", "It glows soft white..."));
- if (!word_of_recall()) return FALSE;
+ if (!recall_player(p_ptr, randint0(21) + 15)) return FALSE;
break;
}
if (get_check(_("帰還の力を使いますか?", "Activate recall? ")))
{
- (void)word_of_recall();
+ (void)recall_player(p_ptr, randint0(21) + 15);
}
break;
\r
case SV_SCROLL_WORD_OF_RECALL:\r
{\r
- if (!word_of_recall()) used_up = FALSE;\r
+ if (!recall_player(p_ptr, randint0(21) + 15)) used_up = FALSE;\r
ident = TRUE;\r
break;\r
}\r
case SV_ROD_RECALL:
{
- if (!word_of_recall()) *use_charge = FALSE;
+ if (!recall_player(p_ptr, randint0(21) + 15)) *use_charge = FALSE;
ident = TRUE;
break;
}
/* Ask for level */
if (get_check(_("他の階にテレポートしますか?", "Teleport level? ")))
{
- char ppp[80];
- char tmp_val[160];
+ char ppp[80];
+ char tmp_val[160];
/* Only downward in ironman mode */
if (ironman_downward)
leave_quest_check();
- if (record_stair) do_cmd_write_nikki(NIKKI_PAT_TELE,0,NULL);
+ if (record_stair) do_cmd_write_nikki(NIKKI_PAT_TELE, 0, NULL);
p_ptr->inside_quest = 0;
p_ptr->energy_use = 0;
msg_print(_("パターンを血で汚してしまった!", "You bleed on the Pattern!"));
msg_print(_("何か恐ろしい事が起こった!", "Something terrible happens!"));
- if (!IS_INVULN())
- take_hit(DAMAGE_NOESCAPE, damroll(10, 8), _("パターン損壊", "corrupting the Pattern"), -1);
-
+ if (!IS_INVULN()) take_hit(DAMAGE_NOESCAPE, damroll(10, 8), _("パターン損壊", "corrupting the Pattern"), -1);
to_ruin = randint1(45) + 35;
while (to_ruin--)
extern void teleport_away_followable(MONSTER_IDX m_idx);
extern void teleport_level(MONSTER_IDX m_idx);
extern DUNGEON_IDX choose_dungeon(cptr note, POSITION y, POSITION x);
-extern bool recall_player(TIME_EFFECT turns);
+extern bool recall_player(player_type *creature_ptr, TIME_EFFECT turns);
extern bool free_level_recall(player_type *creature_ptr);
-extern bool word_of_recall(void);
extern bool reset_recall(void);
extern bool apply_disenchant(BIT_FLAGS mode);
extern void mutate_player(void);
/* mirror of recall */
case 17:
- return word_of_recall();
+ return recall_player(p_ptr, randint0(21) + 15);
/* multi-shadow */
case 18:
set_multishadow(6 + randint1(6), FALSE);
break;
case MUT1_RECALL:
- if (!word_of_recall()) return FALSE;
+ if (!recall_player(p_ptr, randint0(21) + 15)) return FALSE;
break;
case MUT1_BANISH:
}
case CLASS_BERSERKER:
{
- if (!word_of_recall()) return FALSE;
+ if (!recall_player(p_ptr, randint0(21) + 15)) return FALSE;
break;
}
case CLASS_SMITH:
if (cast)
{
- if (!word_of_recall()) return NULL;
+ if (!recall_player(p_ptr, randint0(21) + 15)) return NULL;
}
}
break;
if (cast)
{
- if (!word_of_recall()) return NULL;
+ if (!recall_player(p_ptr, randint0(21) + 15)) return NULL;
}
}
break;
if (cast)
{
- if (!word_of_recall()) return NULL;
+ if (!recall_player(p_ptr, randint0(21) + 15)) return NULL;
}
}
break;
if (cast)
{
- if (!word_of_recall()) return NULL;
+ if (!recall_player(p_ptr, randint0(21) + 15)) return NULL;
}
}
break;
* @param turns 発動までのターン数
* @return 常にTRUEを返す
*/
-bool recall_player(TIME_EFFECT turns)
+bool recall_player(player_type *creature_ptr, TIME_EFFECT turns)
{
/*
* TODO: Recall the player to the last
*/
/* Ironman option */
- if (p_ptr->inside_arena || ironman_downward)
+ if (creature_ptr->inside_arena || ironman_downward)
{
msg_print(_("何も起こらなかった。", "Nothing happens."));
return TRUE;
}
- if (dun_level && (max_dlv[dungeon_type] > dun_level) && !p_ptr->inside_quest && !p_ptr->word_recall)
+ if (dun_level && (max_dlv[dungeon_type] > dun_level) && !creature_ptr->inside_quest && !creature_ptr->word_recall)
{
if (get_check(_("ここは最深到達階より浅い階です。この階に戻って来ますか? ", "Reset recall depth? ")))
{
}
}
- if (!p_ptr->word_recall)
+ if (!creature_ptr->word_recall)
{
if (!dun_level)
{
DUNGEON_IDX select_dungeon;
select_dungeon = choose_dungeon(_("に帰還", "recall"), 2, 14);
if (!select_dungeon) return FALSE;
- p_ptr->recall_dungeon = select_dungeon;
+ creature_ptr->recall_dungeon = select_dungeon;
}
- p_ptr->word_recall = turns;
+ creature_ptr->word_recall = turns;
msg_print(_("回りの大気が張りつめてきた...", "The air about you becomes charged..."));
- p_ptr->redraw |= (PR_STATUS);
+ creature_ptr->redraw |= (PR_STATUS);
}
else
{
- p_ptr->word_recall = 0;
+ creature_ptr->word_recall = 0;
msg_print(_("張りつめた大気が流れ去った...", "A tension leaves the air around you..."));
- p_ptr->redraw |= (PR_STATUS);
+ creature_ptr->redraw |= (PR_STATUS);
}
return TRUE;
}
/*!
- * @brief 帰還用メインルーチン
- * @return 常にTRUEを返す
- */
-bool word_of_recall(void)
-{
- return(recall_player(randint0(21) + 15));
-}
-
-/*!
* @brief フロア・リセット処理
* @return リセット処理が実際に行われたらTRUEを返す
*/