OSDN Git Service

Vanillaにならって、キャラクターの状態を表わすグローバル変数の多くを
[hengband/hengband.git] / src / cmd4.c
index ca9d459..b767495 100644 (file)
@@ -224,23 +224,11 @@ errr do_cmd_write_nikki(int type, int num, cptr note)
        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 ||
@@ -1556,13 +1544,13 @@ static void do_cmd_options_cheat(cptr info)
                        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;
@@ -2417,20 +2405,16 @@ void do_cmd_pref(void)
 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
@@ -2438,8 +2422,10 @@ void do_cmd_pickpref(void)
 #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
@@ -2448,20 +2434,27 @@ void do_cmd_pickpref(void)
        }
 
        /* ¶¦Ä̤ÎÀßÄê¥Õ¥¡¥¤¥ëÆɤ߹þ¤ß */
+
+       /* 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
@@ -3295,7 +3288,7 @@ void do_cmd_macros(void)
 }
 
 
-static void cmd_visuals_aux(char i, int *num, int max)
+static void cmd_visuals_aux(int i, int *num, int max)
 {
        if (iscntrl(i))
        {
@@ -3707,7 +3700,7 @@ void do_cmd_visuals(void)
                                if (use_bigtile)
                                {
                                        if (da & 0x80)
-                                               Term_putch(44, 19, 255, 255);
+                                               Term_putch(44, 19, 255, -1);
                                        else
                                                Term_putch(44, 19, 0, ' ');
                                }
@@ -3726,7 +3719,7 @@ void do_cmd_visuals(void)
                                if (use_bigtile)
                                {
                                        if (ca & 0x80)
-                                               Term_putch(44, 20, 255, 255);
+                                               Term_putch(44, 20, 255, -1);
                                        else
                                                Term_putch(44, 20, 0, ' ');
                                }
@@ -3820,7 +3813,7 @@ void do_cmd_visuals(void)
                                if (use_bigtile)
                                {
                                        if (da & 0x80)
-                                               Term_putch(44, 19, 255, 255);
+                                               Term_putch(44, 19, 255, -1);
                                        else
                                                Term_putch(44, 19, 0, ' ');
                                }
@@ -3839,7 +3832,7 @@ void do_cmd_visuals(void)
                                if (use_bigtile)
                                {
                                        if (ca & 0x80)
-                                               Term_putch(44, 20, 255, 255);
+                                               Term_putch(44, 20, 255, -1);
                                        else
                                                Term_putch(44, 20, 0, ' ');
                                }
@@ -3933,7 +3926,7 @@ void do_cmd_visuals(void)
                                if (use_bigtile)
                                {
                                        if (da & 0x80)
-                                               Term_putch(44, 19, 255, 255);
+                                               Term_putch(44, 19, 255, -1);
                                        else
                                                Term_putch(44, 19, 0, ' ');
                                }
@@ -3952,7 +3945,7 @@ void do_cmd_visuals(void)
                                if (use_bigtile)
                                {
                                        if (ca & 0x80)
-                                               Term_putch(44, 20, 255, 255);
+                                               Term_putch(44, 20, 255, -1);
                                        else
                                                Term_putch(44, 20, 0, ' ');
                                }
@@ -4627,7 +4620,7 @@ void do_cmd_feeling(void)
        }
 
        /* 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 {
@@ -4742,6 +4735,9 @@ void do_cmd_load_screen(void)
 
        char buf[1024];
 
+       int wid, hgt;
+
+       Term_get_size(&wid, &hgt);
 
        /* Hack -- drop permissions */
        safe_setuid_drop();
@@ -4772,13 +4768,13 @@ void do_cmd_load_screen(void)
 
 
        /* 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]);
@@ -4790,13 +4786,13 @@ void do_cmd_load_screen(void)
 
 
        /* 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));
@@ -5129,7 +5125,7 @@ static void do_cmd_knowledge_inven(void)
 #ifdef JP
          strcpy(where, "²È");
 #else
-         strcpy(where, "H ");/*nanka*/
+         strcpy(where, "H ");
 #endif
              
          /* Dump all available items */
@@ -5166,24 +5162,28 @@ void do_cmd_save_screen_html_aux(char *filename, int message)
        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);
 
