OSDN Git Service

refactor lite flags
authordis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 9 Jun 2013 09:52:31 +0000 (09:52 +0000)
committerdis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 9 Jun 2013 09:52:31 +0000 (09:52 +0000)
13 files changed:
lib/edit/a_info.txt
lib/edit/e_info.txt
lib/edit/k_info.txt
src/artifact.c
src/defines.h
src/files.c
src/flavor.c
src/init1.c
src/load.c
src/object1.c
src/object2.c
src/wizard1.c
src/xtra1.c

index ad011c1..70a8f0c 100644 (file)
@@ -92,7 +92,7 @@ E:of Galadriel
 I:39:4:1
 W:30:1:10:10000
 P:0:1d1:0:0:0
-F:ACTIVATE | SEARCH | INSTA_ART
+F:ACTIVATE | SEARCH | INSTA_ART | LITE_3 | 
 U:LIGHT
 D:$A small crystal phial, with the light of Earendil's Star contained inside.  
 D:$Its light is imperishable, and near it darkness cannot endure.
@@ -116,7 +116,7 @@ E:of Elendil
 I:39:5:1
 W:50:25:5:32500
 P:0:1d1:0:0:0
-F:ACTIVATE | SEE_INVIS | HOLD_LIFE | INSTA_ART | SPEED
+F:ACTIVATE | SEE_INVIS | HOLD_LIFE | INSTA_ART | SPEED | LITE_3 |
 U:MAP_LIGHT
 D:$The shining Star of the West, a famed heirloom of Elendil's house.
 D:µ±¤¯¡ØÀ¾Êý¹ñ¤ÎÀ±¡Ù¤Ç¡¢¥¨¥ì¥ó¥Ç¥£¥ë¤Î²È·Ï¤ËÅÁ¤ï¤ë²ÈÊõ¤À¡£
@@ -132,7 +132,7 @@ E:of Judgement
 I:39:6:3
 W:70:90:5:150000
 P:0:1d1:0:0:0
-F:ACTIVATE | SEE_INVIS | HOLD_LIFE | RES_CONF | RES_CHAOS |
+F:ACTIVATE | SEE_INVIS | HOLD_LIFE | RES_CONF | RES_CHAOS | LITE_3 | 
 F:INSTA_ART | SPEED | WIS | INT
 U:JUDGE
 D:$This crimson jewelry which is chained with a gold chain is
@@ -234,7 +234,7 @@ E:of Yeduson
 I:39:3:3
 W:40:20:5:20000
 P:0:1d1:0:0:0
-F:INSTA_ART | INFRA | SH_FIRE | SH_ELEC
+F:INSTA_ART | INFRA | SH_FIRE | SH_ELEC | LITE_3 |
 D:$The Incandescent Light of Yeduson 
 D:$Thomas Alva Yeduson the "Wizard of Menlo Park" 
 D:$patented 1,093 inventions.  
@@ -395,7 +395,7 @@ E:Palantir~ of Westernesse
 I:39:8:3
 W:60:50:10:60000
 P:0:1d1:0:0:0
-F:WIS | CHR | ACTIVATE | TELEPATHY | INSTA_ART | FULL_NAME
+F:WIS | CHR | ACTIVATE | TELEPATHY | INSTA_ART | FULL_NAME | LITE_3 | 
 U:DETECT_UNIQUE
 D:$A shining white ball of unbreakable crystal, the ancient palantiri, 
 D:$or 'far-watchers', were used by kings of Numenor and later by the Exiles 
@@ -429,7 +429,7 @@ E:of Lore
 I:39:7:0
 W:15:12:15:20000
 P:0:1d1:0:0:0
-F:ACTIVATE | INSTA_ART
+F:ACTIVATE | INSTA_ART | LITE_3 |
 U:LORE
 D:$A great emerald that fills your mind with images of knowledge and dreadful 
 D:$understanding as you stare into its depths.
@@ -2794,7 +2794,7 @@ E:of Laputa
 I:39:9:2
 W:60:60:10:60000
 P:0:1d1:0:0:0
-F:INT | CHR | SPEED | ACTIVATE | LEVITATION | HOLD_LIFE | INSTA_ART
+F:INT | CHR | SPEED | ACTIVATE | LEVITATION | HOLD_LIFE | INSTA_ART | LITE_3 | 
 U:BA_MANA
 D:ÉâÍ·¤ÎÎϤòÍ¿¤¨¤Æ¤¯¤ì¤ëÀĤ¯Ð¼¸÷¤ëÊõÀФÀ¡£
 
@@ -3628,7 +3628,7 @@ I:40:24:4
 W:50:150:2:50000
 P:0:0d0:0:0:5
 F:STEALTH | SEARCH | HIDE_TYPE | SEE_INVIS |
