OSDN Git Service

Save damages dealt by player for each monster. (Do not use yet)
[hengband/hengband.git] / src / flavor.c
index 479b933..7d967f6 100644 (file)
@@ -34,6 +34,7 @@ static bool object_easy_know(int i)
                case TV_CRUSADE_BOOK:
                case TV_MUSIC_BOOK:
                case TV_HISSATSU_BOOK:
+               case TV_HEX_BOOK:
                {
                        return (TRUE);
                }
@@ -232,6 +233,9 @@ static void shuffle_flavors(byte tval)
                k1_ptr->flavor = k2_ptr->flavor;
                k2_ptr->flavor = tmp;
        }
+
+       /* Free an array for a list of k_idx */
+       C_KILL(k_idx_list, max_k_idx, s16b);
 }
 
 /*
@@ -268,12 +272,13 @@ static void shuffle_flavors(byte tval)
 void flavor_init(void)
 {
        int i;
+       u32b state_backup[4];
 
-       /* Hack -- Use the "simple" RNG */
-       Rand_quick = TRUE;
+       /* Hack -- Backup the RNG state */
+       Rand_state_backup(state_backup);
 
        /* Hack -- Induce consistant flavors */
-       Rand_value = seed_flavor;
+       Rand_state_init(seed_flavor);
 
 
        /* Initialize flavor index of each object by itself */
@@ -316,8 +321,8 @@ void flavor_init(void)
        shuffle_flavors(TV_SCROLL);
 
 
-       /* Hack -- Use the "complex" RNG */
-       Rand_quick = FALSE;
+       /* Hack -- Restore the RNG state */
+       Rand_state_restore(state_backup);
 
        /* Analyze every object */
        for (i = 1; i < max_k_idx; i++)
@@ -450,6 +455,7 @@ char *object_desc_kosuu(char *t, object_type *o_ptr)
       case  TV_CRUSADE_BOOK:
       case  TV_MUSIC_BOOK:
       case  TV_HISSATSU_BOOK:
+         case TV_HEX_BOOK:
       {
          t = object_desc_str(t, "ºý");
          break;
@@ -623,7 +629,8 @@ static flag_insc_table flag_insc_resistance[] =
 
 static flag_insc_table flag_insc_misc[] =
 {
-       { "ËâÎÏ", "Ma", TR_DEC_MANA, -1 },
+       { "°×", "Es", TR_EASY_SPELL, -1 },
+       { "¸º", "Dm", TR_DEC_MANA, -1 },
        { "Åê", "Th", TR_THROW, -1 },
        { "ȿ", "Rf", TR_REFLECT, -1 },
        { "Ëã", "Fa", TR_FREE_ACT, -1 },
@@ -640,6 +647,8 @@ static flag_insc_table flag_insc_misc[] =
        { "ÅÜ", "Ag", TR_AGGRAVATE, -1 },
        { "½Ë", "Bs", TR_BLESSED, -1 },
        { "´÷", "Ty", TR_TY_CURSE, -1 },
+       { "¼ö", "C-", TR_ADD_L_CURSE, -1 },
+       { "ëÇ", "C+", TR_ADD_H_CURSE, -1 },
        { NULL, NULL, 0, -1 }
 };
 
@@ -781,7 +790,8 @@ static flag_insc_table flag_insc_resistance[] =
 
 static flag_insc_table flag_insc_misc[] =
 {
-       { "Ma", TR_DEC_MANA, -1 },
+       { "Es", TR_EASY_SPELL, -1 },
+       { "Dm", TR_DEC_MANA, -1 },
        { "Th", TR_THROW, -1 },
        { "Rf", TR_REFLECT, -1 },
        { "Fa", TR_FREE_ACT, -1 },
@@ -798,6 +808,8 @@ static flag_insc_table flag_insc_misc[] =
        { "Ag", TR_AGGRAVATE, -1 },
        { "Bs", TR_BLESSED, -1 },
        { "Ty", TR_TY_CURSE, -1 },
+       { "C-", TR_ADD_L_CURSE, -1 },
+       { "C+", TR_ADD_H_CURSE, -1 },
        { NULL, 0, -1 }
 };
 
@@ -1143,6 +1155,26 @@ static void get_inscription(char *buff, object_type *o_ptr)
        *ptr = '\0';
 }
 
+bool object_is_quest_target(object_type *o_ptr)
+{
+       if (p_ptr->inside_quest)
+       {
+               int a_idx = quest[p_ptr->inside_quest].k_idx;
+               if (a_idx)
+               {
+                       artifact_type *a_ptr = &a_info[a_idx];
+                       if (!(a_ptr->gen_flags & TRG_INSTA_ART))
+                       {
+                               if((o_ptr->tval == a_ptr->tval) && (o_ptr->sval == a_ptr->sval))
+                               {
+                                       return TRUE;
+                               }
+                       }
+               }
+       }
+       return FALSE;
+}
+
 
 /*
  * Creates a description of the item "o_ptr", and stores it in "out_val".
@@ -1741,6 +1773,20 @@ void object_desc(char *buf, object_type *o_ptr, u32b mode)
                        break;
                }
 
+               case TV_HEX_BOOK:
+               {
+#ifdef JP
+                       basenm = "¼ö½Ñ¤ÎËâË¡½ñ%";
+#else
+                       if (mp_ptr->spell_book == TV_LIFE_BOOK)
+                               basenm = "& Book~ of Crusade Magic %";
+                       else
+                               basenm = "& Crusade Spellbook~ %";
+#endif
+
+                       break;
+               }
+
                /* Hack -- Gold/Gems */
                case TV_GOLD:
                {
@@ -2286,7 +2332,13 @@ void object_desc(char *buf, object_type *o_ptr, u32b mode)
                case TV_HAFTED:
                case TV_POLEARM:
                case TV_SWORD:
-               case TV_DIGGING:
+           case TV_DIGGING:
+               
+               /* In Vault Quest, hide the dice of target weapon. */
+               if(object_is_quest_target(o_ptr) && !known)
+               {
+                       break;
+               }
 
                /* Append a "damage" string */
                t = object_desc_chr(t, ' ');