From: iks Date: Thu, 31 Jan 2013 07:08:33 +0000 (+0000) Subject: Implement permanently repeatedly weak/heavy cursing effects. X-Git-Tag: v2.1.2~151 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=6eaa0a25105dbf7e63dade28188a4832d005afeb;p=hengband%2Fhengband.git Implement permanently repeatedly weak/heavy cursing effects. --- diff --git a/src/artifact.c b/src/artifact.c index f064c5628..42a86649d 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -199,6 +199,8 @@ static void curse_artifact(object_type * o_ptr) if (one_in_(3)) add_flag(o_ptr->art_flags, TR_TY_CURSE); if (one_in_(2)) add_flag(o_ptr->art_flags, TR_AGGRAVATE); if (one_in_(3)) add_flag(o_ptr->art_flags, TR_DRAIN_EXP); + if (one_in_(6)) add_flag(o_ptr->art_flags, TR_ADD_L_CURSE); + if (one_in_(9)) add_flag(o_ptr->art_flags, TR_ADD_H_CURSE); if (one_in_(2)) add_flag(o_ptr->art_flags, TR_TELEPORT); else if (one_in_(3)) add_flag(o_ptr->art_flags, TR_NO_TELE); diff --git a/src/defines.h b/src/defines.h index f890e8bf7..2aeeaafd4 100644 --- a/src/defines.h +++ b/src/defines.h @@ -3394,8 +3394,10 @@ #define TR_ESP_UNIQUE 115 #define TR_FULL_NAME 116 #define TR_FIXED_FLAVOR 117 +#define TR_ADD_L_CURSE 118 +#define TR_ADD_H_CURSE 119 -#define TR_FLAG_MAX 118 +#define TR_FLAG_MAX 120 #define TR_FLAG_SIZE 4 diff --git a/src/dungeon.c b/src/dungeon.c index aae336433..545fb7c42 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -1499,6 +1499,17 @@ static object_type *choose_cursed_obj_name(u32b flag) choices[number] = i; number++; } + else if ((flag == TRC_ADD_L_CURSE) || (flag == TRC_ADD_H_CURSE)) + { + u32b cf = (flag == TRC_ADD_L_CURSE) ? TR_ADD_L_CURSE : TR_ADD_H_CURSE; + u32b flgs[4]; + object_flags(o_ptr, flgs); + if (have_flag(flgs, cf)) + { + choices[number] = i; + number++; + } + } } /* Choice one of them */ @@ -2883,7 +2894,6 @@ static void process_world_aux_mutation(void) } } - /* * Handle curse effects once every 10 game turns */ diff --git a/src/files.c b/src/files.c index ee1c47cbb..be4f3bd4a 100644 --- a/src/files.c +++ b/src/files.c @@ -3005,6 +3005,8 @@ static void display_flag_aux(int row, int col, cptr header, /* Check flags */ if (mode & DP_CURSE) { + if ((mode & DP_CURSE) && (have_flag(flgs, TR_ADD_L_CURSE) || have_flag(flgs, TR_ADD_H_CURSE))) + c_put_str(TERM_L_DARK, "+", row, col); if ((mode & DP_CURSE) && (o_ptr->curse_flags & (TRC_CURSED | TRC_HEAVY_CURSE))) c_put_str(TERM_WHITE, "+", row, col); if ((mode & DP_CURSE) && (o_ptr->curse_flags & TRC_PERMA_CURSE)) diff --git a/src/flavor.c b/src/flavor.c index 1c5203e43..a11ab49b1 100644 --- a/src/flavor.c +++ b/src/flavor.c @@ -646,6 +646,8 @@ static flag_insc_table flag_insc_misc[] = { "ÅÜ", "Ag", TR_AGGRAVATE, -1 }, { "½Ë", "Bs", TR_BLESSED, -1 }, { "´÷", "Ty", TR_TY_CURSE, -1 }, + { "¼ö", "C-", TR_ADD_L_CURSE, -1 }, + { "ëÇ", "C+", TR_ADD_H_CURSE, -1 }, { NULL, NULL, 0, -1 } }; @@ -805,6 +807,8 @@ static flag_insc_table flag_insc_misc[] = { "Ag", TR_AGGRAVATE, -1 }, { "Bs", TR_BLESSED, -1 }, { "Ty", TR_TY_CURSE, -1 }, + { "C-", TR_ADD_L_CURSE, -1 }, + { "C+", TR_ADD_H_CURSE, -1 }, { NULL, 0, -1 } }; diff --git a/src/init1.c b/src/init1.c index ba9accb2e..cff1c4f83 100644 --- a/src/init1.c +++ b/src/init1.c @@ -748,8 +748,8 @@ static cptr k_info_flags[] = "TELEPORT", "AGGRAVATE", "BLESSED", - "XXX3", - "XXX4", + "XXX3", /* Fake flag for Smith */ + "XXX4", /* Fake flag for Smith */ "XXX5", "KILL_ANIMAL", @@ -774,6 +774,8 @@ static cptr k_info_flags[] = "ESP_UNIQUE", "FULL_NAME", "FIXED_FLAVOR", + "ADD_L_CURSE", + "ADD_H_CURSE", }; diff --git a/src/object1.c b/src/object1.c index 4da8509f9..0e7806c9f 100644 --- a/src/object1.c +++ b/src/object1.c @@ -2636,7 +2636,7 @@ info[i++] = " #endif } - if (o_ptr->curse_flags & TRC_ADD_L_CURSE) + if ((o_ptr->curse_flags & TRC_ADD_L_CURSE) || have_flag(flgs, TR_ADD_L_CURSE)) { #ifdef JP info[i++] = "¤½¤ì¤Ï¼å¤¤¼ö¤¤¤òÁý¤ä¤¹¡£"; @@ -2645,7 +2645,7 @@ info[i++] = " #endif } - if (o_ptr->curse_flags & TRC_ADD_H_CURSE) + if ((o_ptr->curse_flags & TRC_ADD_H_CURSE) || have_flag(flgs, TR_ADD_H_CURSE)) { #ifdef JP info[i++] = "¤½¤ì¤Ï¶¯ÎϤʼö¤¤¤òÁý¤ä¤¹¡£"; diff --git a/src/object2.c b/src/object2.c index 1670ac4e7..fa62929be 100644 --- a/src/object2.c +++ b/src/object2.c @@ -1027,6 +1027,8 @@ s32b flag_cost(object_type *o_ptr, int plusses) } if (have_flag(flgs, TR_AGGRAVATE)) total -= 10000; if (have_flag(flgs, TR_BLESSED)) total += 750; + if (o_ptr->curse_flags & TR_ADD_L_CURSE) total -= 5000; + if (o_ptr->curse_flags & TR_ADD_H_CURSE) total -= 12500; if (o_ptr->curse_flags & TRC_CURSED) total -= 5000; if (o_ptr->curse_flags & TRC_HEAVY_CURSE) total -= 12500; if (o_ptr->curse_flags & TRC_PERMA_CURSE) total -= 15000; @@ -7362,6 +7364,8 @@ static void drain_essence(void) old_name2 = o_ptr->name2; old_timeout = o_ptr->timeout; if (o_ptr->curse_flags & (TRC_CURSED | TRC_HEAVY_CURSE | TRC_PERMA_CURSE)) dec--; + if (have_flag(old_flgs, TR_ADD_L_CURSE)) dec--; + if (have_flag(old_flgs, TR_ADD_H_CURSE)) dec--; if (have_flag(old_flgs, TR_AGGRAVATE)) dec--; if (have_flag(old_flgs, TR_NO_TELE)) dec--; if (have_flag(old_flgs, TR_DRAIN_EXP)) dec--; diff --git a/src/spells3.c b/src/spells3.c index 232975f48..4a3f4876e 100644 --- a/src/spells3.c +++ b/src/spells3.c @@ -3532,6 +3532,8 @@ s = " if (object_is_cursed(o_ptr)) { if (((o_ptr->curse_flags & TRC_HEAVY_CURSE) && (randint1(100) < 33)) || + have_flag(flgs, TR_ADD_L_CURSE) || + have_flag(flgs, TR_ADD_H_CURSE) || (o_ptr->curse_flags & TRC_PERMA_CURSE)) { #ifdef JP diff --git a/src/wizard1.c b/src/wizard1.c index 3d6b42457..e154bc267 100644 --- a/src/wizard1.c +++ b/src/wizard1.c @@ -845,21 +845,21 @@ static const flag_desc misc_flags3_desc[] = { TR_SH_COLD, "Î䵤¥ª¡¼¥é" }, { TR_NO_TELE, "È¿¥Æ¥ì¥Ý¡¼¥È" }, { TR_NO_MAGIC, "È¿ËâË¡" }, - { TR_LEVITATION, "ÉâÍ·" }, + { TR_LEVITATION, "ÉâÍ·" }, { TR_SEE_INVIS, "²Ä»ëÆ©ÌÀ" }, { TR_TELEPATHY, "¥Æ¥ì¥Ñ¥·¡¼" }, - { TR_ESP_ANIMAL, "ưʪ´¶ÃÎ" }, - { TR_ESP_UNDEAD, "ÉԻശÃÎ" }, - { TR_ESP_DEMON, "°­Ëâ´¶ÃÎ" }, - { TR_ESP_ORC, "¥ª¡¼¥¯´¶ÃÎ" }, - { TR_ESP_TROLL, "¥È¥í¥ë´¶ÃÎ" }, - { TR_ESP_GIANT, "µð¿Í´¶ÃÎ" }, - { TR_ESP_DRAGON, "¥É¥é¥´¥ó´¶ÃÎ" }, - { TR_ESP_HUMAN, "¿Í´Ö´¶ÃÎ" }, - { TR_ESP_EVIL, "¼Ù°­´¶ÃÎ" }, - { TR_ESP_GOOD, "Á±ÎÉ´¶ÃÎ" }, - { TR_ESP_NONLIVING, "̵À¸Êª´¶ÃÎ" }, - { TR_ESP_UNIQUE, "¥æ¥Ë¡¼¥¯´¶ÃÎ" }, + { TR_ESP_ANIMAL, "ưʪ´¶ÃÎ" }, + { TR_ESP_UNDEAD, "ÉԻശÃÎ" }, + { TR_ESP_DEMON, "°­Ëâ´¶ÃÎ" }, + { TR_ESP_ORC, "¥ª¡¼¥¯´¶ÃÎ" }, + { TR_ESP_TROLL, "¥È¥í¥ë´¶ÃÎ" }, + { TR_ESP_GIANT, "µð¿Í´¶ÃÎ" }, + { TR_ESP_DRAGON, "¥É¥é¥´¥ó´¶ÃÎ" }, + { TR_ESP_HUMAN, "¿Í´Ö´¶ÃÎ" }, + { TR_ESP_EVIL, "¼Ù°­´¶ÃÎ" }, + { TR_ESP_GOOD, "Á±ÎÉ´¶ÃÎ" }, + { TR_ESP_NONLIVING, "̵À¸Êª´¶ÃÎ" }, + { TR_ESP_UNIQUE, "¥æ¥Ë¡¼¥¯´¶ÃÎ" }, { TR_SLOW_DIGEST, "Ãپò½" }, { TR_REGEN, "µÞ®²óÉü" }, { TR_WARNING, "·Ù¹ð" }, @@ -878,6 +878,18 @@ static const flag_desc misc_flags3_desc[] = { TR_LEVITATION, "Levitation" }, { TR_SEE_INVIS, "See Invisible" }, { TR_TELEPATHY, "ESP" }, + { TR_ESP_ANIMAL, "Sense Animal" }, + { TR_ESP_UNDEAD, "Sense Undead" }, + { TR_ESP_DEMON, "Sense Demon" }, + { TR_ESP_ORC, "Sense Orc" }, + { TR_ESP_TROLL, "Sense Troll" }, + { TR_ESP_GIANT, "Sense Giant" }, + { TR_ESP_DRAGON, "Sense Dragon" }, + { TR_ESP_HUMAN, "Sense Human" }, + { TR_ESP_EVIL, "Sense Evil" }, + { TR_ESP_GOOD, "Sense Good" }, + { TR_ESP_NONLIVING, "Sense Nonliving" }, + { TR_ESP_UNIQUE, "Sense Unique" }, { TR_SLOW_DIGEST, "Slow Digestion" }, { TR_REGEN, "Regeneration" }, { TR_WARNING, "Warning" }, @@ -1270,6 +1282,22 @@ static void analyze_misc_magic(object_type *o_ptr, cptr *misc_list) *misc_list++ = "Cursed"; #endif } + if (have_flag(flgs, TR_ADD_L_CURSE)) + { +#ifdef JP + *misc_list++ = "¼ö¤¤¤òÁý¤ä¤¹"; +#else + *misc_list++ = "Cursing"; +#endif + } + if (have_flag(flgs, TR_ADD_H_CURSE)) + { +#ifdef JP + *misc_list++ = "¶¯ÎϤʼö¤¤¤òÁý¤ä¤¹"; +#else + *misc_list++ = "Heavily Cursing"; +#endif + } } /* Terminate the description list */ diff --git a/src/xtra1.c b/src/xtra1.c index 2309f9db8..4cd33543b 100644 --- a/src/xtra1.c +++ b/src/xtra1.c @@ -4120,6 +4120,8 @@ void calc_bonuses(void) if (have_flag(flgs, TR_AGGRAVATE)) p_ptr->cursed |= TRC_AGGRAVATE; if (have_flag(flgs, TR_DRAIN_EXP)) p_ptr->cursed |= TRC_DRAIN_EXP; if (have_flag(flgs, TR_TY_CURSE)) p_ptr->cursed |= TRC_TY_CURSE; + if (have_flag(flgs, TR_ADD_L_CURSE)) p_ptr->cursed |= TRC_ADD_L_CURSE; + if (have_flag(flgs, TR_ADD_H_CURSE)) p_ptr->cursed |= TRC_ADD_H_CURSE; if (have_flag(flgs, TR_DEC_MANA)) p_ptr->dec_mana = TRUE; if (have_flag(flgs, TR_BLESSED)) p_ptr->bless_blade = TRUE; if (have_flag(flgs, TR_XTRA_MIGHT)) p_ptr->xtra_might = TRUE;