OSDN Git Service

Add Soft-Armor Ego -- of Druid.
[hengband/hengband.git] / src / object2.c
index 1d9b8d1..a687b53 100644 (file)
@@ -1828,7 +1828,7 @@ void object_wipe(object_type *o_ptr)
 void object_copy(object_type *o_ptr, object_type *j_ptr)
 {
        /* Copy the structure */
-       COPY(o_ptr, j_ptr, object_type);
+       (void)COPY(o_ptr, j_ptr, object_type);
 }
 
 
@@ -2648,6 +2648,7 @@ static void a_m_aux_2(object_type *o_ptr, int level, int power)
                                                        add_flag(o_ptr->art_flags, TR_RES_POIS);
                                                break;
                                        case EGO_ELVENKIND:
+                                       case EGO_URUKISH:
                                                break;
                                        case EGO_DWARVEN:
                                                if (o_ptr->tval != TV_HARD_ARMOR)
@@ -2659,8 +2660,16 @@ static void a_m_aux_2(object_type *o_ptr, int level, int power)
                                                {
                                                        o_ptr->weight = (2 * k_info[o_ptr->k_idx].weight / 3);
                                                        o_ptr->ac = k_info[o_ptr->k_idx].ac + 5;
-                                                       if (one_in_(4))
-                                                               add_flag(o_ptr->art_flags, TR_CON);
+                                                       break;
+                                               }
+                                       case EGO_DRUID:
+                                               if (o_ptr->tval != TV_SOFT_ARMOR)
+                                               {
+                                                       okay_flag = FALSE;
+                                                       break;
+                                               }
+                                               else
+                                               {
                                                        break;
                                                }
                                        }
@@ -8615,3 +8624,41 @@ void do_cmd_kaji(bool only_browse)
                case 5: add_essence(10);break;
        }
 }
+
+
+/*
+ * Torches have special abilities when they are flaming.
+ */
+void torch_flags(object_type *o_ptr, u32b *flgs)
+{
+       if ((o_ptr->tval == TV_LITE) && (o_ptr->sval == SV_LITE_TORCH))
+       {
+               if (o_ptr->xtra4 > 0)
+               {
+                       add_flag(flgs, TR_BRAND_FIRE);
+                       add_flag(flgs, TR_KILL_UNDEAD);
+                       add_flag(flgs, TR_THROW);
+               }
+       }
+}
+
+void torch_dice(object_type *o_ptr, int *dd, int *ds)
+{
+       if ((o_ptr->tval == TV_LITE) && (o_ptr->sval == SV_LITE_TORCH))
+       {
+               if (o_ptr->xtra4 > 0)
+               {
+                       (*dd) = 1;
+                       (*ds) = 6;
+               }
+       }
+}
+
+void torch_lost_fuel(object_type *o_ptr)
+{
+       if ((o_ptr->tval == TV_LITE) && (o_ptr->sval == SV_LITE_TORCH))
+       {
+               o_ptr->xtra4 -= (FUEL_TORCH / 25);
+               if (o_ptr->xtra4 < 0) o_ptr->xtra4 = 0;
+       }
+}