p_ptr->oldpy = 0;
p_ptr->oldpx = 0;
- leaving_quest = p_ptr->inside_quest;
-
- /* Leaving an 'only once' quest marks it as failed */
- if (leaving_quest &&
- ((quest[leaving_quest].flags & QUEST_FLAG_ONCE) || (quest[leaving_quest].type == QUEST_TYPE_RANDOM)) &&
- (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
- {
- quest[leaving_quest].status = QUEST_STATUS_FAILED;
- quest[leaving_quest].complev = (byte)p_ptr->lev;
- if (quest[leaving_quest].type == QUEST_TYPE_RANDOM)
- {
- r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
- 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);
- }
+ leave_quest_check();
p_ptr->inside_quest = cave[py][px].special;
if(quest[leaving_quest].type != QUEST_TYPE_RANDOM) dun_level = 1;
msg_print(NULL);
}
- leaving_quest = p_ptr->inside_quest;
-
- /* Leaving an 'only once' quest marks it as failed */
- if (leaving_quest &&
- ((quest[leaving_quest].flags & QUEST_FLAG_ONCE) || (quest[leaving_quest].type == QUEST_TYPE_RANDOM)) &&
- (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
- {
- if ((quest[leaving_quest].type == QUEST_TYPE_RANDOM) && 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);
- quest[leaving_quest].status = QUEST_STATUS_FAILED;
- quest[leaving_quest].complev = (byte)p_ptr->lev;
- if (quest[leaving_quest].type == QUEST_TYPE_RANDOM)
- r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
- }
+ leave_quest_check();
p_ptr->inside_quest = cave[y][x].special;
dun_level = 0;
#endif
- leaving_quest = p_ptr->inside_quest;
- p_ptr->inside_quest = c_ptr->special;
+ leave_quest_check();
- /* Leaving an 'only once' quest marks it as failed */
- if (leaving_quest &&
- ((quest[leaving_quest].flags & QUEST_FLAG_ONCE) || (quest[leaving_quest].type == QUEST_TYPE_RANDOM)) &&
- (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
- {
- quest[leaving_quest].status = QUEST_STATUS_FAILED;
- quest[leaving_quest].complev = (byte)p_ptr->lev;
- if (quest[leaving_quest].type == QUEST_TYPE_RANDOM)
- {
- r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
- 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);
- }
+ p_ptr->inside_quest = c_ptr->special;
/* Activate the quest */
if (!quest[p_ptr->inside_quest].status)
if (p_ptr->inside_quest)
{
- leaving_quest = p_ptr->inside_quest;
- if (quest[leaving_quest].type != QUEST_TYPE_RANDOM) dun_level = 1;
+ if (quest[p_ptr->inside_quest].type != QUEST_TYPE_RANDOM) dun_level = 1;
- /* Leaving an 'only once' quest marks it as failed */
- if (leaving_quest &&
- ((quest[leaving_quest].flags & QUEST_FLAG_ONCE) || (quest[leaving_quest].type == QUEST_TYPE_RANDOM)) &&
- (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
- {
- quest[leaving_quest].status = QUEST_STATUS_FAILED;
- quest[leaving_quest].complev = (byte)p_ptr->lev;
- if (quest[leaving_quest].type == QUEST_TYPE_RANDOM)
- {
- r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
- 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);
- }
+ leave_quest_check();
p_ptr->inside_quest = c_ptr->special;
}
#endif
- leaving_quest = p_ptr->inside_quest;
-
- /* Leaving an 'only once' quest marks it as failed */
- if (leaving_quest &&
- ((quest[leaving_quest].flags & QUEST_FLAG_ONCE) || (quest[leaving_quest].type == QUEST_TYPE_RANDOM)) &&
- (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
- {
- quest[leaving_quest].status = QUEST_STATUS_FAILED;
- quest[leaving_quest].complev = (byte)p_ptr->lev;
- if (quest[leaving_quest].type == QUEST_TYPE_RANDOM)
- {
- r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
- 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);
- }
+ leave_quest_check();
p_ptr->inside_quest = c_ptr->special;
msg_print(NULL);
}
- leaving_quest = p_ptr->inside_quest;
-
- /* Leaving an 'only once' quest marks it as failed */
- if (leaving_quest &&
- ((quest[leaving_quest].flags & QUEST_FLAG_ONCE) || (quest[leaving_quest].type == QUEST_TYPE_RANDOM)) &&
- (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
- {
- quest[leaving_quest].status = QUEST_STATUS_FAILED;
- quest[leaving_quest].complev = (byte)p_ptr->lev;
- if (quest[leaving_quest].type == QUEST_TYPE_RANDOM)
- {
- r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
- 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);
- }
+ leave_quest_check();
p_ptr->inside_quest = cave[py][px].special;
dun_level = 0;
}
+void leave_quest_check(void)
+{
+ /* Save quset 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[leaving_quest].flags & QUEST_FLAG_ONCE) || (quest[leaving_quest].type == QUEST_TYPE_RANDOM)) &&
+ (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
+ {
+ quest[leaving_quest].status = QUEST_STATUS_FAILED;
+ quest[leaving_quest].complev = (byte)p_ptr->lev;
+ if (quest[leaving_quest].type == QUEST_TYPE_RANDOM)
+ {
+ r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
+ 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);
+ }
+}
+
+
/*
* Forcibly pseudo-identify an object in the inventory
* (or on the floor)
dun_level = 0;
dungeon_type = 0;
- leaving_quest = p_ptr->inside_quest;
-
- /* Leaving an 'only once' quest marks it as failed */
- if (leaving_quest &&
- ((quest[leaving_quest].flags & QUEST_FLAG_ONCE) || (quest[leaving_quest].type == QUEST_TYPE_RANDOM)) &&
- (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
- {
- quest[leaving_quest].status = QUEST_STATUS_FAILED;
- quest[leaving_quest].complev = (byte)p_ptr->lev;
- if (quest[leaving_quest].type == QUEST_TYPE_RANDOM)
- {
- r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
- 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);
- }
+ leave_quest_check();
p_ptr->inside_quest = 0;
p_ptr->leaving = TRUE;
extern void do_cmd_magic_eater(void);
/* dungeon.c */
+extern void leave_quest_check(void);
extern void play_game(bool new_game);
extern bool psychometry(void);
extern void leave_level(int level);
if (!dun_level) dungeon_type = 0;
- leaving_quest = p_ptr->inside_quest;
-
- if (leaving_quest &&
- ((quest[leaving_quest].flags & QUEST_FLAG_ONCE) || (quest[leaving_quest].type == QUEST_TYPE_RANDOM)) &&
- (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
- {
- quest[leaving_quest].status = QUEST_STATUS_FAILED;
- quest[leaving_quest].complev = (byte)p_ptr->lev;
- if (quest[leaving_quest].type == QUEST_TYPE_RANDOM)
- {
- r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
- 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);
- }
+ leave_quest_check();
/* Leaving */
p_ptr->inside_quest = 0;
if (!dun_level) dungeon_type = 0;
p_ptr->inside_arena = FALSE;
- leaving_quest = p_ptr->inside_quest;
- /* Leaving an 'only once' quest marks it as failed */
- if (leaving_quest &&
- (quest[leaving_quest].flags & QUEST_FLAG_ONCE) &&
- (quest[leaving_quest].status == QUEST_STATUS_TAKEN))
- {
- quest[leaving_quest].status = QUEST_STATUS_FAILED;
- quest[leaving_quest].complev = (byte)p_ptr->lev;
- if (record_fix_quest)
- do_cmd_write_nikki(NIKKI_FIX_QUEST_F, leaving_quest, NULL);
- }
+ leave_quest_check();
if (record_stair) do_cmd_write_nikki(NIKKI_WIZ_TELE,0,NULL);