From: dis- Date: Thu, 23 May 2013 14:48:06 +0000 (+0000) Subject: Add POWERFUL flag for generate ego. Easy to make a Cursed but has good pval ego X-Git-Tag: v2.1.3~53 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=f945ae4792cf2228d1a3569698dbaf89a61a93b3;p=hengbandforosx%2Fhengbandosx.git Add POWERFUL flag for generate ego. Easy to make a Cursed but has good pval ego --- diff --git a/lib/edit/e_info.txt b/lib/edit/e_info.txt index 63ed4c64b..7c8968422 100644 --- a/lib/edit/e_info.txt +++ b/lib/edit/e_info.txt @@ -796,7 +796,7 @@ E:(Demonic) X:24:25 W:0:30:0:15000 C:6:6:-20:4 -F:INT | BRAND_FIRE | +F:INT | BRAND_FIRE | CURSED | POWERFUL | F:RES_FIRE | RES_NETHER | SEE_INVIS | ESP_DEMON | XTRA_DICE N:102:¥â¥ë¥°¥ë¤Î diff --git a/src/defines.h b/src/defines.h index 58ca6b32b..50bf7ea1e 100644 --- a/src/defines.h +++ b/src/defines.h @@ -3438,6 +3438,7 @@ #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 diff --git a/src/init1.c b/src/init1.c index a072d5514..2cf71db54 100644 --- a/src/init1.c +++ b/src/init1.c @@ -800,7 +800,7 @@ static cptr k_info_gen_flags[] = "RANDOM_CURSE1", "RANDOM_CURSE2", "XTRA_DICE", - "XXX", + "POWERFUL", "XXX", "XXX", "XXX", diff --git a/src/object2.c b/src/object2.c index e528d62ed..abf2f6bc8 100644 --- a/src/object2.c +++ b/src/object2.c @@ -2400,6 +2400,8 @@ static void a_m_aux_1(object_type *o_ptr, int level, int power) 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); } @@ -4375,7 +4377,7 @@ void apply_magic(object_type *o_ptr, int lev, u32b mode) 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); @@ -4447,8 +4449,6 @@ void apply_magic(object_type *o_ptr, int lev, u32b mode) } 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);