変愚蛮怒のメインリポジトリです
Revision | 6eaa0a25105dbf7e63dade28188a4832d005afeb (tree) |
---|---|
Time | 2013-01-31 16:08:33 |
Author | iks <iks@0568...> |
Commiter | iks |
Implement permanently repeatedly weak/heavy cursing effects.
@@ -199,6 +199,8 @@ static void curse_artifact(object_type * o_ptr) | ||
199 | 199 | if (one_in_(3)) add_flag(o_ptr->art_flags, TR_TY_CURSE); |
200 | 200 | if (one_in_(2)) add_flag(o_ptr->art_flags, TR_AGGRAVATE); |
201 | 201 | if (one_in_(3)) add_flag(o_ptr->art_flags, TR_DRAIN_EXP); |
202 | + if (one_in_(6)) add_flag(o_ptr->art_flags, TR_ADD_L_CURSE); | |
203 | + if (one_in_(9)) add_flag(o_ptr->art_flags, TR_ADD_H_CURSE); | |
202 | 204 | if (one_in_(2)) add_flag(o_ptr->art_flags, TR_TELEPORT); |
203 | 205 | else if (one_in_(3)) add_flag(o_ptr->art_flags, TR_NO_TELE); |
204 | 206 |
@@ -3394,8 +3394,10 @@ | ||
3394 | 3394 | #define TR_ESP_UNIQUE 115 |
3395 | 3395 | #define TR_FULL_NAME 116 |
3396 | 3396 | #define TR_FIXED_FLAVOR 117 |
3397 | +#define TR_ADD_L_CURSE 118 | |
3398 | +#define TR_ADD_H_CURSE 119 | |
3397 | 3399 | |
3398 | -#define TR_FLAG_MAX 118 | |
3400 | +#define TR_FLAG_MAX 120 | |
3399 | 3401 | #define TR_FLAG_SIZE 4 |
3400 | 3402 | |
3401 | 3403 |
@@ -1499,6 +1499,17 @@ static object_type *choose_cursed_obj_name(u32b flag) | ||
1499 | 1499 | choices[number] = i; |
1500 | 1500 | number++; |
1501 | 1501 | } |
1502 | + else if ((flag == TRC_ADD_L_CURSE) || (flag == TRC_ADD_H_CURSE)) | |
1503 | + { | |
1504 | + u32b cf = (flag == TRC_ADD_L_CURSE) ? TR_ADD_L_CURSE : TR_ADD_H_CURSE; | |
1505 | + u32b flgs[4]; | |
1506 | + object_flags(o_ptr, flgs); | |
1507 | + if (have_flag(flgs, cf)) | |
1508 | + { | |
1509 | + choices[number] = i; | |
1510 | + number++; | |
1511 | + } | |
1512 | + } | |
1502 | 1513 | } |
1503 | 1514 | |
1504 | 1515 | /* Choice one of them */ |
@@ -2883,7 +2894,6 @@ static void process_world_aux_mutation(void) | ||
2883 | 2894 | } |
2884 | 2895 | } |
2885 | 2896 | |
2886 | - | |
2887 | 2897 | /* |
2888 | 2898 | * Handle curse effects once every 10 game turns |
2889 | 2899 | */ |
@@ -3005,6 +3005,8 @@ static void display_flag_aux(int row, int col, cptr header, | ||
3005 | 3005 | /* Check flags */ |
3006 | 3006 | if (mode & DP_CURSE) |
3007 | 3007 | { |
3008 | + if ((mode & DP_CURSE) && (have_flag(flgs, TR_ADD_L_CURSE) || have_flag(flgs, TR_ADD_H_CURSE))) | |
3009 | + c_put_str(TERM_L_DARK, "+", row, col); | |
3008 | 3010 | if ((mode & DP_CURSE) && (o_ptr->curse_flags & (TRC_CURSED | TRC_HEAVY_CURSE))) |
3009 | 3011 | c_put_str(TERM_WHITE, "+", row, col); |
3010 | 3012 | if ((mode & DP_CURSE) && (o_ptr->curse_flags & TRC_PERMA_CURSE)) |
@@ -646,6 +646,8 @@ static flag_insc_table flag_insc_misc[] = | ||
646 | 646 | { "怒", "Ag", TR_AGGRAVATE, -1 }, |
647 | 647 | { "祝", "Bs", TR_BLESSED, -1 }, |
648 | 648 | { "忌", "Ty", TR_TY_CURSE, -1 }, |
649 | + { "呪", "C-", TR_ADD_L_CURSE, -1 }, | |
650 | + { "詛", "C+", TR_ADD_H_CURSE, -1 }, | |
649 | 651 | { NULL, NULL, 0, -1 } |
650 | 652 | }; |
651 | 653 |
@@ -805,6 +807,8 @@ static flag_insc_table flag_insc_misc[] = | ||
805 | 807 | { "Ag", TR_AGGRAVATE, -1 }, |
806 | 808 | { "Bs", TR_BLESSED, -1 }, |
807 | 809 | { "Ty", TR_TY_CURSE, -1 }, |
810 | + { "C-", TR_ADD_L_CURSE, -1 }, | |
811 | + { "C+", TR_ADD_H_CURSE, -1 }, | |
808 | 812 | { NULL, 0, -1 } |
809 | 813 | }; |
810 | 814 |
@@ -748,8 +748,8 @@ static cptr k_info_flags[] = | ||
748 | 748 | "TELEPORT", |
749 | 749 | "AGGRAVATE", |
750 | 750 | "BLESSED", |
751 | - "XXX3", | |
752 | - "XXX4", | |
751 | + "XXX3", /* Fake flag for Smith */ | |
752 | + "XXX4", /* Fake flag for Smith */ | |
753 | 753 | "XXX5", |
754 | 754 | |
755 | 755 | "KILL_ANIMAL", |
@@ -774,6 +774,8 @@ static cptr k_info_flags[] = | ||
774 | 774 | "ESP_UNIQUE", |
775 | 775 | "FULL_NAME", |
776 | 776 | "FIXED_FLAVOR", |
777 | + "ADD_L_CURSE", | |
778 | + "ADD_H_CURSE", | |
777 | 779 | }; |
778 | 780 | |
779 | 781 |
@@ -2636,7 +2636,7 @@ info[i++] = " | ||
2636 | 2636 | #endif |
2637 | 2637 | |
2638 | 2638 | } |
2639 | - if (o_ptr->curse_flags & TRC_ADD_L_CURSE) | |
2639 | + if ((o_ptr->curse_flags & TRC_ADD_L_CURSE) || have_flag(flgs, TR_ADD_L_CURSE)) | |
2640 | 2640 | { |
2641 | 2641 | #ifdef JP |
2642 | 2642 | info[i++] = "それは弱い呪いを増やす。"; |
@@ -2645,7 +2645,7 @@ info[i++] = " | ||
2645 | 2645 | #endif |
2646 | 2646 | |
2647 | 2647 | } |
2648 | - if (o_ptr->curse_flags & TRC_ADD_H_CURSE) | |
2648 | + if ((o_ptr->curse_flags & TRC_ADD_H_CURSE) || have_flag(flgs, TR_ADD_H_CURSE)) | |
2649 | 2649 | { |
2650 | 2650 | #ifdef JP |
2651 | 2651 | info[i++] = "それは強力な呪いを増やす。"; |
@@ -1027,6 +1027,8 @@ s32b flag_cost(object_type *o_ptr, int plusses) | ||
1027 | 1027 | } |
1028 | 1028 | if (have_flag(flgs, TR_AGGRAVATE)) total -= 10000; |
1029 | 1029 | if (have_flag(flgs, TR_BLESSED)) total += 750; |
1030 | + if (o_ptr->curse_flags & TR_ADD_L_CURSE) total -= 5000; | |
1031 | + if (o_ptr->curse_flags & TR_ADD_H_CURSE) total -= 12500; | |
1030 | 1032 | if (o_ptr->curse_flags & TRC_CURSED) total -= 5000; |
1031 | 1033 | if (o_ptr->curse_flags & TRC_HEAVY_CURSE) total -= 12500; |
1032 | 1034 | if (o_ptr->curse_flags & TRC_PERMA_CURSE) total -= 15000; |
@@ -7362,6 +7364,8 @@ static void drain_essence(void) | ||
7362 | 7364 | old_name2 = o_ptr->name2; |
7363 | 7365 | old_timeout = o_ptr->timeout; |
7364 | 7366 | if (o_ptr->curse_flags & (TRC_CURSED | TRC_HEAVY_CURSE | TRC_PERMA_CURSE)) dec--; |
7367 | + if (have_flag(old_flgs, TR_ADD_L_CURSE)) dec--; | |
7368 | + if (have_flag(old_flgs, TR_ADD_H_CURSE)) dec--; | |
7365 | 7369 | if (have_flag(old_flgs, TR_AGGRAVATE)) dec--; |
7366 | 7370 | if (have_flag(old_flgs, TR_NO_TELE)) dec--; |
7367 | 7371 | if (have_flag(old_flgs, TR_DRAIN_EXP)) dec--; |
@@ -3532,6 +3532,8 @@ s = " | ||
3532 | 3532 | if (object_is_cursed(o_ptr)) |
3533 | 3533 | { |
3534 | 3534 | if (((o_ptr->curse_flags & TRC_HEAVY_CURSE) && (randint1(100) < 33)) || |
3535 | + have_flag(flgs, TR_ADD_L_CURSE) || | |
3536 | + have_flag(flgs, TR_ADD_H_CURSE) || | |
3535 | 3537 | (o_ptr->curse_flags & TRC_PERMA_CURSE)) |
3536 | 3538 | { |
3537 | 3539 | #ifdef JP |
@@ -845,21 +845,21 @@ static const flag_desc misc_flags3_desc[] = | ||
845 | 845 | { TR_SH_COLD, "冷気オーラ" }, |
846 | 846 | { TR_NO_TELE, "反テレポート" }, |
847 | 847 | { TR_NO_MAGIC, "反魔法" }, |
848 | - { TR_LEVITATION, "浮遊" }, | |
848 | + { TR_LEVITATION, "浮遊" }, | |
849 | 849 | { TR_SEE_INVIS, "可視透明" }, |
850 | 850 | { TR_TELEPATHY, "テレパシー" }, |
851 | - { TR_ESP_ANIMAL, "動物感知" }, | |
852 | - { TR_ESP_UNDEAD, "不死感知" }, | |
853 | - { TR_ESP_DEMON, "悪魔感知" }, | |
854 | - { TR_ESP_ORC, "オーク感知" }, | |
855 | - { TR_ESP_TROLL, "トロル感知" }, | |
856 | - { TR_ESP_GIANT, "巨人感知" }, | |
857 | - { TR_ESP_DRAGON, "ドラゴン感知" }, | |
858 | - { TR_ESP_HUMAN, "人間感知" }, | |
859 | - { TR_ESP_EVIL, "邪悪感知" }, | |
860 | - { TR_ESP_GOOD, "善良感知" }, | |
861 | - { TR_ESP_NONLIVING, "無生物感知" }, | |
862 | - { TR_ESP_UNIQUE, "ユニーク感知" }, | |
851 | + { TR_ESP_ANIMAL, "動物感知" }, | |
852 | + { TR_ESP_UNDEAD, "不死感知" }, | |
853 | + { TR_ESP_DEMON, "悪魔感知" }, | |
854 | + { TR_ESP_ORC, "オーク感知" }, | |
855 | + { TR_ESP_TROLL, "トロル感知" }, | |
856 | + { TR_ESP_GIANT, "巨人感知" }, | |
857 | + { TR_ESP_DRAGON, "ドラゴン感知" }, | |
858 | + { TR_ESP_HUMAN, "人間感知" }, | |
859 | + { TR_ESP_EVIL, "邪悪感知" }, | |
860 | + { TR_ESP_GOOD, "善良感知" }, | |
861 | + { TR_ESP_NONLIVING, "無生物感知" }, | |
862 | + { TR_ESP_UNIQUE, "ユニーク感知" }, | |
863 | 863 | { TR_SLOW_DIGEST, "遅消化" }, |
864 | 864 | { TR_REGEN, "急速回復" }, |
865 | 865 | { TR_WARNING, "警告" }, |
@@ -878,6 +878,18 @@ static const flag_desc misc_flags3_desc[] = | ||
878 | 878 | { TR_LEVITATION, "Levitation" }, |
879 | 879 | { TR_SEE_INVIS, "See Invisible" }, |
880 | 880 | { TR_TELEPATHY, "ESP" }, |
881 | + { TR_ESP_ANIMAL, "Sense Animal" }, | |
882 | + { TR_ESP_UNDEAD, "Sense Undead" }, | |
883 | + { TR_ESP_DEMON, "Sense Demon" }, | |
884 | + { TR_ESP_ORC, "Sense Orc" }, | |
885 | + { TR_ESP_TROLL, "Sense Troll" }, | |
886 | + { TR_ESP_GIANT, "Sense Giant" }, | |
887 | + { TR_ESP_DRAGON, "Sense Dragon" }, | |
888 | + { TR_ESP_HUMAN, "Sense Human" }, | |
889 | + { TR_ESP_EVIL, "Sense Evil" }, | |
890 | + { TR_ESP_GOOD, "Sense Good" }, | |
891 | + { TR_ESP_NONLIVING, "Sense Nonliving" }, | |
892 | + { TR_ESP_UNIQUE, "Sense Unique" }, | |
881 | 893 | { TR_SLOW_DIGEST, "Slow Digestion" }, |
882 | 894 | { TR_REGEN, "Regeneration" }, |
883 | 895 | { TR_WARNING, "Warning" }, |
@@ -1270,6 +1282,22 @@ static void analyze_misc_magic(object_type *o_ptr, cptr *misc_list) | ||
1270 | 1282 | *misc_list++ = "Cursed"; |
1271 | 1283 | #endif |
1272 | 1284 | } |
1285 | + if (have_flag(flgs, TR_ADD_L_CURSE)) | |
1286 | + { | |
1287 | +#ifdef JP | |
1288 | + *misc_list++ = "呪いを増やす"; | |
1289 | +#else | |
1290 | + *misc_list++ = "Cursing"; | |
1291 | +#endif | |
1292 | + } | |
1293 | + if (have_flag(flgs, TR_ADD_H_CURSE)) | |
1294 | + { | |
1295 | +#ifdef JP | |
1296 | + *misc_list++ = "強力な呪いを増やす"; | |
1297 | +#else | |
1298 | + *misc_list++ = "Heavily Cursing"; | |
1299 | +#endif | |
1300 | + } | |
1273 | 1301 | } |
1274 | 1302 | |
1275 | 1303 | /* Terminate the description list */ |
@@ -4120,6 +4120,8 @@ void calc_bonuses(void) | ||
4120 | 4120 | if (have_flag(flgs, TR_AGGRAVATE)) p_ptr->cursed |= TRC_AGGRAVATE; |
4121 | 4121 | if (have_flag(flgs, TR_DRAIN_EXP)) p_ptr->cursed |= TRC_DRAIN_EXP; |
4122 | 4122 | if (have_flag(flgs, TR_TY_CURSE)) p_ptr->cursed |= TRC_TY_CURSE; |
4123 | + if (have_flag(flgs, TR_ADD_L_CURSE)) p_ptr->cursed |= TRC_ADD_L_CURSE; | |
4124 | + if (have_flag(flgs, TR_ADD_H_CURSE)) p_ptr->cursed |= TRC_ADD_H_CURSE; | |
4123 | 4125 | if (have_flag(flgs, TR_DEC_MANA)) p_ptr->dec_mana = TRUE; |
4124 | 4126 | if (have_flag(flgs, TR_BLESSED)) p_ptr->bless_blade = TRUE; |
4125 | 4127 | if (have_flag(flgs, TR_XTRA_MIGHT)) p_ptr->xtra_might = TRUE; |