-F:RES_DARK | ACTIVATE | LITE |
+F:RES_DARK | ACTIVATE | LITE_M1 |
 F:INSTA_ART
 U:BA_DARK
 D:¼¿¹õ¤ÎÊõ¶Ì¤¬¤Ä¤±¤é¤ì¤¿ðô¾þ¤ê¤À¡£
@@ -4020,7 +4020,7 @@ E:The Orb of Fate
 I:39:10:3
 W:70:70:15:45000
 P:0:1d1:0:0:20
-F:WIS | CON | WARNING | ACTIVATE | FULL_NAME
+F:WIS | CON | WARNING | ACTIVATE | FULL_NAME | LITE_3 |
 U:TELEPORT_LEVEL
 D:¡Ö±¿Ì¿¤Î¥ª¡¼¥Ö¤ò»ý¤Ã¤Æ¤¤¤­¤Ê¤µ¤¤¡£¤ï¤¿¤·¤Ï±¿Ì¿¤Î¥ª¡¼¥Ö¤«¤é
 D:¿Í´Ö¤Î¼ê¤Ë¿¨¤ì¤Æ¤Ï¤Ê¤é¤Ì̤Íè¤ò¹ð¤²¤ëÎϤò¼è¤ê½ü¤­¤Þ¤·¤¿¡£
index 14ea30d..9ee365f 100644 (file)
@@ -235,7 +235,7 @@ N:23:
 E:of Darkness
 X:33:6
 W:0:18:0:800
-F:LITE | RES_DARK
+F:LITE_M1 | RES_DARK
 
 # intelligence, wisdom, beauty -> combined to brilliance
 
@@ -347,7 +347,7 @@ C:0:0:0:5
 W:0:36:0:0
 F:STR | INT | WIS | DEX | CON | CHR | HEAVY_CURSE | CURSED | RANDOM_CURSE2 |
 F:RES_COLD | RES_POIS | RES_NEXUS | RES_NETHER |
-F:SH_COLD | SEE_INVIS | LITE | XTRA_H_RES | XTRA_POWER | ADD_H_CURSE |
+F:SH_COLD | SEE_INVIS | LITE_M1 | XTRA_H_RES | XTRA_POWER | ADD_H_CURSE |
 F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
 
 N:39:¼ÀɤÎ
index 3ebfce1..d8d195b 100644 (file)
@@ -3686,6 +3686,7 @@ G:~:u
 I:39:0:4000
 W:1:0:30:2
 A:1/1
+F:LITE | LITE_FUEL
 P:0:1d1:0:0:0
 
 N:347:¿¿ï«¤Î¥é¥ó¥¿¥ó
@@ -3695,7 +3696,7 @@ I:39:1:7500
 W:3:0:50:35
 A:3/1
 P:0:1d1:0:0:0
-F:IGNORE_FIRE
+F:IGNORE_FIRE | LITE_2 | LITE_FUEL
 
 N:348:Ìý¤Ä¤Ü
 E:& Flask~ of oil
@@ -5639,7 +5640,7 @@ I:39:2:0
 W:15:40:60:450
 A:15/1
 P:0:1d1:0:0:0
-F:IGNORE_FIRE
+F:IGNORE_FIRE | LITE_2
 
 N:583:´äÀÐÍϲò:¥¢¥À¥Þ¥ó¥¿¥¤¥È¤Î
 E:Stone to Mud:Adamantite
index 2dddcba..5fe1017 100644 (file)
@@ -170,7 +170,7 @@ void one_ability(object_type *o_ptr)
        switch (randint0(10))
        {
        case 0: add_flag(o_ptr->art_flags, TR_LEVITATION);     break;
-       case 1: add_flag(o_ptr->art_flags, TR_LITE);        break;
+       case 1: add_flag(o_ptr->art_flags, TR_LITE_1);        break;
        case 2: add_flag(o_ptr->art_flags, TR_SEE_INVIS);   break;
        case 3: add_flag(o_ptr->art_flags, TR_WARNING);     break;
        case 4: add_flag(o_ptr->art_flags, TR_SLOW_DIGEST); break;
@@ -936,9 +936,9 @@ static void random_misc(object_type * o_ptr)
                break;
 
        case BIAS_FIRE:
-               if (!(have_flag(o_ptr->art_flags, TR_LITE)))
+               if (!(have_flag(o_ptr->art_flags, TR_LITE_1)))
                {
-                       add_flag(o_ptr->art_flags, TR_LITE); /* Freebie */
+                       add_flag(o_ptr->art_flags, TR_LITE_1); /* Freebie */
                }
                break;
        }
@@ -989,7 +989,7 @@ static void random_misc(object_type * o_ptr)
                        break;
                case 10:
                case 11:
-                       add_flag(o_ptr->art_flags, TR_LITE);
+                       add_flag(o_ptr->art_flags, TR_LITE_1);
                        break;
                case 12:
                case 13:
index 8929a60..f112059 100644 (file)
 #define TR_HIDE_TYPE           73     /* Hide "pval" description */
 #define TR_SHOW_MODS           74     /* Always show Tohit/Todam */
 #define TR_SLAY_GOOD           75
