X-Git-Url: http://git.osdn.net/view?p=hengband%2Fhengband.git;a=blobdiff_plain;f=src%2Fobject2.c;h=e5cbb3e1bfa28b870b317ae7a2d5d6f0c56cdeec;hp=abf2f6bc8f2fdba538eaae34cd5e6d31644f9849;hb=67a5a32944f12de9a30808919a49f08c5c5ffbfa;hpb=f945ae4792cf2228d1a3569698dbaf89a61a93b3 diff --git a/src/object2.c b/src/object2.c index abf2f6bc8..e5cbb3e1b 100644 --- a/src/object2.c +++ b/src/object2.c @@ -2402,17 +2402,12 @@ static void a_m_aux_1(object_type *o_ptr, int level, int power) 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); - } - else if(one_in_(2)) - { - add_flag(o_ptr->art_flags, TR_DRAIN_HP); - } - else - { - add_flag(o_ptr->art_flags, TR_DRAIN_MANA); - } + one_in_(3) ? + add_flag(o_ptr->art_flags, TR_DRAIN_EXP) : + one_in_(2) ? + add_flag(o_ptr->art_flags, TR_DRAIN_HP) : + add_flag(o_ptr->art_flags, TR_DRAIN_MANA); + if (one_in_(3)) add_flag(o_ptr->art_flags, TR_CHAOTIC); if (one_in_(4)) add_flag(o_ptr->art_flags, TR_BLOWS); @@ -2694,6 +2689,23 @@ static void a_m_aux_2(object_type *o_ptr, int level, int power) okay_flag = FALSE; break; } + case EGO_A_DEMON: + if(one_in_(3)) o_ptr->curse_flags |= (TRC_HEAVY_CURSE); + one_in_(3) ? + add_flag(o_ptr->art_flags, TR_DRAIN_EXP) : + one_in_(2) ? + add_flag(o_ptr->art_flags, TR_DRAIN_HP) : + add_flag(o_ptr->art_flags, TR_DRAIN_MANA); + + if (one_in_(3)) add_flag(o_ptr->art_flags, TR_AGGRAVATE); + if (one_in_(3)) add_flag(o_ptr->art_flags, TR_ADD_L_CURSE); + if (one_in_(5)) add_flag(o_ptr->art_flags, TR_ADD_H_CURSE); + if (one_in_(5)) add_flag(o_ptr->art_flags, TR_DRAIN_HP); + if (one_in_(5)) add_flag(o_ptr->art_flags, TR_DRAIN_MANA); + if (one_in_(5)) add_flag(o_ptr->art_flags, TR_DRAIN_EXP); + if (one_in_(5)) add_flag(o_ptr->art_flags, TR_TY_CURSE); + + break; default: break; } @@ -2712,12 +2724,12 @@ static void a_m_aux_2(object_type *o_ptr, int level, int power) 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); + 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; @@ -4470,6 +4482,10 @@ void apply_magic(object_type *o_ptr, int lev, u32b mode) o_ptr->pval = randint1(e_ptr->max_pval); if (o_ptr->sval == SV_ELVEN_CLOAK) o_ptr->pval += randint1(2); } + else if (o_ptr->name2 == EGO_A_DEMON || o_ptr->name2 == EGO_DRUID || o_ptr->name2 == EGO_OLOG) + { + o_ptr->pval = randint1(e_ptr->max_pval); + } else { o_ptr->pval += randint1(e_ptr->max_pval);