if (q_num == 1)
{
/* Unique */
+
+ /* Hack -- "unique" monsters must be "unique" */
+ if ((r_ptr->flags1 & RF1_UNIQUE) &&
+ (r_ptr->cur_num >= r_ptr->max_num))
+ {
#ifdef JP
-msg_format("Ãí°Õ¤»¤è¡ª¤³¤Î³¬¤Ï%s¤Ë¤è¤Ã¤Æ¼é¤é¤ì¤Æ¤¤¤ë¡ª", name);
+ msg_print("¤³¤Î³¬¤Ï°ÊÁ°¤Ï狼¤Ë¤è¤Ã¤Æ¼é¤é¤ì¤Æ¤¤¤¿¤è¤¦¤À¡Ä¡£");
#else
- msg_format("Beware, this level is protected by %s!", name);
+ msg_print("It seems that this level was protected by someone before...");
#endif
-
+ /* The unique is already dead */
+ quest[q_idx].status = QUEST_STATUS_FINISHED;
+ }
+ else
+ {
+#ifdef JP
+ msg_format("Ãí°Õ¤»¤è¡ª¤³¤Î³¬¤Ï%s¤Ë¤è¤Ã¤Æ¼é¤é¤ì¤Æ¤¤¤ë¡ª", name);
+#else
+ msg_format("Beware, this level is protected by %s!", name);
+#endif
+ }
}
else
{
if ((i >= MIN_RANDOM_QUEST) && quest[i].r_idx)
{
/* Print the quest info */
+
+ if (quest[i].complev == 0)
+ {
+ sprintf(tmp_str,
#ifdef JP
- sprintf(tmp_str, "%s (%d³¬) - ¥ì¥Ù¥ë%d\n",
+ "%s (%d³¬) - ÉÔÀᄀ\n",
#else
- sprintf(tmp_str, "%s (Dungeon level: %d) - level %d\n",
+ "%s (Dungeon level: %d) - (Cancelled)\n",
#endif
-
- r_name+r_info[quest[i].r_idx].name, quest[i].level, quest[i].complev);
+ r_name+r_info[quest[i].r_idx].name,
+ quest[i].level);
+ }
+ else
+ {
+ sprintf(tmp_str,
+#ifdef JP
+ "%s (%d³¬) - ¥ì¥Ù¥ë%d\n",
+#else
+ "%s (Dungeon level: %d) - level %d\n",
+#endif
+ r_name+r_info[quest[i].r_idx].name,
+ quest[i].level,
+ quest[i].complev);
+ }
}
else
{
}
else if (feat == FEAT_MORE)
{
+ int q_idx = quest_number(dun_level);
+
/* No downstairs on quest levels */
- if ((dun_level > 1) && quest_number(dun_level)) return TRUE;
+ if (dun_level > 1 && q_idx)
+ {
+ monster_race *r_ptr = &r_info[quest[q_idx].r_idx];
+
+ /* The unique monster is still alive? */
+ if ((r_ptr->flags1 & RF1_UNIQUE) &&
+ (0 < r_ptr->max_num))
+ return TRUE;
+ }
/* No downstairs at the bottom */
if (dun_level >= d_info[dungeon_type].maxdepth) return TRUE;
(r_ptr->cur_num >= r_ptr->max_num))
{
/* The unique is already dead */
- quest[i].status = QUEST_STATUS_FINISHED;
}
else
{