/*
- * Process line for auto picker/destroyer.
- */
-static errr process_pickpref_file_line(char *buf)
-{
- autopick_type entry;
- int i;
-
- if (max_autopick == MAX_AUTOPICK)
- return 1;
-
- /* Nuke illegal char */
- for(i = 0; buf[i]; i++)
- {
-#ifdef JP
- if (iskanji(buf[i]))
- {
- i++;
- continue;
- }
-#endif
- if (isspace(buf[i]) && buf[i] != ' ')
- break;
- }
- buf[i] = 0;
-
- if (!autopick_new_entry(&entry, buf)) return 0;
-
- /* Already has the same entry? */
- for(i = 0; i < max_autopick; i++)
- if(!strcmp(entry.name, autopick_list[i].name)
- && entry.flag[0] == autopick_list[i].flag[0]
- && entry.flag[1] == autopick_list[i].flag[1]) return 0;
-
- autopick_list[max_autopick++] = entry;
- return 0;
-}
-
-
-
-/*
* Open the "user pref file" and parse it.
*/
static errr process_pref_file_aux(cptr name, bool read_pickpref)
{29, 5, 21, "Weight"},
{29, 6, 21, "Social Class"},
{29, 7, 21, "Align"},
- {29, 14, 21, "Constraction"},
+ {29, 14, 21, "Construction"},
};
#endif
/* Mode flags for displaying player flags */
#define DP_CURSE 0x01
#define DP_IMM 0x02
-#define DP_ESP 0x04
#define DP_WP 0x08
if ((mode & DP_CURSE) && (o_ptr->curse_flags & TRC_PERMA_CURSE))
c_put_str(TERM_WHITE, "*", row, col);
}
- else if (mode & DP_ESP)
- {
- if (have_flag(flgs, TR_TELEPATHY))
- c_put_str(TERM_WHITE, "*", row, col);
- else if (have_flag(flgs, TR_ESP_EVIL))
- c_put_str(TERM_L_DARK, "*", row, col);
- else if (have_flag(flgs, TR_ESP_NONLIVING))
- c_put_str(TERM_BLUE, "+", row, col);
- else if (have_flag(flgs, TR_ESP_GOOD))
- c_put_str(TERM_WHITE, "+", row, col);
- else if (have_flag(flgs, TR_ESP_UNDEAD))
- c_put_str(TERM_L_DARK, "+", row, col);
- else if (have_flag(flgs, TR_ESP_DEMON))
- c_put_str(TERM_RED, "+", row, col);
- else if (have_flag(flgs, TR_ESP_DRAGON))
- c_put_str(TERM_GREEN, "+", row, col);
- else if (have_flag(flgs, TR_ESP_HUMAN))
- c_put_str(TERM_YELLOW, "+", row, col);
- else if (have_flag(flgs, TR_ESP_UNIQUE))
- c_put_str(TERM_VIOLET, "+", row, col);
- else if (have_flag(flgs, TR_ESP_ANIMAL))
- c_put_str(TERM_L_GREEN, "+", row, col);
- else if (have_flag(flgs, TR_ESP_ORC))
- c_put_str(TERM_L_UMBER, "+", row, col);
- else if (have_flag(flgs, TR_ESP_TROLL))
- c_put_str(TERM_SLATE, "+", row, col);
- else if (have_flag(flgs, TR_ESP_GIANT))
- c_put_str(TERM_ORANGE, "+", row, col);
- }
else
{
if (have_flag(flgs, flag1))
display_flag_aux(row+1, col, "ÂÑËãáã :", TR_FREE_ACT, &f, 0);
display_flag_aux(row+2, col, "Æ©ÌÀÂλëǧ:", TR_SEE_INVIS, &f, 0);
display_flag_aux(row+3, col, "·Ð¸³ÃÍÊÝ»ý:", TR_HOLD_LIFE, &f, 0);
-display_flag_aux(row+4, col, "¥Æ¥ì¥Ñ¥·¡¼:", TR_TELEPATHY, &f, DP_ESP);
+display_flag_aux(row+4, col, "·Ù¹ð :", TR_WARNING, &f, 0);
display_flag_aux(row+5, col, "Ãپò½ :", TR_SLOW_DIGEST, &f, 0);
display_flag_aux(row+6, col, "µÞ²óÉü :", TR_REGEN, &f, 0);
display_flag_aux(row+7, col, "ÉâÍ· :", TR_FEATHER, &f, 0);
display_flag_aux(row+1, col, "FreeAction:", TR_FREE_ACT, &f, 0);
display_flag_aux(row+2, col, "SeeInvisi.:", TR_SEE_INVIS, &f, 0);
display_flag_aux(row+3, col, "Hold Life :", TR_HOLD_LIFE, &f, 0);
- display_flag_aux(row+4, col, "Telepathy :", TR_TELEPATHY, &f, DP_ESP);
+ display_flag_aux(row+4, col, "Warning :", TR_WARNING, &f, 0);
display_flag_aux(row+5, col, "SlowDigest:", TR_SLOW_DIGEST, &f, 0);
display_flag_aux(row+6, col, "Regene. :", TR_REGEN, &f, 0);
display_flag_aux(row+7, col, "Levitation:", TR_FEATHER, &f, 0);
/*** Set 1 ***/
row = 3;
- col = 2;
+ col = 1;
display_player_equippy(row-2, col+12, DP_WP);
/*** Set 3 ***/
row = 3;
- col = col + 12 + 18;
+ col = col + 12 + 17;
display_player_equippy(row-2, col+14, 0);
display_flag_aux(row+ 7, col, "¾èÇÏ :", TR_RIDING, &f, 0);
display_flag_aux(row+ 8, col, "ÅêÚ³ :", TR_THROW, &f, 0);
- display_flag_aux(row+ 9, col, "È¿¥Æ¥ì¥Ý¡¼¥È:", TR_NO_TELE, &f, 0);
- display_flag_aux(row+10, col, "ȿËâË¡ :", TR_NO_MAGIC, &f, 0);
- display_flag_aux(row+11, col, "¾ÃÈñËâÎϸº¾¯:", TR_DEC_MANA, &f, 0);
- display_flag_aux(row+12, col, "·Ù¹ð :", TR_WARNING, &f, 0);
- display_flag_aux(row+13, col, "½ËÊ¡ :", TR_BLESSED, &f, 0);
- display_flag_aux(row+15, col, "·Ð¸³Ã͸º¾¯ :", TR_DRAIN_EXP, &f, 0);
- display_flag_aux(row+16, col, "Íð¥Æ¥ì¥Ý¡¼¥È:", TR_TELEPORT, &f, 0);
- display_flag_aux(row+17, col, "È¿´¶ :", TR_AGGRAVATE, &f, 0);
- display_flag_aux(row+18, col, "ÂÀ¸Å¤Î±åÇ° :", TR_TY_CURSE, &f, 0);
+ display_flag_aux(row+ 9, col, "½ËÊ¡ :", TR_BLESSED, &f, 0);
+ display_flag_aux(row+10, col, "ȿ¥Æ¥ì¥Ý¡¼¥È:", TR_NO_TELE, &f, 0);
+ display_flag_aux(row+11, col, "È¿ËâË¡ :", TR_NO_MAGIC, &f, 0);
+ display_flag_aux(row+12, col, "¾ÃÈñËâÎϸº¾¯:", TR_DEC_MANA, &f, 0);
+
+ display_flag_aux(row+14, col, "·Ð¸³Ã͸º¾¯ :", TR_DRAIN_EXP, &f, 0);
+ display_flag_aux(row+15, col, "Íð¥Æ¥ì¥Ý¡¼¥È:", TR_TELEPORT, &f, 0);
+ display_flag_aux(row+16, col, "È¿´¶ :", TR_AGGRAVATE, &f, 0);
+ display_flag_aux(row+17, col, "ÂÀ¸Å¤Î±åÇ° :", TR_TY_CURSE, &f, 0);
#else
display_flag_aux(row+ 0, col, "Add Blows :", TR_BLOWS, &f, 0);
display_flag_aux(row+ 1, col, "Add Tunnel :", TR_TUNNEL, &f, 0);
display_flag_aux(row+ 7, col, "Riding :", TR_RIDING, &f, 0);
display_flag_aux(row+ 8, col, "Throw :", TR_THROW, &f, 0);
- display_flag_aux(row+ 9, col, "No Teleport :", TR_NO_TELE, &f, 0);
- display_flag_aux(row+10, col, "Anti Magic :", TR_NO_MAGIC, &f, 0);
- display_flag_aux(row+11, col, "Econom. Mana:", TR_DEC_MANA, &f, 0);
- display_flag_aux(row+12, col, "Warning :", TR_WARNING, &f, 0);
- display_flag_aux(row+13, col, "Blessed :", TR_BLESSED, &f, 0);
- display_flag_aux(row+15, col, "Drain Exp :", TR_DRAIN_EXP, &f, 0);
- display_flag_aux(row+16, col, "Rnd.Teleport:", TR_TELEPORT, &f, 0);
- display_flag_aux(row+17, col, "Aggravate :", TR_AGGRAVATE, &f, 0);
- display_flag_aux(row+18, col, "TY Curse :", TR_TY_CURSE, &f, 0);
+ display_flag_aux(row+ 9, col, "Blessed :", TR_BLESSED, &f, 0);
+ display_flag_aux(row+10, col, "No Teleport :", TR_NO_TELE, &f, 0);
+ display_flag_aux(row+11, col, "Anti Magic :", TR_NO_MAGIC, &f, 0);
+ display_flag_aux(row+12, col, "Econom. Mana:", TR_DEC_MANA, &f, 0);
+
+ display_flag_aux(row+14, col, "Drain Exp :", TR_DRAIN_EXP, &f, 0);
+ display_flag_aux(row+15, col, "Rnd.Teleport:", TR_TELEPORT, &f, 0);
+ display_flag_aux(row+16, col, "Aggravate :", TR_AGGRAVATE, &f, 0);
+ display_flag_aux(row+17, col, "TY Curse :", TR_TY_CURSE, &f, 0);
#endif
}
}
}
+static bool ang_sort_comp_quest_num(vptr u, vptr v, int a, int b)
+{
+ int *q_num = (int *)u;
+ quest_type *qa = &quest[q_num[a]];
+ quest_type *qb = &quest[q_num[b]];
+
+ if (qa->complev < qb->complev) return TRUE;
+ if (qa->complev > qb->complev) return FALSE;
+ if (qa->level <= qb->level) return TRUE;
+ return FALSE;
+}
+
+static void ang_sort_swap_quest_num(vptr u, vptr v, int a, int b)
+{
+ int *q_num = (int *)u;
+ int tmp;
+
+ tmp = q_num[a];
+ q_num[a] = q_num[b];
+ q_num[b] = tmp;
+}
+
errr make_character_dump(FILE *fff)
{
int i, x, y;
char o_name[MAX_NLEN];
char buf[1024];
int total;
+ int *quest_num;
+ int dummy;
#ifdef JP
fprintf(fff, " [ÊѶòÈÚÅÜ %d.%d.%d ¥¥ã¥é¥¯¥¿¾ðÊó]\n\n",
}
fprintf(fff, "\n");
- /* Display history */
+
+ /* Display flags (part 1) */
display_player(2);
/* Dump part of the screen */
fprintf(fff, "%s\n", buf);
}
+ fprintf(fff, "\n");
+
+ /* Display flags (part 2) */
+ display_player(3);
+
+ /* Dump part of the screen */
+ for (y = 1; y < 22; y++)
+ {
+ /* Dump each row */
+ for (x = 0; x < 79; x++)
+ {
+ /* Get the attr/char */
+ (void)(Term_what(x, y, &a, &c));
+
+ /* Dump it (Ignore equippy tile graphic) */
+ if (a < 128)
+ buf[x] = c;
+ else
+ buf[x] = ' ';
+ }
+
+ /* End the string */
+ buf[x] = '\0';
+
+ /* Kill trailing spaces */
+ while ((x > 0) && (buf[x-1] == ' ')) buf[--x] = '\0';
+
+ /* End the row */
+ fprintf(fff, "%s\n", buf);
+ }
+
for (i = 0; (unsigned int) i < (p_ptr->count / 80); i++)
fprintf(fff, " ");
fprintf(fff, "\n");
}
#ifdef JP
- fprintf(fff, "\n [¥¯¥¨¥¹¥È¾ðÊó] \n");
+ fprintf(fff, "\n [¥¯¥¨¥¹¥È¾ðÊó]\n");
#else
- fprintf(fff, "\n [Quest information] \n");
+ fprintf(fff, "\n [Quest information]\n");
#endif
#ifdef JP
#else
fprintf(fff, "\n< Completed Quest >\n");
#endif
+
+ /* Allocate Memory */
+ C_MAKE(quest_num, max_quests, int);
+
+ /* Sort by compete level */
+ for (i = 1; i < max_quests; i++)
+ {
+ quest_num[i] = i;
+ }
+ ang_sort_comp = ang_sort_comp_quest_num;
+ ang_sort_swap = ang_sort_swap_quest_num;
+ ang_sort(quest_num, &dummy, max_quests);
+
+ /* Dump Quest Information */
total = 0;
for (i = 1; i < max_quests; i++)
{
+ int num = quest_num[i];
+
/* No info from "silent" quests */
- if (quest[i].flags & QUEST_FLAG_SILENT) continue;
+ if (quest[num].flags & QUEST_FLAG_SILENT) continue;
- if (quest[i].status == QUEST_STATUS_FINISHED)
+ if (quest[num].status == QUEST_STATUS_FINISHED)
{
int old_quest;
total++;
- if (i < MIN_RANDOM_QUEST)
+ if (num < MIN_RANDOM_QUEST)
{
/* Set the quest number temporary */
old_quest = p_ptr->inside_quest;
- p_ptr->inside_quest = i;
+ p_ptr->inside_quest = num;
/* Get the quest */
init_flags = INIT_ASSIGN;
p_ptr->inside_quest = old_quest;
}
- if ((i >= MIN_RANDOM_QUEST) && quest[i].r_idx)
+ if ((num >= MIN_RANDOM_QUEST) && quest[num].r_idx)
{
/* Print the quest info */
- if (quest[i].complev == 0)
+ if (quest[num].complev == 0)
{
fprintf(fff,
#ifdef JP
#else
" %s (Dungeon level: %d) - (Cancelled)\n",
#endif
- r_name+r_info[quest[i].r_idx].name,
- quest[i].level);
+ r_name+r_info[quest[num].r_idx].name,
+ quest[num].level);
}
else
{
#else
" %s (Dungeon level: %d) - level %d\n",
#endif
- r_name+r_info[quest[i].r_idx].name,
- quest[i].level,
- quest[i].complev);
+ r_name+r_info[quest[num].r_idx].name,
+ quest[num].level,
+ quest[num].complev);
}
}
else
fprintf(fff, " %s (Danger level: %d) - level %d\n",
#endif
- quest[i].name, quest[i].level, quest[i].complev);
+ quest[num].name, quest[num].level, quest[num].complev);
}
}
}
total = 0;
for (i = 1; i < max_quests; i++)
{
+ int num = quest_num[i];
+
/* No info from "silent" quests */
- if (quest[i].flags & QUEST_FLAG_SILENT) continue;
+ if (quest[num].flags & QUEST_FLAG_SILENT) continue;
- if ((quest[i].status == QUEST_STATUS_FAILED_DONE) || (quest[i].status == QUEST_STATUS_FAILED))
+ if ((quest[num].status == QUEST_STATUS_FAILED_DONE) || (quest[num].status == QUEST_STATUS_FAILED))
{
int old_quest;
total++;
- if (i < MIN_RANDOM_QUEST)
+ if (num < MIN_RANDOM_QUEST)
{
/* Set the quest number temporary */
old_quest = p_ptr->inside_quest;
- p_ptr->inside_quest = i;
+ p_ptr->inside_quest = num;
/* Get the quest text */
init_flags = INIT_ASSIGN;
p_ptr->inside_quest = old_quest;
}
- if ((i >= MIN_RANDOM_QUEST) && quest[i].r_idx)
+ if ((num >= MIN_RANDOM_QUEST) && quest[num].r_idx)
{
/* Print the quest info */
#ifdef JP
fprintf(fff, " %s (Dungeon level: %d) - level %d\n",
#endif
- r_name+r_info[quest[i].r_idx].name, quest[i].level, quest[i].complev);
+ r_name+r_info[quest[num].r_idx].name, quest[num].level, quest[num].complev);
}
else
{
fprintf(fff, " %s (Danger level: %d) - level %d\n",
#endif
- quest[i].name, quest[i].level, quest[i].complev);
+ quest[num].name, quest[num].level, quest[num].complev);
}
}
}
+
#ifdef JP
if (!total) fprintf(fff, " ¤Ê¤·\n");
#else
#endif
fprintf(fff, "\n");
+ /* Free Memory */
+ C_KILL(quest_num, max_quests, int);
+
if (p_ptr->is_dead && !p_ptr->total_winner)
{
#ifdef JP
}
#ifdef JP
- fprintf(fff, "\n [¤½¤Î¾¤Î¾ðÊó] \n");
+ fprintf(fff, "\n [¤½¤Î¾¤Î¾ðÊó]\n");
#else
fprintf(fff, "\n [Miscellaneous information]\n");
#endif
fprintf(fff, "\n\n");
}
+#ifdef JP
+ fprintf(fff, " [¥Á¥§¥Ã¥¯¥µ¥à: \"%s\"]\n\n", get_check_sum());
+#else
+ fprintf(fff, " [Check Sum: \"%s\"]\n\n", get_check_sum());
+#endif
+
return 0;
}
/* Build query */
#ifdef JP
-(void)sprintf(out_val, "¸½Â¸¤¹¤ë¥Õ¥¡¥¤¥ë %s ¤Ë¾å½ñ¤¤·¤Þ¤¹¤«? ", buf);
+ (void)sprintf(out_val, "¸½Â¸¤¹¤ë¥Õ¥¡¥¤¥ë %s ¤Ë¾å½ñ¤¤·¤Þ¤¹¤«? ", buf);
#else
(void)sprintf(out_val, "Replace existing file %s? ", buf);
#endif
/* Ask */
- if (get_check(out_val)) fd = -1;
+ if (get_check_strict(out_val, CHECK_NO_HISTORY)) fd = -1;
}
/* Open the non-existing file */
{
/* Message */
#ifdef JP
-msg_format("¥¥ã¥é¥¯¥¿¾ðÊó¤Î¥Õ¥¡¥¤¥ë¤Ø¤Î½ñ¤½Ð¤·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡ª");
+ prt("¥¥ã¥é¥¯¥¿¾ðÊó¤Î¥Õ¥¡¥¤¥ë¤Ø¤Î½ñ¤½Ð¤·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡ª", 0, 0);
#else
- msg_format("Character dump failed!");
+ prt("Character dump failed!", 0, 0);
#endif
- msg_print(NULL);
+ (void)inkey();
/* Error */
return (-1);
}
-typedef struct file_tag
-{
- char name[32];
- int line_number;
-} file_tag;
-
-
-typedef struct file_tags
-{
- file_tag tags[64];
- int index;
-} file_tags;
-
-
-static void add_tag(file_tags *the_tags, cptr name, int line)
-{
- if (the_tags->index < 64)
- {
- file_tag *tag = &(the_tags->tags[the_tags->index]);
-
- /* Set the name and end it with '\0' */
- strncpy(tag->name, name, 31);
- tag->name[31] = '\0';
-
- /* Set the line-number */
- tag->line_number = line;
-
- /* Increase the number of tags */
- the_tags->index++;
- }
-}
-
-
-static int get_line(file_tags *the_tags, cptr name)
-{
- int i;
-
- /* Search for the tag */
- for (i = 0; i < the_tags->index; i++)
- {
- if (streq(the_tags->tags[i].name, name))
- {
- return the_tags->tags[i].line_number;
- }
- }
-
- /* Not found */
- return 0;
-}
-
-
/*
* Recursive file perusal.
*
/* Sub-menu information */
char hook[68][32];
- /* Tags for in-file references */
- file_tags tags;
-
bool reverse = (line < 0);
int wid, hgt, rows;
hook[i][0] = '\0';
}
- /* No tags yet */
- tags.index = 0;
-
/* Copy the filename */
strcpy(filename, name);
else if (str[6] == '<')
{
str[strlen(str) - 1] = '\0';
- add_tag(&tags, str + 7, next);
+ if (tag && streq(str + 7, tag)) line = next;
}
/* Skip this */
/* start from bottom when reverse mode */
if (line == -1) line = ((size-1)/rows)*rows;
- /* Go to the tagged line */
- if (tag) line = get_line(&tags, tag);
-
/* Display the file */
while (TRUE)
{