@@ -5231,17 +5231,17 @@ void do_cmd_save_screen_html_aux(char *filename, int message)
        }
 
        /* 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));
 
@@ -5318,7 +5318,7 @@ void do_cmd_save_screen_html_aux(char *filename, int message)
 /*
  * 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";
 
@@ -5357,6 +5357,10 @@ 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;
@@ -5370,9 +5374,9 @@ void do_cmd_save_screen(void)
        }
 
 #ifdef JP
-       if (get_check_strict("HTML¤Ç½ÐÎϤ·¤Þ¤¹¤«¡©", 4))
+       if (get_check_strict("HTML¤Ç½ÐÎϤ·¤Þ¤¹¤«¡©", CHECK_NO_HISTORY))
 #else
-       if (get_check_strict("Save screen dump as HTML? ", 4))
+       if (get_check_strict("Save screen dump as HTML? ", CHECK_NO_HISTORY))
 #endif
        {
                do_cmd_save_screen_html();
@@ -5429,10 +5433,10 @@ void do_cmd_save_screen(void)
 
 
                /* 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));
@@ -5453,10 +5457,10 @@ void do_cmd_save_screen(void)
 
 
                /* 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));
@@ -5594,7 +5598,7 @@ static void ang_sort_art_swap(vptr u, vptr v, int a, int b)
 /*
  * 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;
@@ -5993,17 +5997,17 @@ static void do_cmd_knowledge_weapon_exp(void)
                                {
                                        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] >= s_info[p_ptr->pclass].w_max[4-i][num]) 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;
                                }
@@ -6069,10 +6073,10 @@ static void do_cmd_knowledge_spell_exp(void)
                                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)
@@ -6083,7 +6087,7 @@ static void do_cmd_knowledge_spell_exp(void)
                                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");
                }
        }
@@ -6103,15 +6107,15 @@ static void do_cmd_knowledge_spell_exp(void)
                        }
                        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");
                }
        }
@@ -6164,25 +6168,25 @@ static void do_cmd_knowledge_skill_exp(void)
        {
                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] == s_info[p_ptr->pclass].s_max[i]) 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");
        }
 
@@ -6669,7 +6673,7 @@ static void do_cmd_knowledge_objects(void)
 * List virtues & status
 *
 */
-void do_cmd_knowledge_kubi(void)
+static void do_cmd_knowledge_kubi(void)
 {
        int i;
        FILE *fff;
@@ -6733,7 +6737,7 @@ show_file(TRUE, file_name, "
 * List virtues & status
 *
 */
-void do_cmd_knowledge_virtues(void)
+static void do_cmd_knowledge_virtues(void)
 {
        FILE *fff;
        
@@ -6781,7 +6785,7 @@ show_file(TRUE, file_name, "Ȭ
 * Dungeon
 *
 */
-void do_cmd_knowledge_dungeon(void)
+static void do_cmd_knowledge_dungeon(void)
 {
        FILE *fff;
        
@@ -6862,7 +6866,7 @@ static void do_cmd_knowledge_stat(void)
        
        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))));
 
@@ -7232,7 +7236,7 @@ sprintf(rand_tmp_str,"%s (%d 
        if (!total) fprintf(fff, "Nothing.\n");
 #endif
 
-       if (wizard) {
+       if (p_ptr->wizard) {
 #ifdef JP
        fprintf(fff, "\n¡Ô»Ä¤ê¤Î¥é¥ó¥À¥à¥¯¥¨¥¹¥È¡Õ\n");
 #else
@@ -7287,7 +7291,7 @@ sprintf(rand_tmp_str,"%s (%d 
 * List my home
 *
 */
-void do_cmd_knowledge_home(void)
+static void do_cmd_knowledge_home(void)
 {
        FILE *fff;
        
@@ -7418,8 +7422,8 @@ static void do_cmd_knowledge_autopick(void)
 
        for (k = 0; k < max_autopick; k++)
        {
-               char *tmp;
-               byte act = autopick_action[k];
+               cptr tmp;
+               byte act = autopick_list[k].action;
                if (act & DONT_AUTOPICK)
                {
 #ifdef JP
@@ -7450,9 +7454,9 @@ static void do_cmd_knowledge_autopick(void)
                else
                        fprintf(fff, "%11s", format("(%s)", tmp));
 
-               fprintf(fff, " %s", autopick_name[k]);
-               if(autopick_insc[k] != NULL)
-                       fprintf(fff, " {%s}", autopick_insc[k]);
+               tmp = autopick_line_from_entry(&autopick_list[k]);
+               fprintf(fff, " %s", tmp);
+               string_free(tmp);
                fprintf(fff, "\n");
        }
        /* Close the file */
@@ -7469,7 +7473,6 @@ static void do_cmd_knowledge_autopick(void)
 }
 
 
-
 /*
  * Interact with "knowledge"
  */
@@ -7662,18 +7665,8 @@ void do_cmd_time(void)
 
        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;