-#define TR_LEVITATION             76     /* Feather Falling */
-#define TR_LITE                77     /* Permanent Light */
+#define TR_LEVITATION          76     /* Feather Falling */
 #define TR_SEE_INVIS           78     /* See Invisible */
 #define TR_TELEPATHY           79     /* Telepathy */
 #define TR_SLOW_DIGEST         80     /* Item slows down digestion */
 #define TR_DRAIN_HP            120
 #define TR_DRAIN_MANA          121
 
-#define TR_FLAG_MAX            122
+#define TR_LITE_1              77     /* Light Radius 1*/
+#define TR_LITE_2                         122
+#define TR_LITE_3                         123
+#define TR_LITE_M1                        124    /* Permanent decrease Light Area (-1) */
+#define TR_LITE_M2                        125    /* Permanent decrease Light Area (-1) */
+#define TR_LITE_M3                        126    /* Permanent decrease Light Area (-1) */
+#define TR_LITE_FUEL              127    /* Lights need Fuels */
+
+#define TR_FLAG_MAX            128
 #define TR_FLAG_SIZE           4
 
 
index 3596383..555af3b 100644 (file)
@@ -2377,7 +2377,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE])
                        add_flag(flgs, TR_HOLD_LIFE);
                        add_flag(flgs, TR_RES_DARK);
                        add_flag(flgs, TR_RES_NETHER);
-                       if (p_ptr->pclass != CLASS_NINJA) add_flag(flgs, TR_LITE);
+                       if (p_ptr->pclass != CLASS_NINJA) add_flag(flgs, TR_LITE_1);
                        add_flag(flgs, TR_RES_POIS);
                        add_flag(flgs, TR_RES_COLD);
                        add_flag(flgs, TR_SEE_INVIS);
@@ -2525,7 +2525,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE])
                add_flag(flgs, TR_HOLD_LIFE);
                add_flag(flgs, TR_RES_DARK);
                add_flag(flgs, TR_RES_NETHER);
-               if (p_ptr->pclass != CLASS_NINJA) add_flag(flgs, TR_LITE);
+               if (p_ptr->pclass != CLASS_NINJA) add_flag(flgs, TR_LITE_1);
                add_flag(flgs, TR_RES_POIS);
                add_flag(flgs, TR_RES_COLD);
                break;
@@ -2606,7 +2606,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE])
                if (p_ptr->muta3 & MUT3_FIRE_BODY)
                {
                        add_flag(flgs, TR_SH_FIRE);
-                       add_flag(flgs, TR_LITE);
+                       add_flag(flgs, TR_LITE_1);
                }
 
                if (p_ptr->muta3 & MUT3_WINGS)
@@ -2642,7 +2642,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE])
                add_flag(flgs, TR_RES_BLIND);
                add_flag(flgs, TR_RES_CONF);
                add_flag(flgs, TR_HOLD_LIFE);
-               if (p_ptr->pclass != CLASS_NINJA) add_flag(flgs, TR_LITE);
+               if (p_ptr->pclass != CLASS_NINJA) add_flag(flgs, TR_LITE_1);
                if (p_ptr->lev > 9)
                        add_flag(flgs, TR_SPEED);
        }
@@ -2684,7 +2684,7 @@ static void player_flags(u32b flgs[TR_FLAG_SIZE])
                add_flag(flgs, TR_SH_ELEC);
                add_flag(flgs, TR_SH_COLD);
                add_flag(flgs, TR_LEVITATION);
-               add_flag(flgs, TR_LITE);
+               add_flag(flgs, TR_LITE_1);
                add_flag(flgs, TR_SEE_INVIS);
                add_flag(flgs, TR_TELEPATHY);
                add_flag(flgs, TR_SLOW_DIGEST);
@@ -2789,7 +2789,7 @@ static void tim_player_flags(u32b flgs[TR_FLAG_SIZE])
                add_flag(flgs, TR_SH_ELEC);
                add_flag(flgs, TR_SH_COLD);
                add_flag(flgs, TR_LEVITATION);
-               add_flag(flgs, TR_LITE);
+               add_flag(flgs, TR_LITE_1);
                add_flag(flgs, TR_SEE_INVIS);
                add_flag(flgs, TR_TELEPATHY);
                add_flag(flgs, TR_SLOW_DIGEST);
