OSDN Git Service

add cursed armor ego -- of Morgul
authordis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 23 May 2013 14:23:21 +0000 (14:23 +0000)
committerdis- <dis-@0568b783-4c39-0410-ac80-bf13821ea2a2>
Thu, 23 May 2013 14:23:21 +0000 (14:23 +0000)
lib/edit/e_info.txt
src/defines.h
src/object2.c

index 16db991..63ed4c6 100644 (file)
@@ -61,8 +61,18 @@ V:2.8.1
 
 # Single - Elemental Ego remaked as of Dwarven / of Olog
 
-# 4 (unused)
-# 5 (unused)
+
+N:4:¥â¥ë¥°¥ë¤Î
+E:of Morgul
+X:31:30
+W:0:30:0:10000
+C:0:0:10:3
+F:INT | WIS |
+F:RES_COLD | RES_POIS | RES_NETHER | SH_COLD | ESP_UNDEAD
+F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD |  XTRA_H_RES 
+F:CURSED | RANDOM_CURSE2 | ADD_L_CURSE | DRAIN_EXP
+
+# 5(unused)
 
 N:6:¥É¥ë¥¤¥É¤Î
 E:of Druid
@@ -794,7 +804,7 @@ E:of Morgul
 X:24:0
 W:0:36:0:0
 C:20:20:10:0
-F:SEE_INVIS | AGGRAVATE | HEAVY_CURSE | CURSED | SH_COLD |
+F:SEE_INVIS | AGGRAVATE  | CURSED | SH_COLD |
 F:SLAY_UNDEAD | SLAY_HUMAN | BRAND_POIS | ESP_UNDEAD |
 F:RES_COLD | RES_NETHER | 
 F:RANDOM_CURSE2 | XTRA_DICE 
index 6243d03..58ca6b3 100644 (file)
 /* xxx */
 
 /* Body Armor */
-#define EGO_XXXX1               4
+#define EGO_A_MORGUL            4
 #define EGO_XXXX2               5
 #define EGO_DRUID               6
 #define EGO_OLOG                7
index 3b2d80b..e528d62 100644 (file)
@@ -2447,6 +2447,7 @@ static void a_m_aux_1(object_type *o_ptr, int level, int power)
                                        {
                                        case EGO_MORGUL:
                                                if (one_in_(6)) add_flag(o_ptr->art_flags, TR_TY_CURSE);
+                                               if (one_in_(3)) o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
                                        case EGO_WEIRD:
                                                if (one_in_(4)) add_flag(o_ptr->art_flags, TR_BRAND_POIS);
                                                if (one_in_(4)) add_flag(o_ptr->art_flags, TR_RES_NETHER);
@@ -2679,40 +2680,46 @@ static void a_m_aux_2(object_type *o_ptr, int level, int power)
 
                                        switch (o_ptr->name2)
                                        {
-                                       case EGO_RESISTANCE:
-                                               if (one_in_(4))
-                                                       add_flag(o_ptr->art_flags, TR_RES_POIS);
-                                               break;
-                                       case EGO_ELVENKIND:
-                                       case EGO_URUKISH:
-                                               break;
-                                       case EGO_DWARVEN:
+                                         case EGO_DWARVEN:
                                                if (o_ptr->tval != TV_HARD_ARMOR)
                                                {
                                                        okay_flag = FALSE;
                                                        break;
                                                }
-                                               else
-                                               {
-                                                       o_ptr->weight = (2 * k_info[o_ptr->k_idx].weight / 3);
-                                                       o_ptr->ac = k_info[o_ptr->k_idx].ac + 5;
-                                                       break;
-                                               }
-                                       case EGO_DRUID:
+                                         case EGO_DRUID:
                                                if (o_ptr->tval != TV_SOFT_ARMOR)
                                                {
                                                        okay_flag = FALSE;
                                                        break;
                                                }
-                                               else
-                                               {
-                                                       break;
-                                               }
+                                         default:
+                                               break;
                                        }
 
                                        if (okay_flag)
                                                break;
                                }
+                               switch (o_ptr->name2)
+                               {
+                                 case EGO_RESISTANCE:
+                                       if (one_in_(4))
+                                               add_flag(o_ptr->art_flags, TR_RES_POIS);
+                                               break;
+                                 case EGO_DWARVEN:
+                                       o_ptr->weight = (2 * k_info[o_ptr->k_idx].weight / 3);
+                                       o_ptr->ac = k_info[o_ptr->k_idx].ac + 5;
+                                       break;
+                                 case EGO_A_MORGUL:
+                                       if(one_in_(3)) o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
+                                       if(one_in_(6)) add_flag(o_ptr->art_flags, TR_TY_CURSE);
+                                       if(one_in_(4)) add_flag(o_ptr->art_flags, TR_ADD_H_CURSE);
+                                       if(one_in_(4)) add_flag(o_ptr->art_flags, TR_AGGRAVATE);
+                                       if(one_in_(6)) add_flag(o_ptr->art_flags, TR_NO_MAGIC);
+                                       if(one_in_(6)) add_flag(o_ptr->art_flags, TR_NO_TELE);
+                                       break;
+                                 default:
+                                       break;
+                               }
                        }
 
                        break;
@@ -4467,6 +4474,8 @@ void apply_magic(object_type *o_ptr, int lev, u32b mode)
                                {
                                        o_ptr->pval += randint1(e_ptr->max_pval);
                                }
+                               
+                               
                        }
                        if ((o_ptr->name2 == EGO_SPEED) && (lev < 50))
                        {