• R/O
  • HTTP
  • SSH
  • HTTPS

hengband: Commit

変愚蛮怒のメインリポジトリです


Commit MetaInfo

Revision6eaa0a25105dbf7e63dade28188a4832d005afeb (tree)
Time2013-01-31 16:08:33
Authoriks <iks@0568...>
Commiteriks

Log Message

Implement permanently repeatedly weak/heavy cursing effects.

Change Summary

Incremental Difference

--- a/src/artifact.c
+++ b/src/artifact.c
@@ -199,6 +199,8 @@ static void curse_artifact(object_type * o_ptr)
199199 if (one_in_(3)) add_flag(o_ptr->art_flags, TR_TY_CURSE);
200200 if (one_in_(2)) add_flag(o_ptr->art_flags, TR_AGGRAVATE);
201201 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);
202204 if (one_in_(2)) add_flag(o_ptr->art_flags, TR_TELEPORT);
203205 else if (one_in_(3)) add_flag(o_ptr->art_flags, TR_NO_TELE);
204206
--- a/src/defines.h
+++ b/src/defines.h
@@ -3394,8 +3394,10 @@
33943394 #define TR_ESP_UNIQUE 115
33953395 #define TR_FULL_NAME 116
33963396 #define TR_FIXED_FLAVOR 117
3397+#define TR_ADD_L_CURSE 118
3398+#define TR_ADD_H_CURSE 119
33973399
3398-#define TR_FLAG_MAX 118
3400+#define TR_FLAG_MAX 120
33993401 #define TR_FLAG_SIZE 4
34003402
34013403
--- a/src/dungeon.c
+++ b/src/dungeon.c
@@ -1499,6 +1499,17 @@ static object_type *choose_cursed_obj_name(u32b flag)
14991499 choices[number] = i;
15001500 number++;
15011501 }
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+ }
15021513 }
15031514
15041515 /* Choice one of them */
@@ -2883,7 +2894,6 @@ static void process_world_aux_mutation(void)
28832894 }
28842895 }
28852896
2886-
28872897 /*
28882898 * Handle curse effects once every 10 game turns
28892899 */
--- a/src/files.c
+++ b/src/files.c
@@ -3005,6 +3005,8 @@ static void display_flag_aux(int row, int col, cptr header,
30053005 /* Check flags */
30063006 if (mode & DP_CURSE)
30073007 {
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);
30083010 if ((mode & DP_CURSE) && (o_ptr->curse_flags & (TRC_CURSED | TRC_HEAVY_CURSE)))
30093011 c_put_str(TERM_WHITE, "+", row, col);
30103012 if ((mode & DP_CURSE) && (o_ptr->curse_flags & TRC_PERMA_CURSE))
--- a/src/flavor.c
+++ b/src/flavor.c
@@ -646,6 +646,8 @@ static flag_insc_table flag_insc_misc[] =
646646 { "怒", "Ag", TR_AGGRAVATE, -1 },
647647 { "祝", "Bs", TR_BLESSED, -1 },
648648 { "忌", "Ty", TR_TY_CURSE, -1 },
649+ { "呪", "C-", TR_ADD_L_CURSE, -1 },
650+ { "詛", "C+", TR_ADD_H_CURSE, -1 },
649651 { NULL, NULL, 0, -1 }
650652 };
651653
@@ -805,6 +807,8 @@ static flag_insc_table flag_insc_misc[] =
805807 { "Ag", TR_AGGRAVATE, -1 },
806808 { "Bs", TR_BLESSED, -1 },
807809 { "Ty", TR_TY_CURSE, -1 },
810+ { "C-", TR_ADD_L_CURSE, -1 },
811+ { "C+", TR_ADD_H_CURSE, -1 },
808812 { NULL, 0, -1 }
809813 };
810814
--- a/src/init1.c
+++ b/src/init1.c
@@ -748,8 +748,8 @@ static cptr k_info_flags[] =
748748 "TELEPORT",
749749 "AGGRAVATE",
750750 "BLESSED",
751- "XXX3",
752- "XXX4",
751+ "XXX3", /* Fake flag for Smith */
752+ "XXX4", /* Fake flag for Smith */
753753 "XXX5",
754754
755755 "KILL_ANIMAL",
@@ -774,6 +774,8 @@ static cptr k_info_flags[] =
774774 "ESP_UNIQUE",
775775 "FULL_NAME",
776776 "FIXED_FLAVOR",
777+ "ADD_L_CURSE",
778+ "ADD_H_CURSE",
777779 };
778780
779781
--- a/src/object1.c
+++ b/src/object1.c
@@ -2636,7 +2636,7 @@ info[i++] = "
26362636 #endif
26372637
26382638 }
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))
26402640 {
26412641 #ifdef JP
26422642 info[i++] = "それは弱い呪いを増やす。";
@@ -2645,7 +2645,7 @@ info[i++] = "
26452645 #endif
26462646
26472647 }
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))
26492649 {
26502650 #ifdef JP
26512651 info[i++] = "それは強力な呪いを増やす。";
--- a/src/object2.c
+++ b/src/object2.c
@@ -1027,6 +1027,8 @@ s32b flag_cost(object_type *o_ptr, int plusses)
10271027 }
10281028 if (have_flag(flgs, TR_AGGRAVATE)) total -= 10000;
10291029 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;
10301032 if (o_ptr->curse_flags & TRC_CURSED) total -= 5000;
10311033 if (o_ptr->curse_flags & TRC_HEAVY_CURSE) total -= 12500;
10321034 if (o_ptr->curse_flags & TRC_PERMA_CURSE) total -= 15000;
@@ -7362,6 +7364,8 @@ static void drain_essence(void)
73627364 old_name2 = o_ptr->name2;
73637365 old_timeout = o_ptr->timeout;
73647366 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--;
73657369 if (have_flag(old_flgs, TR_AGGRAVATE)) dec--;
73667370 if (have_flag(old_flgs, TR_NO_TELE)) dec--;
73677371 if (have_flag(old_flgs, TR_DRAIN_EXP)) dec--;
--- a/src/spells3.c
+++ b/src/spells3.c
@@ -3532,6 +3532,8 @@ s = "
35323532 if (object_is_cursed(o_ptr))
35333533 {
35343534 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) ||
35353537 (o_ptr->curse_flags & TRC_PERMA_CURSE))
35363538 {
35373539 #ifdef JP
--- a/src/wizard1.c
+++ b/src/wizard1.c
@@ -845,21 +845,21 @@ static const flag_desc misc_flags3_desc[] =
845845 { TR_SH_COLD, "冷気オーラ" },
846846 { TR_NO_TELE, "反テレポート" },
847847 { TR_NO_MAGIC, "反魔法" },
848- { TR_LEVITATION, "浮遊" },
848+ { TR_LEVITATION, "浮遊" },
849849 { TR_SEE_INVIS, "可視透明" },
850850 { 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, "ユニーク感知" },
863863 { TR_SLOW_DIGEST, "遅消化" },
864864 { TR_REGEN, "急速回復" },
865865 { TR_WARNING, "警告" },
@@ -878,6 +878,18 @@ static const flag_desc misc_flags3_desc[] =
878878 { TR_LEVITATION, "Levitation" },
879879 { TR_SEE_INVIS, "See Invisible" },
880880 { 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" },
881893 { TR_SLOW_DIGEST, "Slow Digestion" },
882894 { TR_REGEN, "Regeneration" },
883895 { TR_WARNING, "Warning" },
@@ -1270,6 +1282,22 @@ static void analyze_misc_magic(object_type *o_ptr, cptr *misc_list)
12701282 *misc_list++ = "Cursed";
12711283 #endif
12721284 }
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+ }
12731301 }
12741302
12751303 /* Terminate the description list */
--- a/src/xtra1.c
+++ b/src/xtra1.c
@@ -4120,6 +4120,8 @@ void calc_bonuses(void)
41204120 if (have_flag(flgs, TR_AGGRAVATE)) p_ptr->cursed |= TRC_AGGRAVATE;
41214121 if (have_flag(flgs, TR_DRAIN_EXP)) p_ptr->cursed |= TRC_DRAIN_EXP;
41224122 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;
41234125 if (have_flag(flgs, TR_DEC_MANA)) p_ptr->dec_mana = TRUE;
41244126 if (have_flag(flgs, TR_BLESSED)) p_ptr->bless_blade = TRUE;
41254127 if (have_flag(flgs, TR_XTRA_MIGHT)) p_ptr->xtra_might = TRUE;
Show on old repository browser