char header_mark_str[80];
+ /* Drop priv's */
+ safe_setuid_drop();
+
sprintf(header_mark_str, auto_dump_header, mark);
/* Remove old macro dumps */
msg_format("Failed to open %s.", buf);
#endif
msg_print(NULL);
+
+ /* Grab priv's */
+ safe_setuid_grab();
+
return NULL;
}
my_fclose(fff);
+ /* Grab priv's */
+ safe_setuid_grab();
+
return;
}
cptr note_level = "";
bool do_level = TRUE;
- s32b len = 20L * TOWN_DAWN;
- s32b tick = turn % len + len / 4;
-
static bool disable_nikki = FALSE;
- if (disable_nikki) return(-1);
-
- if ((p_ptr->prace == RACE_VAMPIRE) ||
- (p_ptr->prace == RACE_SKELETON) ||
- (p_ptr->prace == RACE_ZOMBIE) ||
- (p_ptr->prace == RACE_SPECTRE))
- day = (turn - (15L * TOWN_DAWN))/ len + 1;
- else
- day = (turn + (5L * TOWN_DAWN))/ len + 1;
+ extract_day_hour_min(&day, &hour, &min);
- hour = (24 * tick / len) % 24;
- min = (1440 * tick / len) % 60;
+ if (disable_nikki) return(-1);
if (type == NIKKI_FIX_QUEST_C ||
type == NIKKI_FIX_QUEST_F ||
sprintf(file_name,"playrec-%s.txt",savefile_base);
#endif
+ /* Hack -- drop permissions */
+ safe_setuid_drop();
+
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, file_name);
fff = my_fopen(buf, "a");
/* Failure */
- if (!fff) {
+ if (!fff)
+ {
+ /* Hack -- grab permissions */
+ safe_setuid_grab();
#ifdef JP
msg_format("%s ¤ò³«¤¯¤³¤È¤¬¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡£¥×¥ì¥¤µÏ¿¤ò°ì»þÄä»ß¤·¤Þ¤¹¡£", buf);
#else
}
case NIKKI_ARENA:
{
+ if (num == 99)
+ {
+
+#ifdef JP
+ fprintf(fff, " %2d:%02d %20s Æ®µ»¾ì¤Î%d²óÀï¤Ç¡¢%s¤ÎÁ°¤ËÇÔ¤ìµî¤Ã¤¿¡£\n", hour, min, note_level, p_ptr->arena_number + 1, note);
+#else
+ int n = p_ptr->arena_number + 1;
+ fprintf(fff, " %2d:%02d %20s beaten by %s in the %d%s fight.\n", hour, min, note_level, note, n, (n%10==1?"st":n%10==2?"nd":n%10==3?"rd":"th"));
+#endif
+ break;
+ }
#ifdef JP
fprintf(fff, " %2d:%02d %20s Æ®µ»¾ì¤Î%d²óÀï(%s)¤Ë¾¡Íø¤·¤¿¡£\n", hour, min, note_level, num, note);
#else
my_fclose(fff);
+ /* Hack -- grab permissions */
+ safe_setuid_grab();
+
if (do_level) write_level = FALSE;
return (0);
sprintf(file_name,"playrec-%s.txt",savefile_base);
#endif
+ /* Hack -- drop permissions */
+ safe_setuid_drop();
+
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, file_name);
if (p_ptr->pclass == CLASS_WARRIOR || p_ptr->pclass == CLASS_MONK || p_ptr->pclass == CLASS_SAMURAI || p_ptr->pclass == CLASS_BERSERKER)
- strcpy(tmp,subtitle[rand_int(MAX_SUBTITLE-1)]);
+ strcpy(tmp,subtitle[randint0(MAX_SUBTITLE-1)]);
else if (p_ptr->pclass == CLASS_MAGE || p_ptr->pclass == CLASS_HIGH_MAGE || p_ptr->pclass == CLASS_SORCERER)
- strcpy(tmp,subtitle[rand_int(MAX_SUBTITLE-1)+1]);
- else strcpy(tmp,subtitle[rand_int(MAX_SUBTITLE-2)+1]);
+ strcpy(tmp,subtitle[randint0(MAX_SUBTITLE-1)+1]);
+ else strcpy(tmp,subtitle[randint0(MAX_SUBTITLE-2)+1]);
#ifdef JP
sprintf(nikki_title, "¡Ö%s%s%s¤ÎÅÁÀâ -%s-¡×",
/* Display the file contents */
show_file(FALSE, buf, nikki_title, -1, 0);
+
+ /* Hack -- grab permissions */
+ safe_setuid_grab();
}
static void do_cmd_bunshou(void)
sprintf(file_name,"playrec-%s.txt",savefile_base);
#endif
+ /* Hack -- drop permissions */
+ safe_setuid_drop();
+
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, file_name);
#endif
}
msg_print(NULL);
+
+ /* Hack -- grab permissions */
+ safe_setuid_grab();
}
#if 0
char shower[80];
char finder[80];
+ int wid, hgt;
+
+ /* Get size */
+ Term_get_size(&wid, &hgt);
/* Wipe finder */
strcpy(finder, "");
Term_clear();
/* Dump up to 20 lines of messages */
- for (j = 0; (j < 20) && (i + j < n); j++)
+ for (j = 0; (j < hgt - 4) && (i + j < n); j++)
{
cptr msg = message_str(i+j);
msg = (strlen(msg) >= q) ? (msg + q) : "";
/* Dump the messages, bottom to top */
- Term_putstr(0, 21-j, -1, (bool)(i+j < num_now ? TERM_WHITE : TERM_SLATE), msg);
+ Term_putstr(0, hgt-j-3, -1, (bool)(i+j < num_now ? TERM_WHITE : TERM_SLATE), msg);
/* Hilite "shower" */
if (shower[0])
int len = strlen(shower);
/* Display the match */
- Term_putstr(str-msg, 21-j, len, TERM_YELLOW, shower);
+ Term_putstr(str-msg, hgt-j-3, len, TERM_YELLOW, shower);
/* Advance */
str += len;
/* Display prompt (not very informative) */
#ifdef JP
- prt("[ 'p' ¤Ç¹¹¤Ë¸Å¤¤¤â¤Î, 'n' ¤Ç¹¹¤Ë¿·¤·¤¤¤â¤Î, '/' ¤Ç¸¡º÷, ESC ¤ÇÃæÃÇ ]", 23, 0);
+ prt("[ 'p' ¤Ç¹¹¤Ë¸Å¤¤¤â¤Î, 'n' ¤Ç¹¹¤Ë¿·¤·¤¤¤â¤Î, '/' ¤Ç¸¡º÷, ESC ¤ÇÃæÃÇ ]", hgt - 1, 0);
#else
- prt("[Press 'p' for older, 'n' for newer, ..., or ESCAPE]", 23, 0);
+ prt("[Press 'p' for older, 'n' for newer, ..., or ESCAPE]", hgt - 1, 0);
#endif
{
/* Prompt */
#ifdef JP
- prt("¶¯Ä´: ", 23, 0);
+ prt("¶¯Ä´: ", hgt - 1, 0);
#else
- prt("Show: ", 23, 0);
+ prt("Show: ", hgt - 1, 0);
#endif
/* Prompt */
#ifdef JP
- prt("¸¡º÷: ", 23, 0);
+ prt("¸¡º÷: ", hgt - 1, 0);
#else
- prt("Find: ", 23, 0);
+ prt("Find: ", hgt - 1, 0);
#endif
case 'Y':
case '6':
{
- if(!noscore)
+ if(!p_ptr->noscore)
#ifdef JP
do_cmd_write_nikki(NIKKI_BUNSHOU, 0, "º¾µ½¥ª¥×¥·¥ç¥ó¤òON¤Ë¤·¤Æ¡¢¥¹¥³¥¢¤ò»Ä¤»¤Ê¤¯¤Ê¤Ã¤¿¡£");
#else
do_cmd_write_nikki(NIKKI_BUNSHOU, 0, "give up sending score to use cheating options.");
#endif
- noscore |= (cheat_info[k].o_set * 256 + cheat_info[k].o_bit);
+ p_ptr->noscore |= (cheat_info[k].o_set * 256 + cheat_info[k].o_bit);
(*cheat_info[k].o_var) = TRUE;
k = (k + 1) % n;
break;
Term_clear();
#ifdef JP
- if (page == PAGE_AUTODESTROY) c_prt(TERM_YELLOW, "°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¼«Æ°Ç˲õ¤ò»ÈÍѤ¹¤ë¤È¤¤Î¤ß͸ú", 4, 6);
+ if (page == PAGE_AUTODESTROY) c_prt(TERM_YELLOW, "°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢´Ê°×¼«Æ°Ç˲õ¤ò»ÈÍѤ¹¤ë¤È¤¤Î¤ß͸ú", 4, 6);
#else
if (page == PAGE_AUTODESTROY) c_prt(TERM_YELLOW, "Following options will protect items from easy auto-destroyer.", 4, 3);
#endif
prt("(3) ¥²¡¼¥à¥×¥ì¥¤ ¥ª¥×¥·¥ç¥ó", 6, 5);
prt("(4) ¹ÔÆ°Ãæ»ß´Ø·¸ ¥ª¥×¥·¥ç¥ó", 7, 5);
prt("(5) ¸úΨ²½ ¥ª¥×¥·¥ç¥ó", 8, 5);
- prt("(6) ¥¢¥¤¥Æ¥à¼«Æ°½¦¤¤/Ç˲õ ¥ª¥×¥·¥ç¥ó", 9, 5);
+ prt("(6) ´Ê°×¥¢¥¤¥Æ¥à¼«Æ°Ç˲õ ¥ª¥×¥·¥ç¥ó", 9, 5);
prt("(R) ¥×¥ì¥¤µÏ¿ ¥ª¥×¥·¥ç¥ó", 10, 5);
/* Special choices */
prt("(D) ´ðËÜ¥¦¥§¥¤¥ÈÎÌ", 12, 5);
{
/* Spawn */
#ifdef JP
- do_cmd_options_aux(7, "¥¢¥¤¥Æ¥à¼«Æ°½¦¤¤/Ç˲õ¥ª¥×¥·¥ç¥ó");
+ do_cmd_options_aux(7, "´Ê°×¥¢¥¤¥Æ¥à¼«Æ°Ç˲õ¥ª¥×¥·¥ç¥ó");
#else
- do_cmd_options_aux(7, "Object Auto-Pick/Destroy Options");
+ do_cmd_options_aux(7, "Easy Auto-Destroyer Options");
#endif
break;
}
void do_cmd_pickpref(void)
{
char buf[80];
- errr err = -1;
- int i;
+ errr err;
#ifdef JP
if(!get_check("¼«Æ°½¦¤¤ÀßÄê¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Þ¤¹¤«? ")) return;
#else
if(!get_check("Reload auto-pick preference file? ")) return;
#endif
- /* ¤¤¤Þ¤Þ¤Ç»È¤Ã¤Æ¤¤¤¿¥á¥â¥ê²òÊü */
- for( i = 0; i < max_autopick; i++){
- string_free(autopick_name[i]);
- string_free(autopick_insc[i]);
- }
- max_autopick = 0;
+
+ /* Free old entries */
+ init_autopicker();
/* ¥¥ã¥éËè¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß */
#ifdef JP
#else
sprintf(buf, "pickpref-%s.prf", player_name);
#endif
- if( process_pickpref_file(buf) == 0 ){
- err = 0;
+ err = process_pickpref_file(buf);
+
+ if(err == 0)
+ {
#ifdef JP
msg_format("%s¤òÆɤ߹þ¤ß¤Þ¤·¤¿¡£", buf);
#else
}
/* ¶¦Ä̤ÎÀßÄê¥Õ¥¡¥¤¥ëÆɤ߹þ¤ß */
+
+ /* Process 'pick????.prf' if 'pick????-<name>.prf' doesn't exist */
+ if (0 > err)
+ {
#ifdef JP
- if( process_pickpref_file("picktype.prf") == 0 )
+ err = process_pickpref_file("picktype.prf");
#else
- if( process_pickpref_file("pickpref.prf") == 0 )
+ err = process_pickpref_file("pickpref.prf");
#endif
- {
- err = 0;
+
+ if(err == 0)
+ {
#ifdef JP
- msg_print("picktype.prf¤òÆɤ߹þ¤ß¤Þ¤·¤¿¡£");
+ msg_print("picktype.prf¤òÆɤ߹þ¤ß¤Þ¤·¤¿¡£");
#else
- msg_print("loaded 'pickpref.prf'.");
+ msg_print("loaded 'pickpref.prf'.");
#endif
+ }
}
+
#ifdef JP
if(err) msg_print("¼«Æ°½¦¤¤ÀßÄê¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£");
#else
/* Load a 'macro' file */
else if (i == '1')
{
+ errr err;
+
/* Prompt */
#ifdef JP
prt("¥³¥Þ¥ó¥É: ¥æ¡¼¥¶¡¼ÀßÄê¥Õ¥¡¥¤¥ë¤Î¥í¡¼¥É", 16, 0);
if (!askfor_aux(tmp, 80)) continue;
/* Process the given filename */
- if (0 != process_pref_file(tmp))
+ err = process_pref_file(tmp);
+ if (-2 == err)
+ {
+#ifdef JP
+ msg_format("ɸ½à¤ÎÀßÄê¥Õ¥¡¥¤¥ë'%s'¤òÆɤ߹þ¤ß¤Þ¤·¤¿¡£", tmp);
+#else
+ msg_format("Loaded default '%s'.", tmp);
+#endif
+ }
+ else if (err)
{
/* Prompt */
#ifdef JP
- msg_print("¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤á¤Þ¤»¤ó¤Ç¤·¤¿¡ª");
+ msg_format("'%s'¤ÎÆɤ߹þ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡ª", tmp);
#else
- msg_print("Could not load file!");
+ msg_format("Failed to load '%s'!");
+#endif
+ }
+ else
+ {
+#ifdef JP
+ msg_format("'%s'¤òÆɤ߹þ¤ß¤Þ¤·¤¿¡£", tmp);
+#else
+ msg_format("Loaded '%s'.", tmp);
#endif
-
}
}
/* Ask for a file */
if (!askfor_aux(tmp, 80)) continue;
- /* Drop priv's */
- safe_setuid_drop();
-
/* Dump the macros */
(void)macro_dump(tmp);
- /* Grab priv's */
- safe_setuid_grab();
-
/* Prompt */
#ifdef JP
msg_print("¥Þ¥¯¥í¤òÄɲä·¤Þ¤·¤¿¡£");
/* Ask for a file */
if (!askfor_aux(tmp, 80)) continue;
- /* Drop priv's */
- safe_setuid_drop();
-
/* Dump the macros */
(void)keymap_dump(tmp);
- /* Grab priv's */
- safe_setuid_grab();
-
/* Prompt */
#ifdef JP
msg_print("¥¡¼ÇÛÃÖ¤òÄɲä·¤Þ¤·¤¿¡£");
}
+static void cmd_visuals_aux(int i, int *num, int max)
+{
+ if (iscntrl(i))
+ {
+ char str[10] = "";
+ int tmp;
+
+ sprintf(str, "%d", *num);
+
+ if (!get_string(format("Input new number(0-%d): ", max-1), str, 4))
+ return;
+
+ tmp = strtol(str, NULL, 0);
+ if (tmp >= 0 && tmp < max)
+ *num = tmp;
+ return;
+ }
+ else if (isupper(i))
+ *num = (*num + max - 1) % max;
+ else
+ *num = (*num + 1) % max;
+
+ return;
+}
+
/*
* Interact with "visuals"
*/
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, tmp);
- /* Drop priv's */
- safe_setuid_drop();
-
/* Append to the file */
fff = open_auto_dump(buf, mark, &line_num);
if (!fff) continue;
- /* Grab priv's */
- safe_setuid_grab();
-
/* Start dumping */
#ifdef JP
fprintf(fff, "\n# ¥â¥ó¥¹¥¿¡¼¤Î[¿§/ʸ»ú]¤ÎÀßÄê\n\n");
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, tmp);
- /* Drop priv's */
- safe_setuid_drop();
-
/* Append to the file */
fff = open_auto_dump(buf, mark, &line_num);
if (!fff) continue;
- /* Grab priv's */
- safe_setuid_grab();
-
/* Start dumping */
#ifdef JP
fprintf(fff, "\n# ¥¢¥¤¥Æ¥à¤Î[¿§/ʸ»ú]¤ÎÀßÄê\n\n");
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, tmp);
- /* Drop priv's */
- safe_setuid_drop();
-
/* Append to the file */
fff = open_auto_dump(buf, mark, &line_num);
if (!fff) continue;
- /* Grab priv's */
- safe_setuid_grab();
-
/* Start dumping */
#ifdef JP
fprintf(fff, "\n# ÃÏ·Á¤Î[¿§/ʸ»ú]¤ÎÀßÄê\n\n");
while (1)
{
monster_race *r_ptr = &r_info[r];
+ char c;
+ int t;
byte da = (r_ptr->d_attr);
byte dc = (r_ptr->d_char);
Term_putstr(40, 19, -1, TERM_WHITE, "<< ? >>");
Term_putch(43, 19, da, dc);
+ if (use_bigtile)
+ {
+ if (da & 0x80)
+ Term_putch(44, 19, 255, -1);
+ else
+ Term_putch(44, 19, 0, ' ');
+ }
/* Label the Current values */
#ifdef JP
Term_putstr(40, 20, -1, TERM_WHITE, "<< ? >>");
Term_putch(43, 20, ca, cc);
+ if (use_bigtile)
+ {
+ if (ca & 0x80)
+ Term_putch(44, 20, 255, -1);
+ else
+ Term_putch(44, 20, 0, ' ');
+ }
/* Prompt */
#ifdef JP
Term_putstr(0, 22, -1, TERM_WHITE,
- "¥³¥Þ¥ó¥É (n/N/a/A/c/C): ");
+ "¥³¥Þ¥ó¥É (n/N/^N/a/A/^A/c/C/^C): ");
#else
Term_putstr(0, 22, -1, TERM_WHITE,
- "Command (n/N/a/A/c/C): ");
+ "Command (n/N/^N/a/A/^A/c/C/^C): ");
#endif
-
/* Get a command */
i = inkey();
/* All done */
if (i == ESCAPE) break;
- /* Analyze */
- if (i == 'n') r = (r + max_r_idx + 1) % max_r_idx;
- if (i == 'N') r = (r + max_r_idx - 1) % max_r_idx;
- if (i == 'a') r_ptr->x_attr = (byte)(ca + 1);
- if (i == 'A') r_ptr->x_attr = (byte)(ca - 1);
- if (i == 'c') r_ptr->x_char = (byte)(cc + 1);
- if (i == 'C') r_ptr->x_char = (byte)(cc - 1);
+ if (iscntrl(i)) c = 'a' + i - KTRL('A');
+ else if (isupper(i)) c = 'a' + i - 'A';
+ else c = i;
+
+ switch (c)
+ {
+ case 'n':
+ cmd_visuals_aux(i, &r, max_r_idx);
+ break;
+ case 'a':
+ t = (int)r_ptr->x_attr;
+ cmd_visuals_aux(i, &t, 256);
+ r_ptr->x_attr = (byte)t;
+ break;
+ case 'c':
+ t = (int)r_ptr->x_char;
+ cmd_visuals_aux(i, &t, 256);
+ r_ptr->x_char = (byte)t;
+ break;
+ }
}
}
while (1)
{
object_kind *k_ptr = &k_info[k];
+ char c;
+ int t;
byte da = (byte)k_ptr->d_attr;
byte dc = (byte)k_ptr->d_char;
Term_putstr(40, 19, -1, TERM_WHITE, "<< ? >>");
Term_putch(43, 19, da, dc);
+ if (use_bigtile)
+ {
+ if (da & 0x80)
+ Term_putch(44, 19, 255, -1);
+ else
+ Term_putch(44, 19, 0, ' ');
+ }
/* Label the Current values */
#ifdef JP
Term_putstr(40, 20, -1, TERM_WHITE, "<< ? >>");
Term_putch(43, 20, ca, cc);
+ if (use_bigtile)
+ {
+ if (ca & 0x80)
+ Term_putch(44, 20, 255, -1);
+ else
+ Term_putch(44, 20, 0, ' ');
+ }
/* Prompt */
#ifdef JP
Term_putstr(0, 22, -1, TERM_WHITE,
- "¥³¥Þ¥ó¥É (n/N/a/A/c/C): ");
+ "¥³¥Þ¥ó¥É (n/N/^N/a/A/^A/c/C/^C): ");
#else
Term_putstr(0, 22, -1, TERM_WHITE,
- "Command (n/N/a/A/c/C): ");
+ "Command (n/N/^N/a/A/^A/c/C/^C): ");
#endif
-
/* Get a command */
i = inkey();
/* All done */
if (i == ESCAPE) break;
- /* Analyze */
- if (i == 'n') k = (k + max_k_idx + 1) % max_k_idx;
- if (i == 'N') k = (k + max_k_idx - 1) % max_k_idx;
- if (i == 'a') k_info[k].x_attr = (byte)(ca + 1);
- if (i == 'A') k_info[k].x_attr = (byte)(ca - 1);
- if (i == 'c') k_info[k].x_char = (byte)(cc + 1);
- if (i == 'C') k_info[k].x_char = (byte)(cc - 1);
+ if (iscntrl(i)) c = 'a' + i - KTRL('A');
+ else if (isupper(i)) c = 'a' + i - 'A';
+ else c = i;
+
+ switch (c)
+ {
+ case 'n':
+ cmd_visuals_aux(i, &k, max_k_idx);
+ break;
+ case 'a':
+ t = (int)k_info[k].x_attr;
+ cmd_visuals_aux(i, &t, 256);
+ k_info[k].x_attr = (byte)t;
+ break;
+ case 'c':
+ t = (int)k_info[k].x_char;
+ cmd_visuals_aux(i, &t, 256);
+ k_info[k].x_char = (byte)t;
+ break;
+ }
}
}
while (1)
{
feature_type *f_ptr = &f_info[f];
+ char c;
+ int t;
byte da = (byte)f_ptr->d_attr;
byte dc = (byte)f_ptr->d_char;
Term_putstr(40, 19, -1, TERM_WHITE, "<< ? >>");
Term_putch(43, 19, da, dc);
+ if (use_bigtile)
+ {
+ if (da & 0x80)
+ Term_putch(44, 19, 255, -1);
+ else
+ Term_putch(44, 19, 0, ' ');
+ }
/* Label the Current values */
#ifdef JP
Term_putstr(40, 20, -1, TERM_WHITE, "<< ? >>");
Term_putch(43, 20, ca, cc);
+ if (use_bigtile)
+ {
+ if (ca & 0x80)
+ Term_putch(44, 20, 255, -1);
+ else
+ Term_putch(44, 20, 0, ' ');
+ }
/* Prompt */
#ifdef JP
Term_putstr(0, 22, -1, TERM_WHITE,
- "¥³¥Þ¥ó¥É (n/N/a/A/c/C): ");
+ "¥³¥Þ¥ó¥É (n/N/^N/a/A/^A/c/C/^C): ");
#else
Term_putstr(0, 22, -1, TERM_WHITE,
- "Command (n/N/a/A/c/C): ");
+ "Command (n/N/^N/a/A/^A/c/C/^C): ");
#endif
-
/* Get a command */
i = inkey();
/* All done */
if (i == ESCAPE) break;
- /* Analyze */
- if (i == 'n') f = (f + max_f_idx + 1) % max_f_idx;
- if (i == 'N') f = (f + max_f_idx - 1) % max_f_idx;
- if (i == 'a') f_info[f].x_attr = (byte)(ca + 1);
- if (i == 'A') f_info[f].x_attr = (byte)(ca - 1);
- if (i == 'c') f_info[f].x_char = (byte)(cc + 1);
- if (i == 'C') f_info[f].x_char = (byte)(cc - 1);
+ if (iscntrl(i)) c = 'a' + i - KTRL('A');
+ else if (isupper(i)) c = 'a' + i - 'A';
+ else c = i;
+
+ switch (c)
+ {
+ case 'n':
+ cmd_visuals_aux(i, &f, max_f_idx);
+ break;
+ case 'a':
+ t = (int)f_info[f].x_attr;
+ cmd_visuals_aux(i, &t, 256);
+ f_info[f].x_attr = (byte)t;
+ break;
+ case 'c':
+ t = (int)f_info[f].x_char;
+ cmd_visuals_aux(i, &t, 256);
+ f_info[f].x_char = (byte)t;
+ break;
+ }
}
}
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, tmp);
- /* Drop priv's */
- safe_setuid_drop();
-
/* Append to the file */
fff = open_auto_dump(buf, mark, &line_num);
if (!fff) continue;
- /* Grab priv's */
- safe_setuid_grab();
-
/* Start dumping */
#ifdef JP
fprintf(fff, "\n# ¥«¥é¡¼¤ÎÀßÄê\n\n");
/* Verify the feeling */
if (feeling > 10) feeling = 10;
-#ifdef USE_SCRIPT
- if (cmd_feeling_callback(feeling)) return;
-#endif /* USE_SCRIPT */
-
/* No useful feeling in quests */
if (p_ptr->inside_quest && !random_quest_number(dun_level))
{
}
/* Display the feeling */
- if (turn - old_turn >= (3000 - dun_level*20) || cheat_xtra)
+ if (turn - old_turn >= (150 - dun_level)*TURNS_PER_TICK || cheat_xtra)
{
if (p_ptr->muta3 & MUT3_GOOD_LUCK) msg_print(do_cmd_feeling_text_lucky[feeling]);
else {
char buf[1024];
+ int wid, hgt;
+
+ Term_get_size(&wid, &hgt);
+
+ /* Hack -- drop permissions */
+ safe_setuid_drop();
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, "dump.txt");
/* Load the screen */
- for (y = 0; okay && (y < 24); y++)
+ for (y = 0; okay && (y < hgt); y++)
{
/* Get a line of data */
if (photo_fgets(fff, buf, 1024)) okay = FALSE;
/* Show each row */
- for (x = 0; x < 79; x++)
+ for (x = 0; x < wid - 1; x++)
{
/* Put the attr/char */
Term_draw(x, y, TERM_WHITE, buf[x]);
/* Dump the screen */
- for (y = 0; okay && (y < 24); y++)
+ for (y = 0; okay && (y < hgt); y++)
{
/* Get a line of data */
if (photo_fgets(fff, buf, 1024)) okay = FALSE;
/* Dump each row */
- for (x = 0; x < 79; x++)
+ for (x = 0; x < wid - 1; x++)
{
/* Get the attr/char */
(void)(Term_what(x, y, &a, &c));
/* Close it */
my_fclose(fff);
+ /* Hack -- grab permissions */
+ safe_setuid_grab();
+
/* Message */
#ifdef JP
#ifdef JP
strcpy(where, "²È");
#else
- strcpy(where, "H ");/*nanka*/
+ strcpy(where, "H ");
#endif
/* Dump all available items */
char buf[2048];
int yomikomu = 0;
- char *tags[4] = {
+ cptr tags[4] = {
"HEADER_START:",
"HEADER_END:",
"FOOTER_START:",
"FOOTER_END:",
};
- char *html_head[] = {
+ cptr html_head[] = {
"<html>\n<body text=\"#ffffff\" bgcolor=\"#000000\">\n",
"<pre>",
0,
};
- char *html_foot[] = {
+ cptr html_foot[] = {
"</pre>\n",
"</body>\n</html>\n",
0,
};
+ int wid, hgt;
+
+ Term_get_size(&wid, &hgt);
+
/* File type is "TEXT" */
FILE_TYPE(FILE_TYPE_TEXT);
- /* Hack -- drop permissions */
- safe_setuid_drop();
-
/* Append to the file */
fff = my_fopen(filename, "w");
- /* Hack -- grab permissions */
- safe_setuid_grab();
-
/* Oops */
if (!fff) {
if (message) {
#endif
msg_print(NULL);
}
- return;
+
+ return;
}
/* Save the screen */
if (message)
- screen_save();
+ screen_save();
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, "htmldump.prf");
}
/* Dump the screen */
- for (y = 0; y < 24; y++)
+ for (y = 0; y < hgt; y++)
{
/* Start the row */
if (y != 0)
fprintf(fff, "\n");
/* Dump each row */
- for (x = 0; x < 79; x++)
+ for (x = 0; x < wid - 1; x++)
{
int rv, gv, bv;
- char *cc = NULL;
+ cptr cc = NULL;
/* Get the attr/char */
(void)(Term_what(x, y, &a, &c));
if (!tmpfff) {
for (i = 0; html_foot[i]; i++)
fprintf(fff, html_foot[i]);
- }
+ }
else {
rewind(tmpfff);
yomikomu = 0;
/* Restore the screen */
if (message)
- screen_load();
+ screen_load();
}
/*
* Hack -- save a screen dump to a file
*/
-void do_cmd_save_screen_html(void)
+static void do_cmd_save_screen_html(void)
{
char buf[1024], tmp[256] = "screen.html";
msg_print(NULL);
+ /* Hack -- drop permissions */
+ safe_setuid_drop();
+
do_cmd_save_screen_html_aux(buf, 1);
+
+ /* Hack -- grab permissions */
+ safe_setuid_grab();
}
*/
void do_cmd_save_screen(void)
{
+ bool old_use_graphics = use_graphics;
+
+ int wid, hgt;
+
+ Term_get_size(&wid, &hgt);
+
+ if (old_use_graphics)
+ {
+ use_graphics = FALSE;
+ reset_visuals();
+
+ /* Redraw everything */
+ p_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
+
+ /* Hack -- update */
+ handle_stuff();
+ }
+
#ifdef JP
- if (get_check("HTML¤Ç½ÐÎϤ·¤Þ¤¹¤«¡©"))
+ if (get_check_strict("HTML¤Ç½ÐÎϤ·¤Þ¤¹¤«¡©", CHECK_NO_HISTORY))
#else
- if (get_check("Save screen dump as HTML? "))
+ if (get_check_strict("Save screen dump as HTML? ", CHECK_NO_HISTORY))
#endif
{
do_cmd_save_screen_html();
- return;
+ do_cmd_redraw();
}
/* Do we use a special screendump function ? */
- if (screendump_aux)
+ else if (screendump_aux)
{
/* Dump the screen to a graphics file */
(*screendump_aux)();
char buf[1024];
+ /* Hack -- drop permissions */
+ safe_setuid_drop();
+
/* Build the filename */
path_build(buf, 1024, ANGBAND_DIR_USER, "dump.txt");
/* File type is "TEXT" */
FILE_TYPE(FILE_TYPE_TEXT);
- /* Hack -- drop permissions */
- safe_setuid_drop();
-
/* Append to the file */
fff = my_fopen(buf, "w");
- /* Hack -- grab permissions */
- safe_setuid_grab();
-
/* Oops */
- if (!fff) {
+ if (!fff)
+ {
+ /* Hack -- grab permissions */
+ safe_setuid_grab();
#ifdef JP
- msg_format("¥Õ¥¡¥¤¥ë %s ¤ò³«¤±¤Þ¤»¤ó¤Ç¤·¤¿¡£", buf);
+ msg_format("¥Õ¥¡¥¤¥ë %s ¤ò³«¤±¤Þ¤»¤ó¤Ç¤·¤¿¡£", buf);
#else
- msg_format("Failed to open file %s.", buf);
+ msg_format("Failed to open file %s.", buf);
#endif
- msg_print(NULL);
- return;
+ msg_print(NULL);
+ return;
}
/* Dump the screen */
- for (y = 0; y < 24; y++)
+ for (y = 0; y < hgt; y++)
{
/* Dump each row */
- for (x = 0; x < 79; x++)
+ for (x = 0; x < wid - 1; x++)
{
/* Get the attr/char */
(void)(Term_what(x, y, &a, &c));
/* Dump the screen */
- for (y = 0; y < 24; y++)
+ for (y = 0; y < hgt; y++)
{
/* Dump each row */
- for (x = 0; x < 79; x++)
+ for (x = 0; x < wid - 1; x++)
{
/* Get the attr/char */
(void)(Term_what(x, y, &a, &c));
/* Close it */
my_fclose(fff);
+ /* Hack -- grab permissions */
+ safe_setuid_grab();
/* Message */
#ifdef JP
/* Restore the screen */
screen_load();
}
+
+ if (old_use_graphics)
+ {
+ use_graphics = TRUE;
+ reset_visuals();
+
+ /* Redraw everything */
+ p_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
+
+ /* Hack -- update */
+ handle_stuff();
+ }
}
/*
* Check the status of "artifacts"
*/
-void do_cmd_knowledge_artifacts(void)
+static void do_cmd_knowledge_artifacts(void)
{
int i, k, z, x, y, n = 0;
u16b why = 3;
bool *okay;
- /* Allocate the "who" array */
- C_MAKE(who, max_r_idx, s16b);
-
- /* Allocate the "okay" array */
- C_MAKE(okay, max_a_idx, bool);
-
/* Open a new file */
fff = my_fopen_temp(file_name, 1024);
+
if (!fff) {
#ifdef JP
msg_format("°ì»þ¥Õ¥¡¥¤¥ë %s ¤òºîÀ®¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡£", file_name);
return;
}
+ /* Allocate the "who" array */
+ C_MAKE(who, max_r_idx, s16b);
+
+ /* Allocate the "okay" array */
+ C_MAKE(okay, max_a_idx, bool);
+
/* Scan the artifacts */
for (k = 0; k < max_a_idx; k++)
{
}
+ /* Free the "who" array */
+ C_KILL(who, max_r_idx, s16b);
+
+ /* Free the "okay" array */
+ C_KILL(okay, max_a_idx, bool);
+
/* Close the file */
my_fclose(fff);
char file_name[1024];
- /* Allocate the "who" array */
- C_MAKE(who, max_r_idx, s16b);
-
/* Open a new file */
fff = my_fopen_temp(file_name, 1024);
+
if (!fff) {
#ifdef JP
msg_format("°ì»þ¥Õ¥¡¥¤¥ë %s ¤òºîÀ®¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡£", file_name);
return;
}
+ /* Allocate the "who" array */
+ C_MAKE(who, max_r_idx, s16b);
+
/* Scan the monsters */
for (i = 1; i < max_r_idx; i++)
{
}
}
+ /* Free the "who" array */
+ C_KILL(who, max_r_idx, s16b);
+
/* Close the file */
my_fclose(fff);
char file_name[1024];
- /* Allocate the "who" array */
- C_MAKE(who, max_r_idx, s16b);
-
/* Open a new file */
fff = my_fopen_temp(file_name, 1024);
+
if (!fff) {
#ifdef JP
msg_format("°ì»þ¥Õ¥¡¥¤¥ë %s ¤òºîÀ®¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡£", file_name);
return;
}
+ /* Allocate the "who" array */
+ C_MAKE(who, max_r_idx, s16b);
+
/* Scan the monsters */
for (i = 1; i < max_r_idx; i++)
{
}
}
+ /* Free the "who" array */
+ C_KILL(who, max_r_idx, s16b);
+
/* Close the file */
my_fclose(fff);
{
if((k_ptr->tval == TV_BOW) && (k_ptr->sval == SV_CRIMSON)) continue;
- if(weapon_exp[4-i][num]<4000) shougou=0;
- else if(weapon_exp[4-i][num]<6000) shougou=1;
- else if(weapon_exp[4-i][num]<7000) shougou=2;
- else if(weapon_exp[4-i][num]<8000) shougou=3;
+ if(p_ptr->weapon_exp[4-i][num]<4000) shougou=0;
+ else if(p_ptr->weapon_exp[4-i][num]<6000) shougou=1;
+ else if(p_ptr->weapon_exp[4-i][num]<7000) shougou=2;
+ else if(p_ptr->weapon_exp[4-i][num]<8000) shougou=3;
else shougou=4;
strip_name(tmp, j);
fprintf(fff,"%-25s ",tmp);
- if (weapon_exp[4-i][num] >= weapon_exp_settei[p_ptr->pclass][4-i][num][1]) fprintf(fff,"!");
+ if (p_ptr->weapon_exp[4-i][num] >= s_info[p_ptr->pclass].w_max[4-i][num]) fprintf(fff,"!");
else fprintf(fff," ");
fprintf(fff,"%s",shougou_moji[shougou]);
- if (cheat_xtra) fprintf(fff," %d",weapon_exp[4-i][num]);
+ if (cheat_xtra) fprintf(fff," %d",p_ptr->weapon_exp[4-i][num]);
fprintf(fff,"\n");
break;
}
s_ptr = &mp_ptr->info[p_ptr->realm1 - 1][i];
}
if(s_ptr->slevel == 99) continue;
- if(spell_exp[i]<900) shougou=0;
- else if(spell_exp[i]<1200) shougou=1;
- else if(spell_exp[i]<1400) shougou=2;
- else if(spell_exp[i]<1600) shougou=3;
+ if(p_ptr->spell_exp[i]<900) shougou=0;
+ else if(p_ptr->spell_exp[i]<1200) shougou=1;
+ else if(p_ptr->spell_exp[i]<1400) shougou=2;
+ else if(p_ptr->spell_exp[i]<1600) shougou=3;
else shougou=4;
fprintf(fff,"%-25s ",spell_names[technic2magic(p_ptr->realm1)-1][i]);
if (p_ptr->realm1 == REALM_HISSATSU)
else fprintf(fff," ");
fprintf(fff,"%s",shougou_moji[shougou]);
}
- if (cheat_xtra) fprintf(fff," %d",spell_exp[i]);
+ if (cheat_xtra) fprintf(fff," %d",p_ptr->spell_exp[i]);
fprintf(fff,"\n");
}
}
}
if(s_ptr->slevel == 99) continue;
- if(spell_exp[i+32]<900) shougou=0;
- else if(spell_exp[i+32]<1200) shougou=1;
- else if(spell_exp[i+32]<1400) shougou=2;
+ if(p_ptr->spell_exp[i+32]<900) shougou=0;
+ else if(p_ptr->spell_exp[i+32]<1200) shougou=1;
+ else if(p_ptr->spell_exp[i+32]<1400) shougou=2;
else shougou=3;
fprintf(fff,"%-25s ",spell_names[technic2magic(p_ptr->realm2)-1][i]);
if (shougou == 3) fprintf(fff,"!");
else fprintf(fff," ");
fprintf(fff,"%s",shougou_moji[shougou]);
- if (cheat_xtra) fprintf(fff," %d",spell_exp[i+32]);
+ if (cheat_xtra) fprintf(fff," %d",p_ptr->spell_exp[i+32]);
fprintf(fff,"\n");
}
}
{
if(i == GINOU_RIDING)
{
- if(skill_exp[i]<500) shougou=0;
- else if(skill_exp[i]<2000) shougou=1;
- else if(skill_exp[i]<5000) shougou=2;
- else if(skill_exp[i]<8000) shougou=3;
+ if(p_ptr->skill_exp[i]<500) shougou=0;
+ else if(p_ptr->skill_exp[i]<2000) shougou=1;
+ else if(p_ptr->skill_exp[i]<5000) shougou=2;
+ else if(p_ptr->skill_exp[i]<8000) shougou=3;
else shougou=4;
}
else
{
- if(skill_exp[i]<4000) shougou=0;
- else if(skill_exp[i]<6000) shougou=1;
- else if(skill_exp[i]<7000) shougou=2;
- else if(skill_exp[i]<8000) shougou=3;
+ if(p_ptr->skill_exp[i]<4000) shougou=0;
+ else if(p_ptr->skill_exp[i]<6000) shougou=1;
+ else if(p_ptr->skill_exp[i]<7000) shougou=2;
+ else if(p_ptr->skill_exp[i]<8000) shougou=3;
else shougou=4;
}
fprintf(fff,"%-20s ",skill_name[i]);
- if (skill_exp[i] == skill_exp_settei[p_ptr->pclass][i][1]) fprintf(fff,"!");
+ if (p_ptr->skill_exp[i] == s_info[p_ptr->pclass].s_max[i]) fprintf(fff,"!");
else fprintf(fff," ");
fprintf(fff,"%s",shougou_moji[shougou]);
- if (cheat_xtra) fprintf(fff," %d",skill_exp[i]);
+ if (cheat_xtra) fprintf(fff," %d",p_ptr->skill_exp[i]);
fprintf(fff,"\n");
}
s32b Total = 0;
- /* Allocate the "who" array */
- C_MAKE(who, max_r_idx, s16b);
-
/* Open a new file */
fff = my_fopen_temp(file_name, 1024);
+
if (!fff) {
#ifdef JP
msg_format("°ì»þ¥Õ¥¡¥¤¥ë %s ¤òºîÀ®¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡£", file_name);
return;
}
+ /* Allocate the "who" array */
+ C_MAKE(who, max_r_idx, s16b);
+
{
/* Monsters slain */
int kk;
#endif
+ /* Free the "who" array */
+ C_KILL(who, max_r_idx, s16b);
+
/* Close the file */
my_fclose(fff);
object_kind *k_ptr = &k_info[k];
/* Hack -- skip artifacts */
- if (k_ptr->flags3 & (TR3_INSTA_ART)) continue;
+ if (k_ptr->gen_flags & (TRG_INSTA_ART)) continue;
/* List known flavored objects */
if (k_ptr->flavor && k_ptr->aware)
* List virtues & status
*
*/
-void do_cmd_knowledge_kubi(void)
+static void do_cmd_knowledge_kubi(void)
{
int i;
FILE *fff;
* List virtues & status
*
*/
-void do_cmd_knowledge_virtues(void)
+static void do_cmd_knowledge_virtues(void)
{
FILE *fff;
char file_name[1024];
- cptr disp_align;
/* Open a new file */
if (fff)
{
#ifdef JP
- if (p_ptr->align > 150) disp_align = "ÂçÁ±";
- else if (p_ptr->align > 50) disp_align = "ÃæÁ±";
- else if (p_ptr->align > 10) disp_align = "¾®Á±";
- else if (p_ptr->align > -11) disp_align = "ÃæΩ";
- else if (p_ptr->align > -51) disp_align = "¾®°";
- else if (p_ptr->align > -151) disp_align = "Ãæ°";
- else disp_align = "Âç°";
- fprintf(fff, "¸½ºß¤Î°À : %s\n", disp_align);
- fprintf(fff, "\n");
+ fprintf(fff, "¸½ºß¤Î°À : %s\n\n", your_alignment());
#else
- if (p_ptr->align > 150) disp_align = "lawful";
- else if (p_ptr->align > 50) disp_align = "good";
- else if (p_ptr->align > 10) disp_align = "neutral good";
- else if (p_ptr->align > -11) disp_align = "neutral";
- else if (p_ptr->align > -51) disp_align = "neutral evil";
- else if (p_ptr->align > -151) disp_align = "evil";
- else disp_align = "chaotic";
- fprintf(fff, "Your alighnment : %s\n", disp_align);
- fprintf(fff, "\n");
+ fprintf(fff, "Your alighnment : %s\n\n", your_alignment());
#endif
dump_virtues(fff);
}
* Dungeon
*
*/
-void do_cmd_knowledge_dungeon(void)
+static void do_cmd_knowledge_dungeon(void)
{
FILE *fff;
if (fff)
{
- percent = (int)(((long)player_hp[PY_MAX_LEVEL - 1] * 200L) /
+ percent = (int)(((long)p_ptr->player_hp[PY_MAX_LEVEL - 1] * 200L) /
(2 * p_ptr->hitdie +
((PY_MAX_LEVEL - 1+3) * (p_ptr->hitdie + 1))));
if (!total) fprintf(fff, "Nothing.\n");
#endif
- if (wizard) {
+ if (p_ptr->wizard) {
#ifdef JP
fprintf(fff, "\n¡Ô»Ä¤ê¤Î¥é¥ó¥À¥à¥¯¥¨¥¹¥È¡Õ\n");
#else
* List my home
*
*/
-void do_cmd_knowledge_home(void)
+static void do_cmd_knowledge_home(void)
{
FILE *fff;
for (k = 0; k < max_autopick; k++)
{
- if (!(autopick_action[k] & DO_AUTOPICK))
+ cptr tmp;
+ byte act = autopick_list[k].action;
+ if (act & DONT_AUTOPICK)
{
#ifdef JP
- fprintf(fff, " [ÊüÃÖ]");
+ tmp = "ÊüÃÖ";
#else
- fprintf(fff, " [Leave]");
+ tmp = "Leave";
#endif
}
- else if ((autopick_action[k] & DO_AUTODESTROY))
+ else if (act & DO_AUTODESTROY)
{
#ifdef JP
- fprintf(fff, " [Ç˲õ]");
+ tmp = "Ç˲õ";
#else
- fprintf(fff, " [Destroy]");
+ tmp = "Destroy";
#endif
}
else
{
#ifdef JP
- fprintf(fff, " [½¦¤¦]");
+ tmp = "½¦¤¦";
#else
- fprintf(fff, " [Pickup]");
+ tmp = "Pickup";
#endif
}
- fprintf(fff, " %s", autopick_name[k]);
- if(autopick_insc[k] != NULL)
- fprintf(fff, " {%s}", autopick_insc[k]);
+ if (act & DO_DISPLAY)
+ fprintf(fff, "%11s", format("[%s]", tmp));
+ else
+ fprintf(fff, "%11s", format("(%s)", tmp));
+
+ tmp = autopick_line_from_entry(&autopick_list[k]);
+ fprintf(fff, " %s", tmp);
+ string_free(tmp);
fprintf(fff, "\n");
}
/* Close the file */
}
-
/*
* Interact with "knowledge"
*/
FILE *fff;
- s32b len = 20L * TOWN_DAWN;
- s32b tick = turn % len + len / 4;
+ extract_day_hour_min(&day, &hour, &min);
- if ((p_ptr->prace == RACE_VAMPIRE) ||
- (p_ptr->prace == RACE_SKELETON) ||
- (p_ptr->prace == RACE_ZOMBIE) ||
- (p_ptr->prace == RACE_SPECTRE))
- day = (turn - (15L * TOWN_DAWN))/ len + 1;
- else
- day = (turn + (5L * TOWN_DAWN))/ len + 1;
- hour = (24 * tick / len) % 24;
- min = (1440 * tick / len) % 60;
full = hour * 100 + min;
start = 9999;
min, (hour < 12) ? "AM" : "PM");
/* Find the path */
- if (!rand_int(10) || p_ptr->image)
+ if (!randint0(10) || p_ptr->image)
{
#ifdef JP
path_build(buf, 1024, ANGBAND_DIR_FILE, "timefun_j.txt");
num++;
/* Apply the randomizer */
- if (!rand_int(num)) strcpy(desc, buf + 2);
+ if (!randint0(num)) strcpy(desc, buf + 2);
/* Next... */
continue;