OSDN Git Service

Add POWERFUL flag for generate ego. Easy to make a Cursed but has good pval ego
authordis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 23 May 2013 14:48:06 +0000 (14:48 +0000)
committerdis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 23 May 2013 14:48:06 +0000 (14:48 +0000)
lib/edit/e_info.txt
src/defines.h
src/init1.c
src/object2.c

index 63ed4c6..7c89684 100644 (file)
@@ -796,7 +796,7 @@ E:(Demonic)
 X:24:25
 W:0:30:0:15000
 C:6:6:-20:4
-F:INT | BRAND_FIRE | 
+F:INT | BRAND_FIRE | CURSED | POWERFUL |
 F:RES_FIRE | RES_NETHER | SEE_INVIS | ESP_DEMON | XTRA_DICE
 
 N:102:¥â¥ë¥°¥ë¤Î
index 58ca6b3..50bf7ea 100644 (file)
 #define TRG_RANDOM_CURSE1       0x00004000L     /* Item is Random Cursed */
 #define TRG_RANDOM_CURSE2       0x00008000L     /* Item is Random Cursed */
 #define TRG_XTRA_DICE           0x00010000L     /* Extra dice */
+#define TRG_POWERFUL            0x00020000L     /* Item has good value even if Cursed */
 
 
 #define MAX_CURSE 17
index a072d55..2cf71db 100644 (file)
@@ -800,7 +800,7 @@ static cptr k_info_gen_flags[] =
        "RANDOM_CURSE1",
        "RANDOM_CURSE2",
        "XTRA_DICE",
-       "XXX",
+       "POWERFUL",
        "XXX",
        "XXX",
        "XXX",
index e528d62..abf2f6b 100644 (file)
@@ -2400,6 +2400,8 @@ static void a_m_aux_1(object_type *o_ptr, int level, int power)
                                                add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
                                        break;
                                case EGO_DEMON:
+                                       
+                                       if(one_in_(3)) o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
                                        if (one_in_(3)){
                                                add_flag(o_ptr->art_flags, TR_DRAIN_EXP);
                                        }
@@ -4375,7 +4377,7 @@ void apply_magic(object_type *o_ptr, int lev, u32b mode)
                if (e_ptr->act_idx) o_ptr->xtra2 = e_ptr->act_idx;
 
                /* Hack -- apply extra penalties if needed */
-               if (object_is_cursed(o_ptr) || object_is_broken(o_ptr))
+               if ((object_is_cursed(o_ptr) || object_is_broken(o_ptr)) && !(e_ptr->gen_flags & (TRG_POWERFUL)))
                {
                        /* Hack -- obtain bonuses */
                        if (e_ptr->max_to_h) o_ptr->to_h -= randint1(e_ptr->max_to_h);
@@ -4447,8 +4449,6 @@ void apply_magic(object_type *o_ptr, int lev, u32b mode)
                                }
                                else if (o_ptr->name2 == EGO_DEMON)
                                {
-                                       o_ptr->curse_flags |= (TRC_CURSED);
-                                       if(one_in_(3)) o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
                                        if(have_flag(o_ptr->art_flags, TR_BLOWS))
                                        {
                                                o_ptr->pval += randint1(2);