#include "quest.h"
#include "artifact.h"
#include "avatar.h"
+#include "player-move.h"
#include "player-status.h"
#include "cmd-spell.h"
#include "realm-hex.h"
}
/*!
- * @brief 種族アンバライトが出血時パターンの上に乗った際のペナルティ処理
- * @return なし
- */
-static void wreck_the_pattern(void)
-{
- int to_ruin = 0;
- POSITION r_y, r_x;
- int pattern_type = f_info[current_floor_ptr->grid_array[p_ptr->y][p_ptr->x].feat].subtype;
-
- if (pattern_type == PATTERN_TILE_WRECKED)
- {
- /* Ruined already */
- return;
- }
-
- 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);
- to_ruin = randint1(45) + 35;
-
- while (to_ruin--)
- {
- scatter(&r_y, &r_x, p_ptr->y, p_ptr->x, 4, 0);
-
- if (pattern_tile(r_y, r_x) &&
- (f_info[current_floor_ptr->grid_array[r_y][r_x].feat].subtype != PATTERN_TILE_WRECKED))
- {
- cave_set_feat(r_y, r_x, feat_pattern_corrupted);
- }
- }
-
- cave_set_feat(p_ptr->y, p_ptr->x, feat_pattern_corrupted);
-}
-
-/*!
* @brief 各種パターン地形上の特別な処理 / Returns TRUE if we are on the Pattern...
* @return 実際にパターン地形上にプレイヤーが居た場合はTRUEを返す。
*/
}
}
-/*!
- * @brief クエスト階層から離脱する際の処理
- * @return なし
- */
-void leave_quest_check(void)
-{
- /* Save quest number for dungeon pref file ($LEAVING_QUEST) */
- leaving_quest = p_ptr->inside_quest;
-
- /* Leaving an 'only once' quest marks it as failed */
- if (leaving_quest)
- {
- quest_type* const q_ptr = &quest[leaving_quest];
-
- if(((q_ptr->flags & QUEST_FLAG_ONCE) || (q_ptr->type == QUEST_TYPE_RANDOM)) &&
- (q_ptr->status == QUEST_STATUS_TAKEN))
- {
- q_ptr->status = QUEST_STATUS_FAILED;
- q_ptr->complev = p_ptr->lev;
- update_playtime();
- q_ptr->comptime = playtime;
-
- /* Additional settings */
- switch (q_ptr->type)
- {
- case QUEST_TYPE_TOWER:
- quest[QUEST_TOWER1].status = QUEST_STATUS_FAILED;
- quest[QUEST_TOWER1].complev = p_ptr->lev;
- break;
- case QUEST_TYPE_FIND_ARTIFACT:
- a_info[q_ptr->k_idx].gen_flags &= ~(TRG_QUESTITEM);
- break;
- case QUEST_TYPE_RANDOM:
- r_info[q_ptr->r_idx].flags1 &= ~(RF1_QUESTOR);
-
- /* Floor of random quest will be blocked */
- prepare_change_floor_mode(CFM_NO_RETURN);
- break;
- }
-
- /* Record finishing a quest */
- if (q_ptr->type == QUEST_TYPE_RANDOM)
- {
- if (record_rand_quest) do_cmd_write_nikki(NIKKI_RAND_QUEST_F, leaving_quest, NULL);
- }
- else
- {
- if (record_fix_quest) do_cmd_write_nikki(NIKKI_FIX_QUEST_F, leaving_quest, NULL);
- }
- }
- }
-}
-
-/*!
- * @brief 「塔」クエストの各階層から離脱する際の処理
- * @return なし
- */
-void leave_tower_check(void)
-{
- leaving_quest = p_ptr->inside_quest;
- /* Check for Tower Quest */
- if (leaving_quest &&
- (quest[leaving_quest].type == QUEST_TYPE_TOWER) &&
- (quest[QUEST_TOWER1].status != QUEST_STATUS_COMPLETED))
- {
- if(quest[leaving_quest].type == QUEST_TYPE_TOWER)
- {
- quest[QUEST_TOWER1].status = QUEST_STATUS_FAILED;
- quest[QUEST_TOWER1].complev = p_ptr->lev;
- update_playtime();
- quest[QUEST_TOWER1].comptime = playtime;
- }
- }
-}
-
/*!
* @brief !!を刻んだ魔道具の時間経過による再充填を知らせる処理 / If player has inscribed the object with "!!", let him know when it's recharged. -LM-
q_ptr->status = QUEST_STATUS_FAILED;
q_ptr->complev = (byte)p_ptr->lev;
update_playtime();
- q_ptr->comptime = playtime;
+ q_ptr->comptime = current_world_ptr->play_time;
r_info[q_ptr->r_idx].flags1 &= ~(RF1_QUESTOR);
}
}
/*** Check for interupts ***/
/* Complete resting */
- if (resting < 0)
+ if (p_ptr->resting < 0)
{
/* Basic resting */
- if (resting == COMMAND_ARG_REST_FULL_HEALING)
+ if (p_ptr->resting == COMMAND_ARG_REST_FULL_HEALING)
{
/* Stop resting */
if ((p_ptr->chp == p_ptr->mhp) &&
}
/* Complete resting */
- else if (resting == COMMAND_ARG_REST_UNTIL_DONE)
+ else if (p_ptr->resting == COMMAND_ARG_REST_UNTIL_DONE)
{
/* Stop resting */
if ((p_ptr->chp == p_ptr->mhp) &&
else if (p_ptr->action == ACTION_REST)
{
/* Timed rest */
- if (resting > 0)
+ if (p_ptr->resting > 0)
{
/* Reduce rest count */
- resting--;
+ p_ptr->resting--;
- if (!resting) set_action(ACTION_NONE);
+ if (!p_ptr->resting) set_action(ACTION_NONE);
p_ptr->redraw |= (PR_STATE);
}