add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
break;
case EGO_DEMON:
- 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);
- }
+
+ 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_CHAOTIC);
if (one_in_(4)) add_flag(o_ptr->art_flags, TR_BLOWS);
{
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);
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;
- }
+ 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;
}
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;
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);
}
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);
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);
}
+
+
}
if ((o_ptr->name2 == EGO_SPEED) && (lev < 50))
{