OSDN Git Service

固定アーティファクトの発動は全部外部フラグ化し終わった。
[hengband/hengband.git] / src / bldg.c
index 9933af6..6b95be9 100644 (file)
@@ -2925,15 +2925,7 @@ msg_print("
 
                case BACT_RUMORS: /* Listen for rumors */
                        {
-                               char Rumor[1024];
-
-#ifdef JP
-                               if (!get_rnd_line_jonly("rumors_j.txt", 0, Rumor, 10))
-#else
-                               if (!get_rnd_line("rumors.txt", 0, Rumor))
-#endif
-
-                                       msg_format("%s", Rumor);
+                               display_rumor(TRUE);
                                break;
                        }
        }
@@ -2945,7 +2937,7 @@ msg_print("
 /*
  * Display quest information
  */
-static void get_questinfo(int questnum)
+static void get_questinfo(int questnum, bool do_init)
 {
        int     i;
        int     old_quest;
@@ -2965,7 +2957,8 @@ static void get_questinfo(int questnum)
        p_ptr->inside_quest = questnum;
 
        /* Get the quest text */
-       init_flags = INIT_SHOW_TEXT | INIT_ASSIGN;
+       init_flags = INIT_SHOW_TEXT;
+       if (do_init) init_flags |= INIT_ASSIGN;
 
        process_dungeon_file("q_info.txt", 0, 0, 0, 0);
 
@@ -3026,14 +3019,14 @@ put_str("
                /* Rewarded quest */
                q_ptr->status = QUEST_STATUS_REWARDED;
 
-               get_questinfo(q_index);
+               get_questinfo(q_index, FALSE);
 
                reinit_wilderness = TRUE;
        }
        /* Failed quest */
        else if (q_ptr->status == QUEST_STATUS_FAILED)
        {
-               get_questinfo(q_index);
+               get_questinfo(q_index, FALSE);
 
                /* Mark quest as done (but failed) */
                q_ptr->status = QUEST_STATUS_FAILED_DONE;
@@ -3106,7 +3099,7 @@ msg_format("
                }
                else
                {
-                       get_questinfo(q_index);
+                       get_questinfo(q_index, TRUE);
                }
        }
 }
@@ -3135,18 +3128,19 @@ static void town_history(void)
 
 static s16b calc_expext_cirt(int weight, int plus, int dam, s16b meichuu, bool dokubari)
 {
-       long i, num;
+       long i,k, num;
        
        if(dokubari) return dam;
        
        i = weight + (meichuu * 3 + plus * 5) + (p_ptr->lev * 3);
+       k = weight;
        num=0;
        
-       if (i < 400)                                            num += (2 * dam + 5) * (400 - i);
-       if (i < 700)                                            num += (2 * dam + 10) * (700 - MAX(400, i));
-       if (i > (700-650) && i < 900)           num += (3 * dam + 15) * (900 - MAX(700, i));
-       if (i > (900-650) && i < 1300)          num += (3 * dam + 20) * (1300 - MAX(900, i));
-       if (i > (1300-650))                                     num += (7 * dam / 2 + 25) * (i - (1300-650));
+       if (k < 400)                                            num += (2 * dam + 5) * (400 - k);
+       if (k < 700)                                            num += (2 * dam + 10) * (MIN(700, k+650) - MAX(400, k));
+       if (k > (700-650) && k < 900)           num += (3 * dam + 15) * (MIN(900, k+650) - MAX(700, k));
+       if (k > (900-650) && k < 1300)          num += (3 * dam + 20) * (MIN(1300, k+650) - MAX(900, k));
+       if (k > (1300-650))                                     num += (7 * dam / 2 + 25) * MIN(650, k-(1300-650));
        
        if(p_ptr->pclass == CLASS_NINJA)
        {
@@ -5473,7 +5467,7 @@ void do_cmd_bldg(void)
        }
        else if ((which == 2) && p_ptr->inside_arena)
        {
-               if (!p_ptr->exit_bldg)
+               if (!p_ptr->exit_bldg && m_cnt > 0)
                {
 #ifdef JP
                        prt("¥²¡¼¥È¤ÏÊĤޤäƤ¤¤ë¡£¥â¥ó¥¹¥¿¡¼¤¬¤¢¤Ê¤¿¤òÂԤäƤ¤¤ë¡ª", 0, 0);