@@ -3208,7 +3208,7 @@ display_flag_aux(row+4, col, "
 display_flag_aux(row+5, col, "Ãپò½    :", TR_SLOW_DIGEST, &f, 0);
 display_flag_aux(row+6, col, "µÞ²óÉü    :", TR_REGEN, &f, 0);
 display_flag_aux(row+7, col, "ÉâÍ·      :", TR_LEVITATION, &f, 0);
-display_flag_aux(row+8, col, "±Ê±ó¸÷¸»  :", TR_LITE, &f, 0);
+display_flag_aux(row+8, col, "±Ê±ó¸÷¸»  :", TR_LITE_1, &f, 0);
 display_flag_aux(row+9, col, "¼ö¤¤      :", 0, &f, DP_CURSE);
 #else
        display_flag_aux(row+0, col, "Speed     :", TR_SPEED, &f, 0);
@@ -3219,7 +3219,7 @@ display_flag_aux(row+9, col, "
        display_flag_aux(row+5, col, "SlowDigest:", TR_SLOW_DIGEST, &f, 0);
        display_flag_aux(row+6, col, "Regene.   :", TR_REGEN, &f, 0);
        display_flag_aux(row+7, col, "Levitation:", TR_LEVITATION, &f, 0);
-       display_flag_aux(row+8, col, "Perm Lite :", TR_LITE, &f, 0);
+       display_flag_aux(row+8, col, "Perm Lite :", TR_LITE_1, &f, 0);
        display_flag_aux(row+9, col, "Cursed    :", 0, &f, DP_CURSE);
 #endif
 
index 40bb568..d11a6f0 100644 (file)
@@ -639,7 +639,7 @@ static flag_insc_table flag_insc_misc[] =
        { "ÃÙ", "Sd", TR_SLOW_DIGEST, -1 },
        { "³è", "Rg", TR_REGEN, -1 },
        { "Éâ", "Lv", TR_LEVITATION, -1 },
-       { "ÌÀ", "Lu", TR_LITE, -1 },
+       { "ÌÀ", "Lu", TR_LITE_1, -1 },
        { "·Ù", "Wr", TR_WARNING, -1 },
        { "ÇÜ", "Xm", TR_XTRA_MIGHT, -1 },
        { "¼Í", "Xs", TR_XTRA_SHOTS, -1 },
@@ -800,7 +800,7 @@ static flag_insc_table flag_insc_misc[] =
        { "Sd", TR_SLOW_DIGEST, -1 },
        { "Rg", TR_REGEN, -1 },
        { "Lv", TR_LEVITATION, -1 },
-       { "Lu", TR_LITE, -1 },
+       { "Lu", TR_LITE_1, -1 },
        { "Wr", TR_WARNING, -1 },
        { "Xm", TR_XTRA_MIGHT, -1 },
        { "Xs", TR_XTRA_SHOTS, -1 },
index f41bb9d..7cb96ba 100644 (file)
@@ -778,6 +778,13 @@ static cptr k_info_flags[] =
        "ADD_H_CURSE",
        "DRAIN_HP",
        "DRAIN_MANA",
+       
+       "LITE_2",
+       "LITE_3",
+       "LITE_M1",
+       "LITE_M2",
+       "LITE_M3",
+       "LITE_FUEL",
 };
 
 
index 9b731e8..d1e4e34 100644 (file)
@@ -428,7 +428,7 @@ static void rd_item_old(object_type *o_ptr)
                        switch (o_ptr->xtra2 % 8)
                        {
                        case 0: add_flag(o_ptr->art_flags, TR_LEVITATION);     break;
-                       case 1: add_flag(o_ptr->art_flags, TR_LITE);        break;
+                       case 1: add_flag(o_ptr->art_flags, TR_LITE_1);        break;
                        case 2: add_flag(o_ptr->art_flags, TR_SEE_INVIS);   break;
                        case 3: add_flag(o_ptr->art_flags, TR_WARNING);     break;
                        case 4: add_flag(o_ptr->art_flags, TR_SLOW_DIGEST); break;
@@ -660,6 +660,54 @@ static void rd_item(object_type *o_ptr)
                o_ptr->art_name = quark_add(buf);
        }
        else o_ptr->art_name = 0;
+       
+       if(h_older_than(2,1,2,3))
+       {
+               u32b flgs[TR_FLAG_SIZE];
+               object_flags(o_ptr, flgs);
+               
+               if ((o_ptr->name2 == EGO_DARK) || (o_ptr->name2 == EGO_ANCIENT_CURSE) || (o_ptr->name1 == ART_NIGHT))
+               {
+                       add_flag(o_ptr->art_flags, TR_LITE_M1);
+                       remove_flag(o_ptr->art_flags, TR_LITE_1);
+                       remove_flag(o_ptr->art_flags, TR_LITE_2);
+                       remove_flag(o_ptr->art_flags, TR_LITE_3);
+               }
+               
+               if (o_ptr->name2 == EGO_LITE_DARKNESS)
+               {
+                       if (o_ptr->sval == SV_LITE_TORCH)
+                       {
+                               add_flag(o_ptr->art_flags, TR_LITE_M1);
+                       }
+                       else if (o_ptr->sval == SV_LITE_LANTERN)
+                       {
+                               add_flag(o_ptr->art_flags, TR_LITE_M2);
+                       }
+                       else if (o_ptr->sval == SV_LITE_FEANOR)
+                       {
+                               add_flag(o_ptr->art_flags, TR_LITE_M3);
+                       }
+               }
+               else if (o_ptr->sval == SV_LITE_TORCH)
+               {
+                       add_flag(o_ptr->art_flags, TR_LITE_1);
+                       add_flag(o_ptr->art_flags, TR_LITE_FUEL);
+               }
+               else if (o_ptr->sval == SV_LITE_LANTERN)
+               {
+                       add_flag(o_ptr->art_flags, TR_LITE_2);
+                       add_flag(o_ptr->art_flags, TR_LITE_FUEL);       
+               }
+               else if (o_ptr->sval == SV_LITE_FEANOR)
+               {
+                       add_flag(o_ptr->art_flags, TR_LITE_2);
+               }
+               else if ((o_ptr->tval == TV_LITE) && object_is_fixed_artifact(o_ptr))
+               {
+                       add_flag(o_ptr->art_flags, TR_LITE_3);
+               }
+       }
 }
 
 
