OSDN Git Service

Add XTRA_DICE flag for generating ego weapons which have larger dice than their base...
authoriks <iks@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 13 Jan 2013 17:08:51 +0000 (17:08 +0000)
committeriks <iks@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 13 Jan 2013 17:08:51 +0000 (17:08 +0000)
src/defines.h
src/init1.c
src/object2.c

index 11b0e02..d9a8147 100644 (file)
 #define TRG_RANDOM_CURSE0       0x00002000L     /* Item is Random Cursed */
 #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 MAX_CURSE 17
index bfcdb7d..74b47af 100644 (file)
@@ -793,7 +793,7 @@ static cptr k_info_gen_flags[] =
        "RANDOM_CURSE0",
        "RANDOM_CURSE1",
        "RANDOM_CURSE2",
-       "XXX",
+       "XTRA_DICE",
        "XXX",
        "XXX",
        "XXX",
index bff5004..936ae33 100644 (file)
@@ -4371,6 +4371,16 @@ void apply_magic(object_type *o_ptr, int lev, u32b mode)
                if (e_ptr->gen_flags & (TRG_XTRA_D_RES)) one_dragon_ele_resistance(o_ptr);
                if (e_ptr->gen_flags & (TRG_XTRA_L_RES)) one_lordly_high_resistance(o_ptr);
                if (e_ptr->gen_flags & (TRG_XTRA_RES)) one_resistance(o_ptr);
+               if (e_ptr->gen_flags & (TRG_XTRA_DICE))
+               {
+                       do
+                       {
+                               o_ptr->dd++;
+                       }
+                       while (one_in_(o_ptr->dd));
+
+                       if (o_ptr->dd > 9) o_ptr->dd = 9;
+               }
 
                /* Hack -- apply extra penalties if needed */
                if (object_is_cursed(o_ptr) || object_is_broken(o_ptr))