• R/O
  • SSH
  • HTTPS

xangband: Commit


Commit MetaInfo

Révision1878 (tree)
l'heure2013-03-13 00:30:45
Auteuriks

Message de Log

Este's curing is able to be used when confusing. Refactor racial.c

Change Summary

Modification

--- TinyAngband/trunk/src/racial.c (revision 1877)
+++ TinyAngband/trunk/src/racial.c (revision 1878)
@@ -23,6 +23,7 @@
2323 int stat;
2424 int fail;
2525 int number;
26+ bool ignore_conf;
2627 };
2728
2829
@@ -40,7 +41,7 @@
4041 int stat = p_ptr->stat_cur[pd_ptr->stat];
4142
4243 /* No chance for success */
43- if ((p_ptr->lev < min_level) || p_ptr->confused)
44+ if ((p_ptr->lev < min_level) || (p_ptr->confused && !(pd_ptr->ignore_conf)))
4445 {
4546 return (0);
4647 }
@@ -99,23 +100,17 @@
99100 /* Power is not available yet */
100101 if (p_ptr->lev < min_level)
101102 {
102-#ifdef JP
103- msg_format("この能力を使用するにはレベル %d に達していなければなりません。", min_level);
104-#else
105- msg_format("You need to attain level %d to use this power.", min_level);
106-#endif
103+ msg_format(_("この能力を使用するにはレベル %d に達していなければなりません。",
104+ "You need to attain level %d to use this power."),
105+ min_level);
107106 energy_use = 0;
108107 return 0;
109108 }
110109
111110 /* Too confused */
112- else if (p_ptr->confused)
111+ else if (p_ptr->confused && !(pd_ptr->ignore_conf))
113112 {
114-#ifdef JP
115- msg_print("混乱していてその能力は使えない。");
116-#else
117- msg_print("You are too confused to use this power.");
118-#endif
113+ msg_print(_("混乱していてその能力は使えません。", "You are too confused to use this power."));
119114 energy_use = 0;
120115 return 0;
121116 }
@@ -123,11 +118,8 @@
123118 /* Risk death? */
124119 else if (p_ptr->chp < use_hp)
125120 {
126-#ifdef JP
127- if (!get_check("本当に今の衰弱した状態でこの能力を使いますか?"))
128-#else
129- if (!get_check("Really use the power in your weakened state? "))
130-#endif
121+ if (!get_check(_("本当に今の衰弱した状態でこの能力を使いますか?",
122+ "Really use the power in your weakened state? ")))
131123 {
132124 energy_use = 0;
133125 return 0;
@@ -162,11 +154,8 @@
162154 }
163155
164156 if (flush_failure) flush();
165-#ifdef JP
166- msg_print("充分に集中できなかった。");
167-#else
168- msg_print("You've failed to concentrate hard enough.");
169-#endif
157+ msg_print(_("充分に集中できなかった。", "You've failed to concentrate hard enough."));
158+
170159 return -1;
171160 }
172161
@@ -293,7 +282,7 @@
293282 #else
294283 msg_format("%^s appears confused.", m_name);
295284 #endif
296- m_ptr->confused += randint0(p_ptr->lev / 5) + 4;
285+ m_ptr->confused += (byte)(randint0(p_ptr->lev / 5) + 4);
297286 }
298287
299288 /* Hack -- delay fear messages */
@@ -723,6 +712,7 @@
723712 (void)set_poisoned(0);
724713 (void)set_cut(0);
725714 (void)set_blind(0);
715+ (void)set_confused(0);
726716 (void)set_image(0);
727717 (void)set_stun(0);
728718 break;
@@ -905,6 +895,21 @@
905895 }
906896
907897
898+static power_desc_type power_desc_entry(cptr name, int level, int cost, int stat, int fail, int number)
899+{
900+ power_desc_type power_desc;
901+ strcpy(power_desc.name, name);
902+ power_desc.level = level;
903+ power_desc.cost = cost;
904+ power_desc.stat = stat;
905+ power_desc.fail = fail;
906+ power_desc.number = number;
907+ power_desc.ignore_conf = FALSE;
908+
909+ return (power_desc);
910+}
911+
912+
908913 /*
909914 * Allow user to choose a power (racial / mutation) to activate
910915 */
@@ -917,7 +922,6 @@
917922 char choice;
918923 char out_val[160];
919924
920-
921925 for (num = 0; num < 36; num++)
922926 {
923927 strcpy(power_desc[num].name, "");
@@ -926,14 +930,10 @@
926930
927931 num = 0;
928932
929- if (p_ptr->confused)
933+ /* Can use Este's power when confusion */
934+ if (p_ptr->confused && (p_ptr->valar_patron != VAR_ESTE))
930935 {
931-#ifdef JP
932- msg_print("混乱していて特殊能力を使えません!");
933-#else
934- msg_print("You are too confused to use any powers!");
935-#endif
936- energy_use = 0;
936+ msg_print(_("混乱していて特殊能力を使えません!", "You are too confused to use any powers!"));
937937 return;
938938 }
939939
@@ -940,82 +940,36 @@
940940 switch (p_ptr->pclass)
941941 {
942942 case CLASS_WARRIOR:
943-#ifdef JP
944- strcpy(power_desc[num].name, "シールド・バッシュ");
945-#else
946- strcpy(power_desc[num].name, "Shield bashing");
947-#endif
948- power_desc[num].level = 1;
949- power_desc[num].cost = 15;
950- power_desc[num].stat = A_DEX;
951- power_desc[num].fail = 0;
952- power_desc[num++].number = -3;
943+ power_desc[num++] = power_desc_entry(
944+ _("シールド・バッシュ", "Shield bashing"),
945+ 1, 15, A_DEX, 0, -3);
953946 break;
954947 case CLASS_PALADIN:
955-#ifdef JP
956- strcpy(power_desc[num].name, "呪い識別");
957-#else
958- strcpy(power_desc[num].name, "Identify curse");
959-#endif
960- power_desc[num].level = 5;
961- power_desc[num].cost = 10;
962- power_desc[num].stat = A_WIS;
963- power_desc[num].fail = 9;
964- power_desc[num++].number = -3;
948+ power_desc[num++] = power_desc_entry(
949+ _("呪い識別", "Identify curse"),
950+ 5, 10, A_WIS, 9, -3);
965951 break;
966952 case CLASS_WARRIOR_MAGE:
967-#ifdef JP
968- strcpy(power_desc[num].name, "遠方攻撃");
969-#else
970- strcpy(power_desc[num].name, "Distance attack");
971-#endif
972- power_desc[num].level = 1;
973- power_desc[num].cost = 15;
974- power_desc[num].stat = A_DEX;
975- power_desc[num].fail = 0;
976- power_desc[num++].number = -3;
953+ power_desc[num++] = power_desc_entry(
954+ _("遠方攻撃", "Distance attack"),
955+ 1, 15, A_DEX, 0, -3);
977956 break;
978957 case CLASS_MAGE:
979958 case CLASS_PRIEST:
980-#ifdef JP
981- strcpy(power_desc[num].name, "明鏡止水");
982-#else
983- strcpy(power_desc[num].name, "Clear mind");
984-#endif
985- power_desc[num].level = 15;
986- power_desc[num].cost = 0;
987- power_desc[num].stat = m_info[p_ptr->pclass].spell_stat;
988- power_desc[num].fail = 10;
989- power_desc[num++].number = -3;
959+ power_desc[num++] = power_desc_entry(
960+ _("明鏡止水", "Clear mind"),
961+ 15, 0, m_info[p_ptr->pclass].spell_stat, 10, -3);
990962 break;
991963 case CLASS_ARCHER:
992-#ifdef JP
993- strcpy(power_desc[num].name, "弓/矢の鑑定");
994-#else
995- strcpy(power_desc[num].name, "Identify bows/ammos");
996-#endif
997- power_desc[num].level = 10;
998- power_desc[num].cost = 15;
999- power_desc[num].stat = A_INT;
1000- power_desc[num].fail = 15;
1001- power_desc[num++].number = -3;
1002-#ifdef JP
1003- strcpy(power_desc[num].name, "矢の雨");
1004-#else
1005- strcpy(power_desc[num].name, "Arrow rain");
1006-#endif
1007- power_desc[num].level = 5;
1008- power_desc[num].cost = 15;
1009- power_desc[num].stat = A_DEX;
1010- power_desc[num].fail = 15;
1011- power_desc[num++].number = -4;
964+ power_desc[num++] = power_desc_entry(
965+ _("弓/矢の鑑定", "Identify bows/ammos"),
966+ 10, 15, A_INT, 15, -3);
967+ power_desc[num++] = power_desc_entry(
968+ _("矢の雨", "Arrow rain"),
969+ 5, 15, A_DEX, 15, -4);
1012970 break;
1013971 default:
1014-#ifdef JP
1015- strcpy(power_desc[num].name, "(なし)");
1016-#else
1017- strcpy(power_desc[num].name, "(none)");
1018-#endif
972+ strcpy(power_desc[num].name, _("(なし)", "(none)"));
1019973 break;
1020974 }
1021975
@@ -1022,65 +976,30 @@
1022976 switch (p_ptr->prace)
1023977 {
1024978 case RACE_DWARF:
1025-#ifdef JP
1026- strcpy(power_desc[num].name, "ドアと罠 感知");
1027-#else
1028- strcpy(power_desc[num].name, "Detect doors+traps");
1029-#endif
1030- power_desc[num].level = 5;
1031- power_desc[num].cost = 5;
1032- power_desc[num].stat = A_WIS;
1033- power_desc[num].fail = 12;
1034- power_desc[num++].number = -1;
979+ power_desc[num++] = power_desc_entry(
980+ _("ドアと罠 感知", "Detect doors+traps"),
981+ 5, 5, A_WIS, 12, -1);
1035982 break;
1036983 case RACE_HOBBIT:
1037-#ifdef JP
1038- strcpy(power_desc[num].name, "食糧生成");
1039-#else
1040- strcpy(power_desc[num].name, "Create food");
1041-#endif
1042- power_desc[num].level = 15;
1043- power_desc[num].cost = 10;
1044- power_desc[num].stat = A_INT;
1045- power_desc[num].fail = 10;
1046- power_desc[num++].number = -1;
984+ power_desc[num++] = power_desc_entry(
985+ _("食糧生成", "Create food"),
986+ 15, 10, A_INT, 10, -1);
1047987 break;
1048988 case RACE_HALF_ORC:
1049-#ifdef JP
1050- strcpy(power_desc[num].name, "恐怖除去");
1051-#else
1052- strcpy(power_desc[num].name, "Remove fear");
1053-#endif
1054- power_desc[num].level = 3;
1055- power_desc[num].cost = 5;
1056- power_desc[num].stat = A_WIS;
1057- power_desc[num].fail = (warrior ? 5 : 10);
1058- power_desc[num++].number = -1;
989+ power_desc[num++] = power_desc_entry(
990+ _("恐怖除去", "Remove fear"),
991+ 3, 5, A_WIS, (warrior ? 5 : 10), -1);
1059992 break;
1060993 case RACE_BARBARIAN:
1061-#ifdef JP
1062- strcpy(power_desc[num].name, "肉体野獣化");
1063-#else
1064- strcpy(power_desc[num].name, "Berserk");
1065-#endif
1066- power_desc[num].level = 8;
1067- power_desc[num].cost = 10;
1068- power_desc[num].stat = A_WIS;
1069- power_desc[num].fail = (warrior ? 6 : 12);
1070- power_desc[num++].number = -1;
994+ power_desc[num++] = power_desc_entry(
995+ _("肉体野獣化", "Berserk"),
996+ 8, 10, A_WIS, (warrior ? 6 : 12), -1);
1071997 break;
1072998 #if 0
1073999 case RACE_VAMPIRE:
1074-#ifdef JP
1075- strcpy(power_desc[num].name, "生命力吸収");
1076-#else
1077- strcpy(power_desc[num].name, "Drain life");
1078-#endif
1079- power_desc[num].level = 2;
1080- power_desc[num].cost = 1 + (lvl / 3);
1081- power_desc[num].stat = A_CON;
1082- power_desc[num].fail = 9;
1083- power_desc[num++].number = -1;
1000+ power_desc[num++] = power_desc_entry(
1001+ _("生命力吸収", "Drain life"),
1002+ 2, 1 + (lvl / 3), A_CON, 9, -1);
10841003 break;
10851004 #endif
10861005 default:
@@ -1090,210 +1009,92 @@
10901009 switch(p_ptr->valar_patron)
10911010 {
10921011 case VAR_MANWE:
1093-#ifdef JP
1094- strcpy(power_desc[num].name, "風のオーラ");
1095-#else
1096- strcpy(power_desc[num].name, "Cloak of Hurricane");
1097-#endif
1098- power_desc[num].level = 7;
1099- power_desc[num].cost = 10;
1100- power_desc[num].stat = A_INT;
1101- power_desc[num].fail = 15;
1102- power_desc[num++].number = -10;
1012+ power_desc[num++] = power_desc_entry(
1013+ _("風のオーラ", "Cloak of Hurricane"),
1014+ 7, 10, A_WIS, 15, -10);
11031015 break;
11041016 case VAR_ULMO:
1105-#ifdef JP
1106- strcpy(power_desc[num].name, "酸への耐性");
1107-#else
1108- strcpy(power_desc[num].name, "Acid resistance");
1109-#endif
1110- power_desc[num].level = 10;
1111- power_desc[num].cost = 15;
1112- power_desc[num].stat = A_INT;
1113- power_desc[num].fail = 15;
1114- power_desc[num++].number = -10;
1017+ power_desc[num++] = power_desc_entry(
1018+ _("酸への耐性", "Acid resistance"),
1019+ 10, 15, A_INT, 15, -10);
11151020 break;
11161021 case VAR_AULE:
1117- strcpy(power_desc[num].name, _("腕力強化", "Extra might"));
1118- power_desc[num].level = 5;
1119- power_desc[num].cost = 10;
1120- power_desc[num].stat = A_STR;
1121- power_desc[num].fail = (warrior ? 6 : 12);
1122- power_desc[num++].number = -10;
1123- strcpy(power_desc[num].name, _("腐食防止", "Rust proofing"));
1124- power_desc[num].level = 20;
1125- power_desc[num].cost = 30;
1126- power_desc[num].stat = A_STR;
1127- power_desc[num].fail = (warrior ? 12 : 24);
1128- power_desc[num++].number = -11;
1022+ power_desc[num++] = power_desc_entry(
1023+ _("腕力強化", "Extra might"),
1024+ 5, 10, A_STR, (warrior ? 6 : 12), -10);
1025+ power_desc[num++] = power_desc_entry(
1026+ _("腐食防止", "Rust proofing"),
1027+ 20, 30, A_STR, (warrior ? 12 : 24), -11);
11291028 break;
11301029 case VAR_OROME:
1131-#ifdef JP
1132- strcpy(power_desc[num].name, "エルフの目");
1133-#else
1134- strcpy(power_desc[num].name, "Elven eye");
1135-#endif
1136- power_desc[num].level = 3;
1137- power_desc[num].cost = 5;
1138- power_desc[num].stat = A_DEX;
1139- power_desc[num].fail = 15;
1140- power_desc[num++].number = -10;
1030+ power_desc[num++] = power_desc_entry(
1031+ _("エルフの目", "Elven eye"),
1032+ 3, 5, A_DEX, 15, -10);
11411033 break;
11421034 case VAR_MANDOS:
1143-#ifdef JP
1144- strcpy(power_desc[num].name, "死者退散");
1145-#else
1146- strcpy(power_desc[num].name, "Dispel undead");
1147-#endif
1148- power_desc[num].level = 10;
1149- power_desc[num].cost = 10;
1150- power_desc[num].stat = A_WIS;
1151- power_desc[num].fail = 10;
1152- power_desc[num++].number = -10;
1035+ power_desc[num++] = power_desc_entry(
1036+ _("死者退散", "Dispel undead"),
1037+ 10, 10, A_WIS, 10, -10);
11531038 break;
11541039 case VAR_IRMO:
1155-#ifdef JP
1156- strcpy(power_desc[num].name, "周辺スリープ");
1157-#else
1158- strcpy(power_desc[num].name, "Sleep monsters");
1159-#endif
1160- power_desc[num].level = 8;
1161- power_desc[num].cost = 10;
1162- power_desc[num].stat = A_INT;
1163- power_desc[num].fail = 15;
1164- power_desc[num++].number = -10;
1040+ power_desc[num++] = power_desc_entry(
1041+ _("周辺スリープ", "Sleep monsters"),
1042+ 8, 10, A_INT, 15, -10);
11651043 break;
11661044 case VAR_TULKAS:
1167-#ifdef JP
1168- strcpy(power_desc[num].name, "全方位攻撃");
1169-#else
1170- strcpy(power_desc[num].name, "Whirlwind Attack");
1171-#endif
1172- power_desc[num].level = 1;
1173- power_desc[num].cost = 15;
1174- power_desc[num].stat = A_STR;
1175- power_desc[num].fail = (warrior ? 9 : 15);
1176- power_desc[num++].number = -10;
1177-#ifdef JP
1178- strcpy(power_desc[num].name, "士気高揚");
1179-#else
1180- strcpy(power_desc[num].name, "Heroism");
1181-#endif
1182- power_desc[num].level = 7;
1183- power_desc[num].cost = 10;
1184- power_desc[num].stat = A_WIS;
1185- power_desc[num].fail = 12;
1186- power_desc[num++].number = -11;
1045+ power_desc[num++] = power_desc_entry(
1046+ _("全方位攻撃", "Whirlwind Attack"),
1047+ 1, 15, A_STR, (warrior ? 9 : 15), -10);
1048+ power_desc[num++] = power_desc_entry(
1049+ _("士気高揚", "Heroism"),
1050+ 7, 10, A_WIS, 12, -11);
11871051 break;
11881052 case VAR_VARDA:
1189-#ifdef JP
1190- strcpy(power_desc[num].name, "対邪悪結界");
1191-#else
1192- strcpy(power_desc[num].name, "Protection from evil");
1193-#endif
1194- power_desc[num].level = 7;
1195- power_desc[num].cost = 15;
1196- power_desc[num].stat = A_WIS;
1197- power_desc[num].fail = 15;
1198- power_desc[num++].number = -10;
1053+ power_desc[num++] = power_desc_entry(
1054+ _("対邪悪結界", "Protection from evil"),
1055+ 7, 15, A_WIS, 15, -10);
11991056 break;
12001057 case VAR_YAVANNA:
1201-#ifdef JP
1202- strcpy(power_desc[num].name, "草地生成");
1203-#else
1204- strcpy(power_desc[num].name, "Create grass");
1205-#endif
1206- power_desc[num].level = 1;
1207- power_desc[num].cost = 2;
1208- power_desc[num].stat = A_DEX;
1209- power_desc[num].fail = 6;
1210- power_desc[num++].number = -10;
1211-#ifdef JP
1212- strcpy(power_desc[num].name, "フラッシュ・ライト");
1213-#else
1214- strcpy(power_desc[num].name, "Flash Light");
1215-#endif
1216- power_desc[num].level = 5;
1217- power_desc[num].cost = 5;
1218- power_desc[num].stat = A_CHR;
1219- power_desc[num].fail = 6;
1220- power_desc[num++].number = -11;
1058+ power_desc[num++] = power_desc_entry(
1059+ _("草地生成", "Create grass"),
1060+ 1, 2, A_DEX, 6, -10);
1061+ power_desc[num++] = power_desc_entry(
1062+ _("フラッシュ・ライト", "Flash Light"),
1063+ 5, 5, A_CHR, 6, -1);
12211064 break;
12221065 case VAR_NIENNA:
1223-#ifdef JP
1224- strcpy(power_desc[num].name, "哀しみの歌");
1225-#else
1226- strcpy(power_desc[num].name, "Sorrowful song");
1227-#endif
1228- power_desc[num].level = 7;
1229- power_desc[num].cost = 5;
1230- power_desc[num].stat = A_CHR;
1231- power_desc[num].fail = 9;
1232- power_desc[num++].number = -10;
1066+ power_desc[num++] = power_desc_entry(
1067+ _("哀しみの歌", "Sorrowful song"),
1068+ 7, 5, A_CHR, 9, -10);
12331069 break;
12341070 case VAR_ESTE:
1235-#ifdef JP
1236- strcpy(power_desc[num].name, "癒しの手");
1237-#else
1238- strcpy(power_desc[num].name, "Curing");
1239-#endif
1240- power_desc[num].level = 1;
1241- power_desc[num].cost = 5;
1242- power_desc[num].stat = A_WIS;
1243- power_desc[num].fail = 6;
1244- power_desc[num++].number = -10;
1071+ power_desc[num] = power_desc_entry(
1072+ _("癒しの手", "Curing"),
1073+ 1, 5, A_WIS, 6, -10);
1074+ power_desc[num++].ignore_conf = TRUE;
12451075 break;
12461076 case VAR_VAIRE:
1247-#ifdef JP
1248- strcpy(power_desc[num].name, "魅惑の目");
1249-#else
1250- strcpy(power_desc[num].name, "Charming");
1251-#endif
1252- power_desc[num].level = 10;
1253- power_desc[num].cost = 10;
1254- power_desc[num].stat = A_CHR;
1255- power_desc[num].fail = 12;
1256- power_desc[num++].number = -10;
1077+ power_desc[num++] = power_desc_entry(
1078+ _("魅惑の目", "Charming"),
1079+ 10, 10, A_CHR, 12, -10);
12571080 break;
12581081 case VAR_VANA:
1259-#ifdef JP
1260- strcpy(power_desc[num].name, "経験値復活");
1261-#else
1262- strcpy(power_desc[num].name, "Restore level");
1263-#endif
1264- power_desc[num].level = 15;
1265- power_desc[num].cost = 10;
1266- power_desc[num].stat = A_WIS;
1267- power_desc[num].fail = 9;
1268- power_desc[num++].number = -10;
1082+ power_desc[num++] = power_desc_entry(
1083+ _("経験値復活", "Restore level"),
1084+ 15, 10, A_WIS, 9, -10);
12691085 break;
12701086 case VAR_NESSA:
1271-#ifdef JP
1272- strcpy(power_desc[num].name, "跳躍");
1273-#else
1274- strcpy(power_desc[num].name, "Stepping");
1275-#endif
1276- power_desc[num].level = 1;
1277- power_desc[num].cost = 5;
1278- power_desc[num].stat = A_DEX;
1279- power_desc[num].fail = 6;
1280- power_desc[num++].number = -10;
1087+ power_desc[num++] = power_desc_entry(
1088+ _("跳躍", "Stepping"),
1089+ 1, 3, A_DEX, 6, -10);
12811090 break;
12821091 default:
12831092 break;
12841093 }
12851094
1286-#if 0
1287- if ((num == 0) && !p_ptr->muta)
1288-#else
12891095 if (num == 0)
1290-#endif
12911096 {
1292-#ifdef JP
1293- msg_print("使える特殊能力が何もありません。");
1294-#else
1295- msg_print("You have no powers to activate.");
1296-#endif
1097+ msg_print(_("使える特殊能力が何もありません。", "You have no powers to activate."));
12971098 energy_use = 0;
12981099 return;
12991100 }
@@ -1306,7 +1107,7 @@
13061107
13071108 /* Build a prompt */
13081109 #ifdef JP
1309- (void) strnfmt(out_val, 78, "(特殊能力 %c-%c, *'で一覧, ESCで中断) どの特殊能力を使いますか?",
1110+ (void)strnfmt(out_val, 78, "(特殊能力 %c-%c, *'で一覧, ESCで中断) どの特殊能力を使いますか?",
13101111 #else
13111112 (void)strnfmt(out_val, 78, "(Powers %c-%c, *=List, ESC=exit) Use which power? ",
13121113 #endif
@@ -1424,7 +1225,7 @@
14241225
14251226 /* Prompt */
14261227 #ifdef JP
1427- (void) strnfmt(tmp_val, 78, "%sを使いますか? ", power_desc[i].name);
1228+ (void)strnfmt(tmp_val, 78, "%sを使いますか? ", power_desc[i].name);
14281229 #else
14291230 (void)strnfmt(tmp_val, 78, "Use %s? ", power_desc[i].name);
14301231 #endif
Afficher sur ancien navigateur de dépôt.