index 96d88a3..a194eaa 100644 (file)
@@ -514,6 +514,8 @@ bool screen_object(object_type *o_ptr, u32b mode)
        cptr            info[128];
        char o_name[MAX_NLEN];
        int wid, hgt;
+       int rad;
+       char desc[256];
 
        int trivial_info = 0;
 
@@ -671,120 +673,36 @@ info[i++] = "
        }
        
        /* Hack -- describe lite's */
-       if (o_ptr->tval == TV_LITE)
+       
+       if (o_ptr->name2 == EGO_LITE_DARKNESS) info[i++] = _("¤½¤ì¤ÏÁ´¤¯¸÷¤é¤Ê¤¤¡£", "It provides no light.");
+       
+       rad = 0;
+       if (have_flag(flgs, TR_LITE_1))  rad += 1;
+       if (have_flag(flgs, TR_LITE_2))  rad += 2;
+       if (have_flag(flgs, TR_LITE_3))  rad += 3;
+       if (have_flag(flgs, TR_LITE_M1)) rad -= 1;
+       if (have_flag(flgs, TR_LITE_M2)) rad -= 2;
+       if (have_flag(flgs, TR_LITE_M3)) rad -= 3;
+       
+       if(o_ptr->name2 == EGO_LITE_SHINE) rad++;
+               
+       if (have_flag(flgs, TR_LITE_FUEL))
        {
-               if (o_ptr->name2 == EGO_LITE_DARKNESS)
-               {
-#ifdef JP
-                       info[i++] = "¤½¤ì¤ÏÁ´¤¯¸÷¤é¤Ê¤¤¡£";
-#else
-                       info[i++] = "It provides no light.";
-#endif
-
-                       if (o_ptr->sval == SV_LITE_FEANOR)
-                       {
-#ifdef JP
-                               info[i++] = "¤½¤ì¤ÏÌÀ¤«¤ê¤ÎȾ·Â¤ò¶¹¤á¤ë(Ⱦ·Â¤Ë-3)¡£";
-#else
-                               info[i++] = "It decreases radius of light source by 3.";
-#endif
-                       }
-                       else if (o_ptr->sval == SV_LITE_LANTERN)
-                       {
-#ifdef JP
-                               info[i++] = "¤½¤ì¤ÏÌÀ¤«¤ê¤ÎȾ·Â¤ò¶¹¤á¤ë(Ⱦ·Â¤Ë-2)¡£";
-#else
-                               info[i++] = "It decreases radius of light source by 2.";
-#endif
-                       }
-                       else
-                       {
-#ifdef JP
-                               info[i++] = "¤½¤ì¤ÏÌÀ¤«¤ê¤ÎȾ·Â¤ò¶¹¤á¤ë(Ⱦ·Â¤Ë-1)¡£";
-#else
-                               info[i++] = "It decreases radius of light source by 1.";
-#endif
-                       }
-               }
-               else if (object_is_fixed_artifact(o_ptr))
-               {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï±Ê±ó¤Ê¤ëÌÀ¤«¤ê(Ⱦ·Â 3)¤ò¼ø¤±¤ë¡£";
-#else
-                       info[i++] = "It provides light (radius 3) forever.";
-#endif
-
-               }
-               else if (o_ptr->name2 == EGO_LITE_SHINE)
-               {
-                       if (o_ptr->sval == SV_LITE_FEANOR)
-                       {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï±Ê±ó¤Ê¤ëÌÀ¤«¤ê(Ⱦ·Â 3)¤ò¼ø¤±¤ë¡£";
-#else
-                               info[i++] = "It provides light (radius 3) forever.";
-#endif
-
-                       }
-                       else if (o_ptr->sval == SV_LITE_LANTERN)
-                       {
-#ifdef JP
-info[i++] = "¤½¤ì¤ÏdzÎÁÊäµë¤Ë¤è¤Ã¤ÆÌÀ¤«¤ê(Ⱦ·Â 3)¤ò¼ø¤±¤ë¡£";
-#else
-                               info[i++] = "It provides light (radius 3) when fueled.";
-#endif
-
-                       }
-                       else
-                       {
-#ifdef JP
-info[i++] = "¤½¤ì¤ÏdzÎÁÊäµë¤Ë¤è¤Ã¤ÆÌÀ¤«¤ê(Ⱦ·Â 2)¤ò¼ø¤±¤ë¡£";
-#else
-                               info[i++] = "It provides light (radius 2) when fueled.";
-#endif
-
-                       }
-               }
-               else
-               {
-                       if (o_ptr->sval == SV_LITE_FEANOR)
-                       {
-#ifdef JP
-info[i++] = "¤½¤ì¤Ï±Ê±ó¤Ê¤ëÌÀ¤«¤ê(Ⱦ·Â 2)¤ò¼ø¤±¤ë¡£";
-#else
-                               info[i++] = "It provides light (radius 2) forever.";
-#endif
-
-                       }
-                       else if (o_ptr->sval == SV_LITE_LANTERN)
-                       {
-#ifdef JP
-info[i++] = "¤½¤ì¤ÏdzÎÁÊäµë¤Ë¤è¤Ã¤ÆÌÀ¤«¤ê(Ⱦ·Â 2)¤ò¼ø¤±¤ë¡£";
-#else
-                               info[i++] = "It provides light (radius 2) when fueled.";
-#endif
-
-                       }
-                       else
-                       {
-#ifdef JP
-info[i++] = "¤½¤ì¤ÏdzÎÁÊäµë¤Ë¤è¤Ã¤ÆÌÀ¤«¤ê(Ⱦ·Â 1)¤ò¼ø¤±¤ë¡£";
-#else
-                               info[i++] = "It provides light (radius 1) when fueled.";
-#endif
-
-                       }
-               }
-               if (o_ptr->name2 == EGO_LITE_LONG)
-               {
-#ifdef JP
-info[i++] = "¤½¤ì¤ÏŤ¤¥¿¡¼¥óÌÀ¤«¤ê¤ò¼ø¤±¤ë¡£";
-#else
-                       info[i++] = "It provides light for much longer time.";
-#endif
-               }
+               if(rad > 0) sprintf(desc, _("¤½¤ì¤ÏdzÎÁÊäµë¤Ë¤è¤Ã¤ÆÌÀ¤«¤ê(Ⱦ·Â %d)¤ò¼ø¤±¤ë¡£", "It provides light (radius %d) when fueled."), rad);     
        }
