/* Wipe the quests */
for (i = 0; i < max_quests; i++)
{
- quest[i].status = QUEST_STATUS_UNTAKEN;
-
- quest[i].cur_num = 0;
- quest[i].max_num = 0;
- quest[i].type = 0;
- quest[i].level = 0;
- quest[i].r_idx = 0;
- quest[i].complev = 0;
- quest[i].comptime = 0;
+ quest_type* const q_ptr = &quest[i];
+
+ q_ptr->status = QUEST_STATUS_UNTAKEN;
+
+ q_ptr->cur_num = 0;
+ q_ptr->max_num = 0;
+ q_ptr->type = 0;
+ q_ptr->level = 0;
+ q_ptr->r_idx = 0;
+ q_ptr->complev = 0;
+ q_ptr->comptime = 0;
}
/* No weight */
for (i = 1; i < max_quests; i++)
{
int q_idx = quest_num[i];
+ quest_type* const q_ptr = &quest[q_idx];
- if (quest[q_idx].status == QUEST_STATUS_FINISHED)
+ if (q_ptr->status == QUEST_STATUS_FINISHED)
{
if (is_fixed_quest_idx(q_idx))
{
p_ptr->inside_quest = old_quest;
/* No info from "silent" quests */
- if (quest[q_idx].flags & QUEST_FLAG_SILENT) continue;
+ if (q_ptr->flags & QUEST_FLAG_SILENT) continue;
}
total++;
- if (!is_fixed_quest_idx(q_idx) && quest[q_idx].r_idx)
+ if (!is_fixed_quest_idx(q_idx) && q_ptr->r_idx)
{
/* Print the quest info */
- if (quest[q_idx].complev == 0)
+ if (q_ptr->complev == 0)
{
sprintf(tmp_str,
_(" %-40s (%3d³¬) - ÉÔÀᄀ\n",
" %-40s (Dungeon level: %3d) - (Cancelled)\n") ,
- r_name+r_info[quest[q_idx].r_idx].name,
- quest[q_idx].level);
+ r_name+r_info[q_ptr->r_idx].name,
+ q_ptr->level);
}
else
{
sprintf(tmp_str,
_(" %-40s (%3d³¬) - ¥ì¥Ù¥ë%2d - %02d:%02d:%02d\n",
" %-40s (Dungeon level: %3d) - level %2d - %02d:%02d:%02d\n") ,
- r_name+r_info[quest[q_idx].r_idx].name,
- quest[q_idx].level,
- quest[q_idx].complev,
- quest[q_idx].comptime/(60*60), (quest[q_idx].comptime/60)%60, quest[q_idx].comptime%60);
+ r_name+r_info[q_ptr->r_idx].name,
+ q_ptr->level,
+ q_ptr->complev,
+ q_ptr->comptime/(60*60), (q_ptr->comptime/60)%60, q_ptr->comptime%60);
}
}
sprintf(tmp_str,
_(" %-40s (´í¸±ÅÙ:%3d³¬ÁêÅö) - ¥ì¥Ù¥ë%2d - %02d:%02d:%02d\n",
" %-40s (Danger level: %3d) - level %2d - %02d:%02d:%02d\n") ,
- quest[q_idx].name, quest[q_idx].level, quest[q_idx].complev, quest[q_idx].comptime/(60*60), (quest[q_idx].comptime/60)%60, quest[q_idx].comptime%60);
+ q_ptr->name, q_ptr->level, q_ptr->complev, q_ptr->comptime/(60*60), (q_ptr->comptime/60)%60, q_ptr->comptime%60);
}
fputs(tmp_str, fff);
for (i = 1; i < max_quests; i++)
{
int q_idx = quest_num[i];
+ quest_type* const q_ptr = &quest[q_idx];
- if ((quest[q_idx].status == QUEST_STATUS_FAILED_DONE) || (quest[q_idx].status == QUEST_STATUS_FAILED))
+ if ((q_ptr->status == QUEST_STATUS_FAILED_DONE) || (q_ptr->status == QUEST_STATUS_FAILED))
{
if (is_fixed_quest_idx(q_idx))
{
p_ptr->inside_quest = old_quest;
/* No info from "silent" quests */
- if (quest[q_idx].flags & QUEST_FLAG_SILENT) continue;
+ if (q_ptr->flags & QUEST_FLAG_SILENT) continue;
}
total++;
- if (!is_fixed_quest_idx(q_idx) && quest[q_idx].r_idx)
+ if (!is_fixed_quest_idx(q_idx) && q_ptr->r_idx)
{
/* Print the quest info */
sprintf(tmp_str,
_(" %-40s (%3d³¬) - ¥ì¥Ù¥ë%2d - %02d:%02d:%02d\n",
" %-40s (Dungeon level: %3d) - level %2d - %02d:%02d:%02d\n"),
- r_name+r_info[quest[q_idx].r_idx].name, quest[q_idx].level, quest[q_idx].complev, quest[q_idx].comptime/(60*60), (quest[q_idx].comptime/60)%60, quest[q_idx].comptime%60);
+ r_name+r_info[q_ptr->r_idx].name, q_ptr->level, q_ptr->complev, q_ptr->comptime/(60*60), (q_ptr->comptime/60)%60, q_ptr->comptime%60);
}
else
{
sprintf(tmp_str,
_(" %-40s (´í¸±ÅÙ:%3d³¬ÁêÅö) - ¥ì¥Ù¥ë%2d - %02d:%02d:%02d\n",
" %-40s (Danger level: %3d) - level %2d - %02d:%02d:%02d\n"),
- quest[q_idx].name, quest[q_idx].level, quest[q_idx].complev, quest[q_idx].comptime/(60*60), (quest[q_idx].comptime/60)%60, quest[q_idx].comptime%60);
+ q_ptr->name, q_ptr->level, q_ptr->complev, q_ptr->comptime/(60*60), (q_ptr->comptime/60)%60, q_ptr->comptime%60);
}
fputs(tmp_str, fff);
}
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;
- update_playtime();
- quest[leaving_quest].comptime = playtime;
-
- /* Additional settings */
- switch (quest[leaving_quest].type)
+ 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))
{
- case QUEST_TYPE_TOWER:
- quest[QUEST_TOWER1].status = QUEST_STATUS_FAILED;
- quest[QUEST_TOWER1].complev = (byte)p_ptr->lev;
- break;
- case QUEST_TYPE_FIND_ARTIFACT:
- a_info[quest[leaving_quest].k_idx].gen_flags &= ~(TRG_QUESTITEM);
- break;
- case QUEST_TYPE_RANDOM:
- r_info[quest[leaving_quest].r_idx].flags1 &= ~(RF1_QUESTOR);
+ q_ptr->status = QUEST_STATUS_FAILED;
+ q_ptr->complev = (byte)p_ptr->lev;
+ update_playtime();
+ q_ptr->comptime = playtime;
- /* Floor of random quest will be blocked */
- prepare_change_floor_mode(CFM_NO_RETURN);
- break;
- }
+ /* Additional settings */
+ switch (q_ptr->type)
+ {
+ case QUEST_TYPE_TOWER:
+ quest[QUEST_TOWER1].status = QUEST_STATUS_FAILED;
+ quest[QUEST_TOWER1].complev = (byte)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);
- /* Record finishing a quest */
- if (quest[leaving_quest].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);
+ /* 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);
+ }
}
}
}
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 < dun_level))
+ quest_type* const q_ptr = &quest[i];
+
+
+ if ((q_ptr->type == QUEST_TYPE_RANDOM) &&
+ (q_ptr->status == QUEST_STATUS_TAKEN) &&
+ (q_ptr->level < dun_level))
{
- quest[i].status = QUEST_STATUS_FAILED;
- quest[i].complev = (byte)p_ptr->lev;
+ q_ptr->status = QUEST_STATUS_FAILED;
+ q_ptr->complev = (byte)p_ptr->lev;
update_playtime();
- quest[leaving_quest].comptime = playtime;
- r_info[quest[i].r_idx].flags1 &= ~(RF1_QUESTOR);
+ q_ptr->comptime = playtime;
+ r_info[q_ptr->r_idx].flags1 &= ~(RF1_QUESTOR);
}
}
}
{
if (i < max_quests)
{
- rd_s16b(&quest[i].status);
- rd_s16b(&quest[i].level);
+ quest_type* const q_ptr = &quest[i];
+
+ rd_s16b(&q_ptr->status);
+ rd_s16b(&q_ptr->level);
if (z_older_than(11, 0, 6))
{
- quest[i].complev = 0;
+ q_ptr->complev = 0;
}
else
{
- rd_byte(&quest[i].complev);
+ rd_byte(&q_ptr->complev);
}
if(h_older_than(2, 1, 2, 2))
{
- quest[i].comptime = 0;
+ q_ptr->comptime = 0;
}
else
{
- rd_u32b(&quest[i].comptime);
+ rd_u32b(&q_ptr->comptime);
}
/* Load quest status if quest is running */
- if ((quest[i].status == QUEST_STATUS_TAKEN) ||
- (!z_older_than(10, 3, 14) && (quest[i].status == QUEST_STATUS_COMPLETED)) ||
+ if ((q_ptr->status == QUEST_STATUS_TAKEN) ||
+ (!z_older_than(10, 3, 14) && (q_ptr->status == QUEST_STATUS_COMPLETED)) ||
(!z_older_than(11, 0, 7) && (i >= MIN_RANDOM_QUEST) && (i <= (MIN_RANDOM_QUEST + max_rquests_load))))
{
- rd_s16b(&quest[i].cur_num);
- rd_s16b(&quest[i].max_num);
- rd_s16b(&quest[i].type);
+ rd_s16b(&q_ptr->cur_num);
+ rd_s16b(&q_ptr->max_num);
+ rd_s16b(&q_ptr->type);
/* Load quest monster index */
- rd_s16b(&quest[i].r_idx);
+ rd_s16b(&q_ptr->r_idx);
- if ((quest[i].type == QUEST_TYPE_RANDOM) && (!quest[i].r_idx))
+ if ((q_ptr->type == QUEST_TYPE_RANDOM) && (!q_ptr->r_idx))
{
determine_random_questor(&quest[i]);
}
/* Load quest item index */
- rd_s16b(&quest[i].k_idx);
+ rd_s16b(&q_ptr->k_idx);
- if (quest[i].k_idx)
- a_info[quest[i].k_idx].gen_flags |= TRG_QUESTITEM;
+ if (q_ptr->k_idx)
+ a_info[q_ptr->k_idx].gen_flags |= TRG_QUESTITEM;
- rd_byte(&quest[i].flags);
+ rd_byte(&q_ptr->flags);
if (z_older_than(10, 3, 11))
{
- if (quest[i].flags & QUEST_FLAG_PRESET)
+ if (q_ptr->flags & QUEST_FLAG_PRESET)
{
- quest[i].dungeon = 0;
+ q_ptr->dungeon = 0;
}
else
{
}
else
{
- rd_byte(&quest[i].dungeon);
+ rd_byte(&q_ptr->dungeon);
}
/* Mark uniques */
- if (quest[i].status == QUEST_STATUS_TAKEN || quest[i].status == QUEST_STATUS_UNTAKEN)
- if (r_info[quest[i].r_idx].flags1 & RF1_UNIQUE)
- r_info[quest[i].r_idx].flags1 |= RF1_QUESTOR;
+ if (q_ptr->status == QUEST_STATUS_TAKEN || q_ptr->status == QUEST_STATUS_UNTAKEN)
+ if (r_info[q_ptr->r_idx].flags1 & RF1_UNIQUE)
+ r_info[q_ptr->r_idx].flags1 |= RF1_QUESTOR;
}
}
/* Ignore the empty quests from old versions */
for (i = 0; i < max_quests; i++)
{
+ quest_type* const q_ptr = &quest[i];
+
/* Save status for every quest */
- wr_s16b(quest[i].status);
+ wr_s16b(q_ptr->status);
/* And the dungeon level too */
/* (prevents problems with multi-level quests) */
- wr_s16b(quest[i].level);
+ wr_s16b(q_ptr->level);
- wr_byte(quest[i].complev);
- wr_u32b(quest[i].comptime);
+ wr_byte(q_ptr->complev);
+ wr_u32b(q_ptr->comptime);
/* Save quest status if quest is running */
- if (quest[i].status == QUEST_STATUS_TAKEN || quest[i].status == QUEST_STATUS_COMPLETED || !is_fixed_quest_idx(i))
+ if (q_ptr->status == QUEST_STATUS_TAKEN || q_ptr->status == QUEST_STATUS_COMPLETED || !is_fixed_quest_idx(i))
{
- wr_s16b(quest[i].cur_num);
- wr_s16b(quest[i].max_num);
- wr_s16b(quest[i].type);
- wr_s16b(quest[i].r_idx);
- wr_s16b(quest[i].k_idx);
- wr_byte(quest[i].flags);
- wr_byte(quest[i].dungeon);
+ wr_s16b(q_ptr->cur_num);
+ wr_s16b(q_ptr->max_num);
+ wr_s16b(q_ptr->type);
+ wr_s16b(q_ptr->r_idx);
+ wr_s16b(q_ptr->k_idx);
+ wr_byte(q_ptr->flags);
+ wr_byte(q_ptr->dungeon);
}
}
void complete_quest(int quest_num)
{
- switch (quest[quest_num].type)
+ quest_type* const q_ptr = &quest[quest_num];
+
+ switch (q_ptr->type)
{
case QUEST_TYPE_RANDOM:
if (record_rand_quest) do_cmd_write_nikki(NIKKI_RAND_QUEST_C, quest_num, NULL);
break;
}
- quest[quest_num].status = QUEST_STATUS_COMPLETED;
- quest[quest_num].complev = (byte)p_ptr->lev;
+ q_ptr->status = QUEST_STATUS_COMPLETED;
+ q_ptr->complev = (byte)p_ptr->lev;
update_playtime();
- quest[quest_num].comptime = playtime;
+ q_ptr->comptime = playtime;
- if (!(quest[quest_num].flags & QUEST_FLAG_SILENT))
+ if (!(q_ptr->flags & QUEST_FLAG_SILENT))
{
msg_print(_("¥¯¥¨¥¹¥È¤òãÀ®¤·¤¿¡ª", "You just completed your quest!"));
msg_print(NULL);
x = m_ptr->fx;
/* Inside a quest */
- quest_num = p_ptr->inside_quest;
+ quest_num = p_ptr->inside_quest;
/* Search for an active quest on this dungeon level */
if (!quest_num)
{
for (i = max_quests - 1; i > 0; i--)
{
+ quest_type* const q_ptr = &quest[i];
+
/* Quest is not active */
- if (quest[i].status != QUEST_STATUS_TAKEN)
+ if (q_ptr->status != QUEST_STATUS_TAKEN)
continue;
/* Quest is not a dungeon quest */
- if (quest[i].flags & QUEST_FLAG_PRESET)
+ if (q_ptr->flags & QUEST_FLAG_PRESET)
continue;
/* Quest is not on this level */
- if ((quest[i].level != dun_level) &&
- (quest[i].type != QUEST_TYPE_KILL_ANY_LEVEL))
+ if ((q_ptr->level != dun_level) &&
+ (q_ptr->type != QUEST_TYPE_KILL_ANY_LEVEL))
continue;
/* Not a "kill monster" quest */
- if ((quest[i].type == QUEST_TYPE_FIND_ARTIFACT) ||
- (quest[i].type == QUEST_TYPE_FIND_EXIT))
+ if ((q_ptr->type == QUEST_TYPE_FIND_ARTIFACT) ||
+ (q_ptr->type == QUEST_TYPE_FIND_EXIT))
continue;
/* Interesting quest */
- if ((quest[i].type == QUEST_TYPE_KILL_NUMBER) ||
- (quest[i].type == QUEST_TYPE_TOWER) ||
- (quest[i].type == QUEST_TYPE_KILL_ALL))
+ if ((q_ptr->type == QUEST_TYPE_KILL_NUMBER) ||
+ (q_ptr->type == QUEST_TYPE_TOWER) ||
+ (q_ptr->type == QUEST_TYPE_KILL_ALL))
break;
/* Interesting quest */
- if (((quest[i].type == QUEST_TYPE_KILL_LEVEL) ||
- (quest[i].type == QUEST_TYPE_KILL_ANY_LEVEL) ||
- (quest[i].type == QUEST_TYPE_RANDOM)) &&
- (quest[i].r_idx == m_ptr->r_idx))
+ if (((q_ptr->type == QUEST_TYPE_KILL_LEVEL) ||
+ (q_ptr->type == QUEST_TYPE_KILL_ANY_LEVEL) ||
+ (q_ptr->type == QUEST_TYPE_RANDOM)) &&
+ (q_ptr->r_idx == m_ptr->r_idx))
break;
}
{
/* Current quest */
i = quest_num;
+ quest_type* const q_ptr = &quest[i];
- switch (quest[i].type)
+ switch (q_ptr->type)
{
case QUEST_TYPE_KILL_NUMBER:
{
- quest[i].cur_num++;
+ q_ptr->cur_num++;
- if (quest[i].cur_num >= quest[i].num_mon)
+ if (q_ptr->cur_num >= q_ptr->num_mon)
{
complete_quest(i);
- quest[i].cur_num = 0;
+ q_ptr->cur_num = 0;
}
break;
}
if (count_all_hostile_monsters() == 1)
{
- if (quest[i].flags & QUEST_FLAG_SILENT)
+ if (q_ptr->flags & QUEST_FLAG_SILENT)
{
- quest[i].status = QUEST_STATUS_FINISHED;
+ q_ptr->status = QUEST_STATUS_FINISHED;
}
else
{
case QUEST_TYPE_RANDOM:
{
/* Only count valid monsters */
- if (quest[i].r_idx != m_ptr->r_idx)
+ if (q_ptr->r_idx != m_ptr->r_idx)
break;
- quest[i].cur_num++;
+ q_ptr->cur_num++;
- if (quest[i].cur_num >= quest[i].max_num)
+ if (q_ptr->cur_num >= q_ptr->max_num)
{
complete_quest(i);
- if (!(quest[i].flags & QUEST_FLAG_PRESET))
+ if (!(q_ptr->flags & QUEST_FLAG_PRESET))
{
create_stairs = TRUE;
p_ptr->inside_quest = 0;
/* Finish the two main quests without rewarding */
if ((i == QUEST_OBERON) || (i == QUEST_SERPENT))
{
- quest[i].status = QUEST_STATUS_FINISHED;
+ q_ptr->status = QUEST_STATUS_FINISHED;
}
- if (quest[i].type == QUEST_TYPE_RANDOM)
+ if (q_ptr->type == QUEST_TYPE_RANDOM)
{
reward = TRUE;
- quest[i].status = QUEST_STATUS_FINISHED;
+ q_ptr->status = QUEST_STATUS_FINISHED;
}
}
break;
}
case QUEST_TYPE_KILL_ANY_LEVEL:
{
- quest[i].cur_num++;
- if (quest[i].cur_num >= quest[i].max_num)
+ q_ptr->cur_num++;
+ if (q_ptr->cur_num >= q_ptr->max_num)
{
complete_quest(i);
- quest[i].cur_num = 0;
+ q_ptr->cur_num = 0;
}
break;
}
if (count_all_hostile_monsters() == 1)
{
- quest[i].status = QUEST_STATUS_STAGE_COMPLETED;
+ q_ptr->status = QUEST_STATUS_STAGE_COMPLETED;
if((quest[QUEST_TOWER1].status == QUEST_STATUS_STAGE_COMPLETED) &&
(quest[QUEST_TOWER2].status == QUEST_STATUS_STAGE_COMPLETED) &&