OSDN Git Service

Auto inscription inscribes more than 1 radius lite abilities
authoriks <iks@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 30 Jun 2013 14:05:03 +0000 (14:05 +0000)
committeriks <iks@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 30 Jun 2013 14:05:03 +0000 (14:05 +0000)
src/defines.h
src/files.c
src/flavor.c

index d006762..093838f 100644 (file)
@@ -5667,3 +5667,10 @@ extern int PlayerUID;
 #else
 #define _(JAPANESE,ENGLISH) (ENGLISH)
 #endif
+
+/* Lite flag macro */
+#define have_lite_flag(ARRAY) \
+       (have_flag(ARRAY, TR_LITE_1) || have_flag(ARRAY, TR_LITE_2) || have_flag(ARRAY, TR_LITE_3))
+
+#define have_dark_flag(ARRAY) \
+       (have_flag(ARRAY, TR_LITE_M1) || have_flag(ARRAY, TR_LITE_M2) || have_flag(ARRAY, TR_LITE_M3))
index 2c83caf..8584ade 100644 (file)
@@ -3037,12 +3037,12 @@ static void display_flag_aux(int row, int col, cptr header,
                }
                else if (flag1 == TR_LITE_1)
                {
-                       if (have_flag(flgs, TR_LITE_M1) || have_flag(flgs, TR_LITE_M2) || have_flag(flgs, TR_LITE_M3))
+                       if (have_dark_flag(flgs))
                        {
                                c_put_str(TERM_L_DARK, "+", row, col);
                                header_color = TERM_WHITE;
                        }
-                       else if (have_flag(flgs, TR_LITE_1) || have_flag(flgs, TR_LITE_2) || have_flag(flgs, TR_LITE_3))
+                       else if (have_lite_flag(flgs))
                        {
                                c_put_str(TERM_WHITE, "+", row, col);
                                header_color = TERM_WHITE;
index d11a6f0..7326886 100644 (file)
@@ -640,6 +640,11 @@ static flag_insc_table flag_insc_misc[] =
        { "³è", "Rg", TR_REGEN, -1 },
        { "Éâ", "Lv", TR_LEVITATION, -1 },
        { "ÌÀ", "Lu", TR_LITE_1, -1 },
+       { "ÌÀ", "Lu", TR_LITE_2, -1 },
+       { "ÌÀ", "Lu", TR_LITE_3, -1 },
+       { "°Ç", "Dl", TR_LITE_M1, -1 },
+       { "°Ç", "Dl", TR_LITE_M2, -1 },
+       { "°Ç", "Dl", TR_LITE_M3, -1 },
        { "·Ù", "Wr", TR_WARNING, -1 },
        { "ÇÜ", "Xm", TR_XTRA_MIGHT, -1 },
        { "¼Í", "Xs", TR_XTRA_SHOTS, -1 },
@@ -801,6 +806,11 @@ static flag_insc_table flag_insc_misc[] =
        { "Rg", TR_REGEN, -1 },
        { "Lv", TR_LEVITATION, -1 },
        { "Lu", TR_LITE_1, -1 },
+       { "Lu", TR_LITE_2, -1 },
+       { "Lu", TR_LITE_3, -1 },
+       { "Dl", TR_LITE_M1, -1 },
+       { "Dl", TR_LITE_M2, -1 },
+       { "Dl", TR_LITE_M3, -1 },
        { "Wr", TR_WARNING, -1 },
        { "Xm", TR_XTRA_MIGHT, -1 },
        { "Xs", TR_XTRA_SHOTS, -1 },
@@ -953,7 +963,6 @@ static char *get_ability_abbreviation(char *ptr, object_type *o_ptr, bool kanji,
        /* Extract the flags */
        object_flags(o_ptr, flgs);
 
-
        /* Remove obvious flags */
        if (!all)
        {
@@ -981,6 +990,19 @@ static char *get_ability_abbreviation(char *ptr, object_type *o_ptr, bool kanji,
                }
        }
 
+       /* Remove lite flags when this is a dark lite object */
+       if (have_dark_flag(flgs))
+       {
+               if (have_flag(flgs, TR_LITE_1)) remove_flag(flgs, TR_LITE_1);
+               if (have_flag(flgs, TR_LITE_2)) remove_flag(flgs, TR_LITE_2);
+               if (have_flag(flgs, TR_LITE_3)) remove_flag(flgs, TR_LITE_3);
+       }
+       else if (have_lite_flag(flgs))
+       {
+               add_flag(flgs, TR_LITE_1);
+               if (have_flag(flgs, TR_LITE_2)) remove_flag(flgs, TR_LITE_2);
+               if (have_flag(flgs, TR_LITE_3)) remove_flag(flgs, TR_LITE_3);
+       }
 
        /* Plusses */
        if (have_flag_of(flag_insc_plus, flgs))