#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 TRG_POWERFUL 0x00020000L /* Item has good value even if Cursed */
#define MAX_CURSE 17
add_flag(o_ptr->art_flags, TR_SLAY_HUMAN);
break;
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);
}
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);