+       else
+       {
+               if(rad > 0) sprintf(desc, _("¤½¤ì¤Ï±Ê±ó¤Ê¤ëÌÀ¤«¤ê(Ⱦ·Â %d)¤ò¼ø¤±¤ë¡£", "It provides light (radius %d) forever."), rad); 
+               if(rad < 0) sprintf(desc, _("¤½¤ì¤ÏÌÀ¤«¤ê¤ÎȾ·Â¤ò¶¹¤á¤ë(Ⱦ·Â¤Ë-%d)¡£", "It decreases radius of light source by %d."), -rad);
+       }
+       
+       if(rad != 0) info[i++] = desc;
 
+       
+       if (o_ptr->name2 == EGO_LITE_LONG)
+       {
+               info[i++] = _("¤½¤ì¤ÏŤ¤¥¿¡¼¥óÌÀ¤«¤ê¤ò¼ø¤±¤ë¡£", "It provides light for much longer time.");
+       }
 
        /* And then describe it fully */
 
@@ -1477,13 +1395,7 @@ info[i++] = "
 #endif
 
        }
-       if (have_flag(flgs, TR_LITE))
-       {
-               if ((o_ptr->name2 == EGO_DARK) || (o_ptr->name2 == EGO_ANCIENT_CURSE) || (o_ptr->name1 == ART_NIGHT))
-                       info[i++] = _("¤½¤ì¤ÏÌÀ¤«¤ê¤ÎȾ·Â¤ò¶¹¤á¤ë(Ⱦ·Â¤Ë-1)¡£" , "It decreases radius of your light source by 1.");
-               else
-                       info[i++] = _("¤½¤ì¤Ï±Ê±ó¤ÎÌÀ¤«¤ê¤ò¼ø¤±¤ë(Ⱦ·Â¤Ë+1)¡£", "It provides permanent light. (radius +1)");
-       }
+               
        if (have_flag(flgs, TR_SEE_INVIS))
        {
                info[i++] = _("¤½¤ì¤ÏÆ©ÌÀ¤Ê¥â¥ó¥¹¥¿¡¼¤ò¸«¤ë¤³¤È¤ò²Äǽ¤Ë¤¹¤ë¡£", "It allows you to see invisible monsters.");
index 73dee3b..3617291 100644 (file)
@@ -991,7 +991,12 @@ s32b flag_cost(object_type *o_ptr, int plusses)
        if (have_flag(flgs, TR_HIDE_TYPE)) total += 0;
        if (have_flag(flgs, TR_SHOW_MODS)) total += 0;
        if (have_flag(flgs, TR_LEVITATION)) total += 1250;
-       if (have_flag(flgs, TR_LITE)) total += 1250;
+       if (have_flag(flgs, TR_LITE_1)) total += 1500;
+       if (have_flag(flgs, TR_LITE_2)) total += 2500;
+       if (have_flag(flgs, TR_LITE_3)) total += 4000;
+       if (have_flag(flgs, TR_LITE_M1)) total -= 1500;
+       if (have_flag(flgs, TR_LITE_M2)) total -= 2500;
+       if (have_flag(flgs, TR_LITE_M3)) total -= 4000;
        if (have_flag(flgs, TR_SEE_INVIS)) total += 2000;
        if (have_flag(flgs, TR_TELEPATHY)) total += 20000;
        if (have_flag(flgs, TR_ESP_ANIMAL)) total += 1000;
@@ -3355,7 +3360,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                                o_ptr->name2 = EGO_RING_REGEN;
                                                break;
                                        case 5: case 6:
-                                               if (have_flag(k_ptr->flags, TR_LITE)) break;
+                                               if (have_flag(k_ptr->flags, TR_LITE_1)) break;
                                                o_ptr->name2 = EGO_RING_LITE;
                                                break;
                                        case 7: case 8:
@@ -7164,7 +7169,7 @@ static essence_type essence_info[] =
        {TR_NO_MAGIC, "È¿ËâË¡", 3, TR_NO_MAGIC, 15},
        {TR_WARNING, "·Ù¹ð", 3, TR_WARNING, 20},
        {TR_LEVITATION, "ÉâÍ·", 3, TR_LEVITATION, 20},
-       {TR_LITE, "±Êµ×¸÷¸»", 3, TR_LITE, 15},
+       {TR_LITE_1, "±Êµ×¸÷¸»", 3, TR_LITE_1, 15},
        {TR_SEE_INVIS, "²Ä»ëÆ©ÌÀ", 3, TR_SEE_INVIS, 20},
        {TR_TELEPATHY, "¥Æ¥ì¥Ñ¥·¡¼", 6, TR_TELEPATHY, 15},
        {TR_SLOW_DIGEST, "Ãپò½", 3, TR_SLOW_DIGEST, 15},
@@ -7273,7 +7278,7 @@ static essence_type essence_info[] =
        {TR_NO_MAGIC, "anti magic", 3, TR_NO_MAGIC, 15},
        {TR_WARNING, "warning", 3, TR_WARNING, 20},
        {TR_LEVITATION, "levitation", 3, TR_LEVITATION, 20},
-       {TR_LITE, "permanent light", 3, TR_LITE, 15},
+       {TR_LITE_1, "permanent light", 3, TR_LITE_1, 15},
        {TR_SEE_INVIS, "see invisible", 3, TR_SEE_INVIS, 20},
        {TR_TELEPATHY, "telepathy", 6, TR_TELEPATHY, 15},
        {TR_SLOW_DIGEST, "slow digestion", 3, TR_SLOW_DIGEST, 15},
index 5eb8623..0e2a1d9 100644 (file)
@@ -1208,6 +1208,8 @@ static void analyze_sustains(object_type *o_ptr, cptr *sustain_list)
 static void analyze_misc_magic(object_type *o_ptr, cptr *misc_list)
 {
        u32b flgs[TR_FLAG_SIZE];
+       int rad;
+       char desc[256];
 
        object_flags(o_ptr, flgs);
 
@@ -1218,20 +1220,29 @@ static void analyze_misc_magic(object_type *o_ptr, cptr *misc_list)
                                     N_ELEMENTS(misc_flags3_desc));
 
        /*
-        * Artifact lights -- large radius light.
-        */
-       if ((o_ptr->tval == TV_LITE) && object_is_fixed_artifact(o_ptr))
+        * Glowing artifacts -- small radius light.
+       */      
+       rad = 0;
+       if (have_flag(flgs, TR_LITE_1))  rad += 1;
+       if (have_flag(flgs, TR_LITE_2))  rad += 2;
+       if (have_flag(flgs, TR_LITE_3))  rad += 3;
+       if (have_flag(flgs, TR_LITE_M1)) rad -= 1;
+       if (have_flag(flgs, TR_LITE_M2)) rad -= 2;
+       if (have_flag(flgs, TR_LITE_M3)) rad -= 3;
+       
+       if(o_ptr->name2 == EGO_LITE_SHINE) rad++;
+               
+       if (have_flag(flgs, TR_LITE_FUEL))
        {
-               *misc_list++ = _("±Êµ×¸÷¸»(Ⱦ·Â3)", "Permanent Light(3)");
+               if(rad > 0) sprintf(desc, _("¤½¤ì¤ÏdzÎÁÊäµë¤Ë¤è¤Ã¤ÆÌÀ¤«¤ê(Ⱦ·Â %d)¤ò¼ø¤±¤ë¡£", "It provides light (radius %d) when fueled."), rad);     
        }
-
-       /*
-        * Glowing artifacts -- small radius light.
-        */
-       if (have_flag(flgs, TR_LITE))
+       else
        {
-               *misc_list++ = _("±Êµ×¸÷¸»(Ⱦ·Â1)", "Permanent Light(1)");
+               if(rad > 0) sprintf(desc, _("±Êµ×¸÷¸»(Ⱦ·Â %d)", "Permanent Light(radius %d)"), rad);   
+               if(rad < 0) sprintf(desc, _("±Êµ×¸÷¸»(Ⱦ·Â-%d)¡£", "Permanent Light(radius -%d)"), -rad);
        }
+       
+       if(rad != 0) *misc_list++ = desc;       
 
        /*
         * Handle cursed objects here to avoid redundancies such as noting
index e3529c4..79d12d9 100644 (file)
@@ -3027,69 +3027,28 @@ static void calc_torch(void)
        for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
        {
                o_ptr = &inventory[i];
-
-               /* Examine actual lites */
-               if ((i == INVEN_LITE) && (o_ptr->k_idx) && (o_ptr->tval == TV_LITE))
+               /* Skip empty slots */
+               if (!o_ptr->k_idx) continue;
+               
+               if (o_ptr->name2 == EGO_LITE_SHINE) p_ptr->cur_lite++;
+               
+               /* Need Fuels */
+               if (o_ptr->name2 != EGO_LITE_DARKNESS)
                {
-                       if (o_ptr->name2 == EGO_LITE_DARKNESS)
-                       {
-                               if (o_ptr->sval == SV_LITE_TORCH)
-                               {
-                                       p_ptr->cur_lite -= 1;
-                               }
-
-                               /* Lanterns (with fuel) provide more lite */
-                               else if (o_ptr->sval == SV_LITE_LANTERN)
-                               {
-                                       p_ptr->cur_lite -= 2;
-                               }
-
-                               else if (o_ptr->sval == SV_LITE_FEANOR)
-                               {
-                                       p_ptr->cur_lite -= 3;
-                               }
-                       }
-                       /* Torches (with fuel) provide some lite */
-                       else if ((o_ptr->sval == SV_LITE_TORCH) && (o_ptr->xtra4 > 0))
-                       {
-                               p_ptr->cur_lite += 1;
-                       }
-
-                       /* Lanterns (with fuel) provide more lite */
-                       else if ((o_ptr->sval == SV_LITE_LANTERN) && (o_ptr->xtra4 > 0))
-                       {
-                               p_ptr->cur_lite += 2;
-                       }
-
-                       else if (o_ptr->sval == SV_LITE_FEANOR)
-                       {
-                               p_ptr->cur_lite += 2;
-                       }
-
-                       /* Artifact Lites provide permanent, bright, lite */
-                       else if (object_is_fixed_artifact(o_ptr))
-                       {
-                               p_ptr->cur_lite += 3;
-                       }
-
-                       if (o_ptr->name2 == EGO_LITE_SHINE) p_ptr->cur_lite++;
+                       if((o_ptr->sval == SV_LITE_TORCH) && !(o_ptr->xtra4 > 0)) break;
+                       if((o_ptr->sval == SV_LITE_LANTERN) && !(o_ptr->xtra4 > 0)) break;
                }
-               else
-               {
-                       /* Skip empty slots */
-                       if (!o_ptr->k_idx) continue;
-
-                       /* Extract the flags */
-                       object_flags(o_ptr, flgs);
 
-                       /* does this item glow? */
-                       if (have_flag(flgs, TR_LITE))
-                       {
-                               if ((o_ptr->name2 == EGO_DARK) || (o_ptr->name2 == EGO_ANCIENT_CURSE) || (o_ptr->name1 == ART_NIGHT)) p_ptr->cur_lite--;
-                               else p_ptr->cur_lite++;
-                       }
-               }
+               /* Extract the flags */
+               object_flags(o_ptr, flgs);
 
+               /* calc the lite_radius */
+               if (have_flag(flgs, TR_LITE_1)) p_ptr->cur_lite += 1;
+               if (have_flag(flgs, TR_LITE_2)) p_ptr->cur_lite += 2;
+               if (have_flag(flgs, TR_LITE_3)) p_ptr->cur_lite += 3;
+               if (have_flag(flgs, TR_LITE_M1)) p_ptr->cur_lite -= 1;
+               if (have_flag(flgs, TR_LITE_M2)) p_ptr->cur_lite -= 2;
+               if (have_flag(flgs, TR_LITE_M3)) p_ptr->cur_lite -= 3;
        }
 
        /* max radius is 14 (was 5) without rewriting other code -- */