OSDN Git Service

[Refactor] レイシャルパワー名称をstd::stringに変更
authoriks <iks3@users.noreply.github.com>
Tue, 20 Apr 2021 03:57:17 +0000 (12:57 +0900)
committeriks <iks3@users.noreply.github.com>
Tue, 20 Apr 2021 13:46:28 +0000 (22:46 +0900)
src/cmd-action/cmd-racial.cpp
src/mind/mind-elementalist.cpp
src/racial/class-racial-switcher.cpp
src/racial/class-racial-switcher.h
src/racial/mutation-racial-selector.cpp
src/racial/race-racial-command-setter.cpp
src/racial/racial-util.cpp
src/racial/racial-util.h

index 633c4c0..820df09 100644 (file)
@@ -21,6 +21,7 @@
 #include "status/action-setter.h"
 #include "term/screen-processor.h"
 #include "util/int-char-converter.h"
+#include <string>
 
 static bool input_racial_power_selection(player_type *creature_ptr, rc_type *rc_ptr)
 {
@@ -119,7 +120,7 @@ static void select_racial_power(player_type *creature_ptr, rc_type *rc_ptr)
         }
 
         strcat(dummy,
-            format("%-23.23s %2d %4d %3d%%", rc_ptr->power_desc[ctr].racial_name, rc_ptr->power_desc[ctr].min_level, rc_ptr->power_desc[ctr].cost,
+            format("%-23.23s %2d %4d %3d%%", rc_ptr->power_desc[ctr].racial_name.c_str(), rc_ptr->power_desc[ctr].min_level, rc_ptr->power_desc[ctr].cost,
                 100 - racial_chance(creature_ptr, &rc_ptr->power_desc[ctr])));
         prt(dummy, y1, x1);
         ctr++;
@@ -173,7 +174,7 @@ static bool ask_invoke_racial_power(rc_type *rc_ptr)
         return TRUE;
 
     char tmp_val[160];
-    (void)strnfmt(tmp_val, 78, _("%sを使いますか? ", "Use %s? "), rc_ptr->power_desc[rc_ptr->command_code].racial_name);
+    (void)strnfmt(tmp_val, 78, _("%sを使いますか? ", "Use %s? "), rc_ptr->power_desc[rc_ptr->command_code].racial_name.c_str());
     return get_check(tmp_val);
 }
 
index c052901..f83f66a 100644 (file)
@@ -1246,7 +1246,7 @@ void switch_element_racial(player_type *creature_ptr, rc_type *rc_ptr)
     auto realm = static_cast<ElementRealm>(creature_ptr->element);
     switch (realm) {
     case ElementRealm::FIRE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ライト・エリア", "Light area"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("ライト・エリア", "Light area");
         rc_ptr->power_desc[rc_ptr->num].min_level = 3;
         rc_ptr->power_desc[rc_ptr->num].cost = 5;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -1254,7 +1254,7 @@ void switch_element_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case ElementRealm::ICE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("周辺フリーズ", "Sleep monsters"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("周辺フリーズ", "Sleep monsters");
         rc_ptr->power_desc[rc_ptr->num].min_level = 10;
         rc_ptr->power_desc[rc_ptr->num].cost = 15;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -1262,7 +1262,7 @@ void switch_element_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case ElementRealm::SKY:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("魔力充填", "Recharging"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("魔力充填", "Recharging");
         rc_ptr->power_desc[rc_ptr->num].min_level = 20;
         rc_ptr->power_desc[rc_ptr->num].cost = 15;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -1270,7 +1270,7 @@ void switch_element_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case ElementRealm::SEA:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("岩石溶解", "Stone to mud"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("岩石溶解", "Stone to mud");
         rc_ptr->power_desc[rc_ptr->num].min_level = 5;
         rc_ptr->power_desc[rc_ptr->num].cost = 5;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -1278,7 +1278,7 @@ void switch_element_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case ElementRealm::DARKNESS:
-        sprintf(rc_ptr->power_desc[rc_ptr->num].racial_name, _("闇の扉(半径%d)", "Door to darkness(rad %d)"), 15 + plev / 2);
+        rc_ptr->power_desc[rc_ptr->num].racial_name = format(_("闇の扉(半径%d)", "Door to darkness(rad %d)"), 15 + plev / 2);
         rc_ptr->power_desc[rc_ptr->num].min_level = 5;
         rc_ptr->power_desc[rc_ptr->num].cost = 5 + plev / 7;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -1286,7 +1286,7 @@ void switch_element_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case ElementRealm::CHAOS:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("現実変容", "Alter reality"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("現実変容", "Alter reality");
         rc_ptr->power_desc[rc_ptr->num].min_level = 35;
         rc_ptr->power_desc[rc_ptr->num].cost = 30;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -1294,7 +1294,7 @@ void switch_element_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case ElementRealm::EARTH:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("地震", "Earthquake"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("地震", "Earthquake");
         rc_ptr->power_desc[rc_ptr->num].min_level = 25;
         rc_ptr->power_desc[rc_ptr->num].cost = 15;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -1302,7 +1302,7 @@ void switch_element_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case ElementRealm::DEATH:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("増殖阻止", "Sterilization"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("増殖阻止", "Sterilization");
         rc_ptr->power_desc[rc_ptr->num].min_level = 5;
         rc_ptr->power_desc[rc_ptr->num].cost = 5;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
index 95929b9..88ff031 100644 (file)
@@ -8,7 +8,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
 {
     switch (creature_ptr->pclass) {
     case CLASS_WARRIOR:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("剣の舞い", "Sword Dancing"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("剣の舞い", "Sword Dancing");
         rc_ptr->power_desc[rc_ptr->num].min_level = 40;
         rc_ptr->power_desc[rc_ptr->num].cost = 75;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -17,7 +17,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         break;
     case CLASS_HIGH_MAGE:
         if (creature_ptr->realm1 == REALM_HEX) {
-            strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("詠唱をやめる", "Stop spell casting"));
+            rc_ptr->power_desc[rc_ptr->num].racial_name = _("詠唱をやめる", "Stop spell casting");
             rc_ptr->power_desc[rc_ptr->num].min_level = 1;
             rc_ptr->power_desc[rc_ptr->num].cost = 0;
             rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -28,7 +28,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         /* Fall through */
     case CLASS_MAGE:
     case CLASS_SORCERER:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("魔力食い", "Eat Magic"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("魔力食い", "Eat Magic");
         rc_ptr->power_desc[rc_ptr->num].min_level = 25;
         rc_ptr->power_desc[rc_ptr->num].cost = 1;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -37,14 +37,14 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         break;
     case CLASS_PRIEST:
         if (is_good_realm(creature_ptr->realm1)) {
-            strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("武器祝福", "Bless Weapon"));
+            rc_ptr->power_desc[rc_ptr->num].racial_name = _("武器祝福", "Bless Weapon");
             rc_ptr->power_desc[rc_ptr->num].min_level = 35;
             rc_ptr->power_desc[rc_ptr->num].cost = 70;
             rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
             rc_ptr->power_desc[rc_ptr->num].fail = 50;
             rc_ptr->power_desc[rc_ptr->num++].number = -3;
         } else {
-            strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("召魂", "Evocation"));
+            rc_ptr->power_desc[rc_ptr->num].racial_name = _("召魂", "Evocation");
             rc_ptr->power_desc[rc_ptr->num].min_level = 42;
             rc_ptr->power_desc[rc_ptr->num].cost = 40;
             rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -54,7 +54,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
 
         break;
     case CLASS_ROGUE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ヒット&アウェイ", "Hit and Away"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("ヒット&アウェイ", "Hit and Away");
         rc_ptr->power_desc[rc_ptr->num].min_level = 8;
         rc_ptr->power_desc[rc_ptr->num].cost = 12;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -63,7 +63,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         break;
     case CLASS_RANGER:
     case CLASS_SNIPER:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("モンスター調査", "Probe Monster"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("モンスター調査", "Probe Monster");
         rc_ptr->power_desc[rc_ptr->num].min_level = 15;
         rc_ptr->power_desc[rc_ptr->num].cost = 20;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -72,14 +72,14 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         break;
     case CLASS_PALADIN:
         if (is_good_realm(creature_ptr->realm1)) {
-            strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ホーリー・ランス", "Holy Lance"));
+            rc_ptr->power_desc[rc_ptr->num].racial_name = _("ホーリー・ランス", "Holy Lance");
             rc_ptr->power_desc[rc_ptr->num].min_level = 30;
             rc_ptr->power_desc[rc_ptr->num].cost = 30;
             rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
             rc_ptr->power_desc[rc_ptr->num].fail = 30;
             rc_ptr->power_desc[rc_ptr->num++].number = -3;
         } else {
-            strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ヘル・ランス", "Hell Lance"));
+            rc_ptr->power_desc[rc_ptr->num].racial_name = _("ヘル・ランス", "Hell Lance");
             rc_ptr->power_desc[rc_ptr->num].min_level = 30;
             rc_ptr->power_desc[rc_ptr->num].cost = 30;
             rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -89,14 +89,14 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
 
         break;
     case CLASS_WARRIOR_MAGE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("変換: HP→MP", "Convert HP to SP"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("変換: HP→MP", "Convert HP to SP");
         rc_ptr->power_desc[rc_ptr->num].min_level = 25;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
         rc_ptr->power_desc[rc_ptr->num].fail = 10;
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
 
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("変換: MP→HP", "Convert SP to HP"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("変換: MP→HP", "Convert SP to HP");
         rc_ptr->power_desc[rc_ptr->num].min_level = 25;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -104,7 +104,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case CLASS_CHAOS_WARRIOR:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("幻惑の光", "Confusing Light"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("幻惑の光", "Confusing Light");
         rc_ptr->power_desc[rc_ptr->num].min_level = 40;
         rc_ptr->power_desc[rc_ptr->num].cost = 50;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -112,14 +112,14 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
         break;
     case CLASS_MONK:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("構える", "Assume a Stance"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("構える", "Assume a Stance");
         rc_ptr->power_desc[rc_ptr->num].min_level = 25;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
         rc_ptr->power_desc[rc_ptr->num].fail = 0;
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
 
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("百裂拳", "Double Attack"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("百裂拳", "Double Attack");
         rc_ptr->power_desc[rc_ptr->num].min_level = 30;
         rc_ptr->power_desc[rc_ptr->num].cost = 30;
         rc_ptr->power_desc[rc_ptr->num].stat = A_STR;
@@ -128,7 +128,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         break;
     case CLASS_MINDCRAFTER:
     case CLASS_FORCETRAINER:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("明鏡止水", "Clear Mind"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("明鏡止水", "Clear Mind");
         rc_ptr->power_desc[rc_ptr->num].min_level = 15;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -136,14 +136,14 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
         break;
     case CLASS_TOURIST:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("写真撮影", "Take a Photograph"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("写真撮影", "Take a Photograph");
         rc_ptr->power_desc[rc_ptr->num].min_level = 1;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
         rc_ptr->power_desc[rc_ptr->num].fail = 0;
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
 
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("真・鑑定", "Identify True"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("真・鑑定", "Identify True");
         rc_ptr->power_desc[rc_ptr->num].min_level = 25;
         rc_ptr->power_desc[rc_ptr->num].cost = 20;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -151,7 +151,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case CLASS_IMITATOR:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("倍返し", "Double Revenge"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("倍返し", "Double Revenge");
         rc_ptr->power_desc[rc_ptr->num].min_level = 30;
         rc_ptr->power_desc[rc_ptr->num].cost = 100;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -159,14 +159,14 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
         break;
     case CLASS_BEASTMASTER:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("生物支配", "Dominate a Living Thing"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("生物支配", "Dominate a Living Thing");
         rc_ptr->power_desc[rc_ptr->num].min_level = 1;
         rc_ptr->power_desc[rc_ptr->num].cost = (creature_ptr->lev + 3) / 4;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CHR;
         rc_ptr->power_desc[rc_ptr->num].fail = 10;
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
 
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("真・生物支配", "Dominate Living Things"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("真・生物支配", "Dominate Living Things");
         rc_ptr->power_desc[rc_ptr->num].min_level = 30;
         rc_ptr->power_desc[rc_ptr->num].cost = (creature_ptr->lev + 20) / 2;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CHR;
@@ -174,7 +174,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case CLASS_ARCHER:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("弾/矢の製造", "Create Ammo"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("弾/矢の製造", "Create Ammo");
         rc_ptr->power_desc[rc_ptr->num].min_level = 1;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -182,14 +182,14 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
         break;
     case CLASS_MAGIC_EATER:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("魔力の取り込み", "Absorb Magic"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("魔力の取り込み", "Absorb Magic");
         rc_ptr->power_desc[rc_ptr->num].min_level = 1;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
         rc_ptr->power_desc[rc_ptr->num].fail = 0;
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
 
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("強力発動", "Powerful Activation"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("強力発動", "Powerful Activation");
         rc_ptr->power_desc[rc_ptr->num].min_level = 10;
         rc_ptr->power_desc[rc_ptr->num].cost = 10 + (rc_ptr->lvl - 10) / 2;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -197,7 +197,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case CLASS_BARD:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("歌を止める", "Stop Singing"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("歌を止める", "Stop Singing");
         rc_ptr->power_desc[rc_ptr->num].min_level = 1;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CHR;
@@ -205,7 +205,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
         break;
     case CLASS_RED_MAGE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("連続魔", "Double Magic"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("連続魔", "Double Magic");
         rc_ptr->power_desc[rc_ptr->num].min_level = 48;
         rc_ptr->power_desc[rc_ptr->num].cost = 20;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -213,14 +213,14 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
         break;
     case CLASS_SAMURAI:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("気合いため", "Concentration"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("気合いため", "Concentration");
         rc_ptr->power_desc[rc_ptr->num].min_level = 1;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
         rc_ptr->power_desc[rc_ptr->num].fail = 0;
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
 
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("型", "Assume a Stance"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("型", "Assume a Stance");
         rc_ptr->power_desc[rc_ptr->num].min_level = 25;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -228,7 +228,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case CLASS_BLUE_MAGE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ラーニング", "Learning"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("ラーニング", "Learning");
         rc_ptr->power_desc[rc_ptr->num].min_level = 1;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -236,7 +236,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
         break;
     case CLASS_CAVALRY:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("荒馬ならし", "Rodeo"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("荒馬ならし", "Rodeo");
         rc_ptr->power_desc[rc_ptr->num].min_level = 10;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_STR;
@@ -244,7 +244,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
         break;
     case CLASS_BERSERKER:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("帰還", "Recall"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("帰還", "Recall");
         rc_ptr->power_desc[rc_ptr->num].min_level = 10;
         rc_ptr->power_desc[rc_ptr->num].cost = 10;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -252,14 +252,14 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
         break;
     case CLASS_MIRROR_MASTER:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("鏡割り", "Break Mirrors"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("鏡割り", "Break Mirrors");
         rc_ptr->power_desc[rc_ptr->num].min_level = 1;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
         rc_ptr->power_desc[rc_ptr->num].fail = 0;
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
 
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("静水", "Mirror Concentration"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("静水", "Mirror Concentration");
         rc_ptr->power_desc[rc_ptr->num].min_level = 30;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -267,7 +267,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -4;
         break;
     case CLASS_SMITH:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("目利き", "Judgment"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("目利き", "Judgment");
         rc_ptr->power_desc[rc_ptr->num].min_level = 5;
         rc_ptr->power_desc[rc_ptr->num].cost = 15;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -275,7 +275,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
         break;
     case CLASS_NINJA:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("速駆け", "Quick Walk"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("速駆け", "Quick Walk");
         rc_ptr->power_desc[rc_ptr->num].min_level = 20;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -283,7 +283,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -3;
         break;
     case CLASS_ELEMENTALIST:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("明鏡止水", "Clear Mind"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("明鏡止水", "Clear Mind");
         rc_ptr->power_desc[rc_ptr->num].min_level = 15;
         rc_ptr->power_desc[rc_ptr->num].cost = 0;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -293,7 +293,7 @@ void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr)
         switch_element_racial(creature_ptr, rc_ptr);
         break;
     default:
-        strcpy(rc_ptr->power_desc[0].racial_name, _("(なし)", "(none)"));
+        rc_ptr->power_desc[0].racial_name = _("(なし)", "(none)");
         break;
     }
 }
index 6aeadcc..67526ae 100644 (file)
@@ -2,5 +2,5 @@
 
 #include "system/angband.h"
 
-typedef struct rc_type rc_type;
+struct rc_type;
 void switch_class_racial(player_type *creature_ptr, rc_type *rc_ptr);
index 3d8346b..512d4db 100644 (file)
@@ -5,7 +5,7 @@
 void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
 {
     if (creature_ptr->muta.has(MUTA::SPIT_ACID)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("酸の唾", "Spit Acid"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("酸の唾", "Spit Acid");
         rc_ptr->power_desc[rc_ptr->num].min_level = 9;
         rc_ptr->power_desc[rc_ptr->num].cost = 9;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -14,7 +14,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::BR_FIRE)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("炎のブレス", "Fire Breath"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("炎のブレス", "Fire Breath");
         rc_ptr->power_desc[rc_ptr->num].min_level = 20;
         rc_ptr->power_desc[rc_ptr->num].cost = rc_ptr->lvl;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -23,7 +23,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::HYPN_GAZE)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("催眠睨み", "Hypnotic Gaze"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("催眠睨み", "Hypnotic Gaze");
         rc_ptr->power_desc[rc_ptr->num].min_level = 12;
         rc_ptr->power_desc[rc_ptr->num].cost = 12;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CHR;
@@ -32,7 +32,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::TELEKINES)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("念動力", "Telekinesis"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("念動力", "Telekinesis");
         rc_ptr->power_desc[rc_ptr->num].min_level = 9;
         rc_ptr->power_desc[rc_ptr->num].cost = 9;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -41,7 +41,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::VTELEPORT)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("テレポート", "Teleport"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("テレポート", "Teleport");
         rc_ptr->power_desc[rc_ptr->num].min_level = 7;
         rc_ptr->power_desc[rc_ptr->num].cost = 7;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -50,7 +50,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::MIND_BLST)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("精神攻撃", "Mind Blast"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("精神攻撃", "Mind Blast");
         rc_ptr->power_desc[rc_ptr->num].min_level = 5;
         rc_ptr->power_desc[rc_ptr->num].cost = 3;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -59,7 +59,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::RADIATION)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("放射能", "Emit Radiation"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("放射能", "Emit Radiation");
         rc_ptr->power_desc[rc_ptr->num].min_level = 15;
         rc_ptr->power_desc[rc_ptr->num].cost = 15;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -68,16 +68,16 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::VAMPIRISM)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("吸血", "Vampiric Drain"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("吸血", "Vampiric Drain");
         rc_ptr->power_desc[rc_ptr->num].min_level = 2;
-        rc_ptr->power_desc[rc_ptr->num].cost = (1 + (rc_ptr->lvl / 3));
+        rc_ptr->power_desc[rc_ptr->num].cost = 1 + (rc_ptr->lvl / 3);
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
         rc_ptr->power_desc[rc_ptr->num].fail = 9;
         rc_ptr->power_desc[rc_ptr->num++].number = static_cast<int>(MUTA::VAMPIRISM);
     }
 
     if (creature_ptr->muta.has(MUTA::SMELL_MET)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("金属嗅覚", "Smell Metal"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("金属嗅覚", "Smell Metal");
         rc_ptr->power_desc[rc_ptr->num].min_level = 3;
         rc_ptr->power_desc[rc_ptr->num].cost = 2;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -86,7 +86,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::SMELL_MON)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("敵臭嗅覚", "Smell Monsters"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("敵臭嗅覚", "Smell Monsters");
         rc_ptr->power_desc[rc_ptr->num].min_level = 5;
         rc_ptr->power_desc[rc_ptr->num].cost = 4;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -95,7 +95,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::BLINK)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ショート・テレポート", "Blink"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("ショート・テレポート", "Blink");
         rc_ptr->power_desc[rc_ptr->num].min_level = 3;
         rc_ptr->power_desc[rc_ptr->num].cost = 3;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -104,7 +104,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::EAT_ROCK)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("岩食い", "Eat Rock"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("岩食い", "Eat Rock");
         rc_ptr->power_desc[rc_ptr->num].min_level = 8;
         rc_ptr->power_desc[rc_ptr->num].cost = 12;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -113,7 +113,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::SWAP_POS)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("位置交換", "Swap Position"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("位置交換", "Swap Position");
         rc_ptr->power_desc[rc_ptr->num].min_level = 15;
         rc_ptr->power_desc[rc_ptr->num].cost = 12;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -122,7 +122,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::SHRIEK)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("叫び", "Shriek"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("叫び", "Shriek");
         rc_ptr->power_desc[rc_ptr->num].min_level = 20;
         rc_ptr->power_desc[rc_ptr->num].cost = 14;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -131,7 +131,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::ILLUMINE)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("照明", "Illuminate"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("照明", "Illuminate");
         rc_ptr->power_desc[rc_ptr->num].min_level = 3;
         rc_ptr->power_desc[rc_ptr->num].cost = 2;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -140,7 +140,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::DET_CURSE)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("呪い感知", "Detect Curses"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("呪い感知", "Detect Curses");
         rc_ptr->power_desc[rc_ptr->num].min_level = 7;
         rc_ptr->power_desc[rc_ptr->num].cost = 14;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -149,7 +149,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::BERSERK)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("狂戦士化", "Berserk"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("狂戦士化", "Berserk");
         rc_ptr->power_desc[rc_ptr->num].min_level = 8;
         rc_ptr->power_desc[rc_ptr->num].cost = 8;
         rc_ptr->power_desc[rc_ptr->num].stat = A_STR;
@@ -158,7 +158,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::POLYMORPH)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("変身", "Polymorph"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("変身", "Polymorph");
         rc_ptr->power_desc[rc_ptr->num].min_level = 18;
         rc_ptr->power_desc[rc_ptr->num].cost = 20;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -167,7 +167,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::MIDAS_TCH)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ミダスの手", "Midas Touch"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("ミダスの手", "Midas Touch");
         rc_ptr->power_desc[rc_ptr->num].min_level = 10;
         rc_ptr->power_desc[rc_ptr->num].cost = 5;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -176,7 +176,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::GROW_MOLD)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("カビ発生", "Grow Mold"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("カビ発生", "Grow Mold");
         rc_ptr->power_desc[rc_ptr->num].min_level = 1;
         rc_ptr->power_desc[rc_ptr->num].cost = 6;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -185,7 +185,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::RESIST)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("エレメント耐性", "Resist Elements"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("エレメント耐性", "Resist Elements");
         rc_ptr->power_desc[rc_ptr->num].min_level = 10;
         rc_ptr->power_desc[rc_ptr->num].cost = 12;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -194,7 +194,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::EARTHQUAKE)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("地震", "Earthquake"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("地震", "Earthquake");
         rc_ptr->power_desc[rc_ptr->num].min_level = 12;
         rc_ptr->power_desc[rc_ptr->num].cost = 12;
         rc_ptr->power_desc[rc_ptr->num].stat = A_STR;
@@ -203,7 +203,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::EAT_MAGIC)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("魔力食い", "Eat Magic"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("魔力食い", "Eat Magic");
         rc_ptr->power_desc[rc_ptr->num].min_level = 17;
         rc_ptr->power_desc[rc_ptr->num].cost = 1;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -212,7 +212,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::WEIGH_MAG)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("魔力感知", "Weigh Magic"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("魔力感知", "Weigh Magic");
         rc_ptr->power_desc[rc_ptr->num].min_level = 6;
         rc_ptr->power_desc[rc_ptr->num].cost = 6;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -221,7 +221,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::STERILITY)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("増殖阻止", "Sterilize"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("増殖阻止", "Sterilize");
         rc_ptr->power_desc[rc_ptr->num].min_level = 12;
         rc_ptr->power_desc[rc_ptr->num].cost = 23;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CHR;
@@ -230,7 +230,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::HIT_AND_AWAY)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ヒット&アウェイ", "Panic Hit"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("ヒット&アウェイ", "Panic Hit");
         rc_ptr->power_desc[rc_ptr->num].min_level = 10;
         rc_ptr->power_desc[rc_ptr->num].cost = 12;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -239,7 +239,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::DAZZLE)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("眩惑", "Dazzle"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("眩惑", "Dazzle");
         rc_ptr->power_desc[rc_ptr->num].min_level = 7;
         rc_ptr->power_desc[rc_ptr->num].cost = 15;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CHR;
@@ -248,7 +248,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::LASER_EYE)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("レーザー・アイ", "Laser Eye"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("レーザー・アイ", "Laser Eye");
         rc_ptr->power_desc[rc_ptr->num].min_level = 7;
         rc_ptr->power_desc[rc_ptr->num].cost = 10;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -257,7 +257,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::RECALL)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("帰還", "Recall"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("帰還", "Recall");
         rc_ptr->power_desc[rc_ptr->num].min_level = 17;
         rc_ptr->power_desc[rc_ptr->num].cost = 50;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -266,7 +266,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::BANISH)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("邪悪消滅", "Banish Evil"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("邪悪消滅", "Banish Evil");
         rc_ptr->power_desc[rc_ptr->num].min_level = 25;
         rc_ptr->power_desc[rc_ptr->num].cost = 25;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -275,7 +275,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::COLD_TOUCH)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("凍結の手", "Cold Touch"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("凍結の手", "Cold Touch");
         rc_ptr->power_desc[rc_ptr->num].min_level = 2;
         rc_ptr->power_desc[rc_ptr->num].cost = 2;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -284,7 +284,7 @@ void select_mutation_racial(player_type *creature_ptr, rc_type *rc_ptr)
     }
 
     if (creature_ptr->muta.has(MUTA::LAUNCHER)) {
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("アイテム投げ", "Throw Object"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("アイテム投げ", "Throw Object");
         rc_ptr->power_desc[rc_ptr->num].min_level = 1;
         rc_ptr->power_desc[rc_ptr->num].cost = rc_ptr->lvl;
         rc_ptr->power_desc[rc_ptr->num].stat = A_STR;
index ccae7f3..0a9f2e1 100644 (file)
@@ -7,7 +7,7 @@ void set_mimic_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
     switch (creature_ptr->mimic_form) {
     case MIMIC_DEMON:
     case MIMIC_DEMON_LORD:
-        sprintf(rc_ptr->power_desc[rc_ptr->num].racial_name, _("地獄/火炎のブレス (ダメージ %d)", "Nether or Fire Breath (dam %d)"), rc_ptr->lvl * 3);
+        rc_ptr->power_desc[rc_ptr->num].racial_name = format(_("地獄/火炎のブレス (ダメージ %d)", "Nether or Fire Breath (dam %d)"), rc_ptr->lvl * 3);
         rc_ptr->power_desc[rc_ptr->num].min_level = 15;
         rc_ptr->power_desc[rc_ptr->num].cost = 10 + rc_ptr->lvl / 3;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -15,7 +15,7 @@ void set_mimic_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case MIMIC_VAMPIRE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("吸血", "Vampiric Drain"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name, _("吸血", "Vampiric Drain");
         rc_ptr->power_desc[rc_ptr->num].min_level = 2;
         rc_ptr->power_desc[rc_ptr->num].cost = 1 + (rc_ptr->lvl / 3);
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -29,7 +29,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
 {
     switch (creature_ptr->prace) {
     case RACE_DWARF:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ドアと罠 感知", "Detect Doors+Traps"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("ドアと罠 感知", "Detect Doors+Traps");
         rc_ptr->power_desc[rc_ptr->num].min_level = 5;
         rc_ptr->power_desc[rc_ptr->num].cost = 5;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -37,7 +37,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_NIBELUNG:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ドアと罠 感知", "Detect Doors+Traps"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("ドアと罠 感知", "Detect Doors+Traps");
         rc_ptr->power_desc[rc_ptr->num].min_level = 10;
         rc_ptr->power_desc[rc_ptr->num].cost = 5;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -45,7 +45,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_HOBBIT:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("食糧生成", "Create Food"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("食糧生成", "Create Food");
         rc_ptr->power_desc[rc_ptr->num].min_level = 15;
         rc_ptr->power_desc[rc_ptr->num].cost = 10;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -53,7 +53,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_GNOME:
-        sprintf(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ショート・テレポート", "Blink"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("ショート・テレポート", "Blink");
         rc_ptr->power_desc[rc_ptr->num].min_level = 5;
         rc_ptr->power_desc[rc_ptr->num].cost = 5;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -61,7 +61,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_HALF_ORC:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("恐怖除去", "Remove Fear"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("恐怖除去", "Remove Fear");
         rc_ptr->power_desc[rc_ptr->num].min_level = 3;
         rc_ptr->power_desc[rc_ptr->num].cost = 5;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -69,7 +69,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_HALF_TROLL:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("狂戦士化", "Berserk"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("狂戦士化", "Berserk");
         rc_ptr->power_desc[rc_ptr->num].min_level = 10;
         rc_ptr->power_desc[rc_ptr->num].cost = 12;
         rc_ptr->power_desc[rc_ptr->num].stat = A_STR;
@@ -77,7 +77,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_BARBARIAN:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("狂戦士化", "Berserk"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("狂戦士化", "Berserk");
         rc_ptr->power_desc[rc_ptr->num].min_level = 8;
         rc_ptr->power_desc[rc_ptr->num].cost = 10;
         rc_ptr->power_desc[rc_ptr->num].stat = A_STR;
@@ -85,14 +85,14 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_AMBERITE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("シャドウ・シフト", "Shadow Shifting"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("シャドウ・シフト", "Shadow Shifting");
         rc_ptr->power_desc[rc_ptr->num].min_level = 30;
         rc_ptr->power_desc[rc_ptr->num].cost = 50;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
         rc_ptr->power_desc[rc_ptr->num].fail = 50;
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
 
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("パターン・ウォーク", "Pattern Mindwalking"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("パターン・ウォーク", "Pattern Mindwalking");
         rc_ptr->power_desc[rc_ptr->num].min_level = 40;
         rc_ptr->power_desc[rc_ptr->num].cost = 75;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -100,7 +100,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -2;
         break;
     case RACE_HALF_OGRE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("爆発のルーン", "Explosive Rune"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("爆発のルーン", "Explosive Rune");
         rc_ptr->power_desc[rc_ptr->num].min_level = 25;
         rc_ptr->power_desc[rc_ptr->num].cost = 35;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -108,7 +108,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_HALF_GIANT:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("岩石溶解", "Stone to Mud"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("岩石溶解", "Stone to Mud");
         rc_ptr->power_desc[rc_ptr->num].min_level = 20;
         rc_ptr->power_desc[rc_ptr->num].cost = 10;
         rc_ptr->power_desc[rc_ptr->num].stat = A_STR;
@@ -116,7 +116,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_HALF_TITAN:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("スキャン・モンスター", "Probing"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("スキャン・モンスター", "Probing");
         rc_ptr->power_desc[rc_ptr->num].min_level = 15;
         rc_ptr->power_desc[rc_ptr->num].cost = 10;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -124,7 +124,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_CYCLOPS:
-        sprintf(rc_ptr->power_desc[rc_ptr->num].racial_name, _("岩石投げ(ダメージ %d)", "Throw Boulder (dam %d)"), (3 * rc_ptr->lvl) / 2);
+        rc_ptr->power_desc[rc_ptr->num].racial_name = format(_("岩石投げ(ダメージ %d)", "Throw Boulder (dam %d)"), (3 * rc_ptr->lvl) / 2);
         rc_ptr->power_desc[rc_ptr->num].min_level = 20;
         rc_ptr->power_desc[rc_ptr->num].cost = 15;
         rc_ptr->power_desc[rc_ptr->num].stat = A_STR;
@@ -132,7 +132,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_YEEK:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("モンスター恐慌", "Scare Monster"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("モンスター恐慌", "Scare Monster");
         rc_ptr->power_desc[rc_ptr->num].min_level = 15;
         rc_ptr->power_desc[rc_ptr->num].cost = 15;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -140,7 +140,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_SPECTRE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("モンスター恐慌", "Scare Monster"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("モンスター恐慌", "Scare Monster");
         rc_ptr->power_desc[rc_ptr->num].min_level = 4;
         rc_ptr->power_desc[rc_ptr->num].cost = 6;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -148,7 +148,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_KLACKON:
-        sprintf(rc_ptr->power_desc[rc_ptr->num].racial_name, _("酸の唾 (ダメージ %d)", "Spit Acid (dam %d)"), rc_ptr->lvl);
+        rc_ptr->power_desc[rc_ptr->num].racial_name = format(_("酸の唾 (ダメージ %d)", "Spit Acid (dam %d)"), rc_ptr->lvl);
         rc_ptr->power_desc[rc_ptr->num].min_level = 9;
         rc_ptr->power_desc[rc_ptr->num].cost = 9;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -156,7 +156,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_KOBOLD:
-        sprintf(rc_ptr->power_desc[rc_ptr->num].racial_name, _("毒のダーツ (ダメージ %d)", "Poison Dart (dam %d)"), rc_ptr->lvl);
+        rc_ptr->power_desc[rc_ptr->num].racial_name = format(_("毒のダーツ (ダメージ %d)", "Poison Dart (dam %d)"), rc_ptr->lvl);
         rc_ptr->power_desc[rc_ptr->num].min_level = 12;
         rc_ptr->power_desc[rc_ptr->num].cost = 8;
         rc_ptr->power_desc[rc_ptr->num].stat = A_DEX;
@@ -164,8 +164,8 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_DARK_ELF:
-        sprintf(
-            rc_ptr->power_desc[rc_ptr->num].racial_name, _("マジック・ミサイル (ダメージ %dd%d)", "Magic Missile (dm %dd%d)"), 3 + ((rc_ptr->lvl - 1) / 5), 4);
+        rc_ptr->power_desc[rc_ptr->num].racial_name
+            = format(_("マジック・ミサイル (ダメージ %dd%d)", "Magic Missile (dm %dd%d)"), 3 + ((rc_ptr->lvl - 1) / 5), 4);
         rc_ptr->power_desc[rc_ptr->num].min_level = 2;
         rc_ptr->power_desc[rc_ptr->num].cost = 2;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -173,7 +173,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_DRACONIAN:
-        sprintf(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ブレス (ダメージ %d)", "Breath Weapon (dam %d)"), rc_ptr->lvl * 2);
+        rc_ptr->power_desc[rc_ptr->num].racial_name = format(_("ブレス (ダメージ %d)", "Breath Weapon (dam %d)"), rc_ptr->lvl * 2);
         rc_ptr->power_desc[rc_ptr->num].min_level = 1;
         rc_ptr->power_desc[rc_ptr->num].cost = rc_ptr->lvl;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -181,7 +181,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_MIND_FLAYER:
-        sprintf(rc_ptr->power_desc[rc_ptr->num].racial_name, _("精神攻撃 (ダメージ %d)", "Mind Blast (dam %d)"), rc_ptr->lvl);
+        rc_ptr->power_desc[rc_ptr->num].racial_name = format(_("精神攻撃 (ダメージ %d)", "Mind Blast (dam %d)"), rc_ptr->lvl);
         rc_ptr->power_desc[rc_ptr->num].min_level = 15;
         rc_ptr->power_desc[rc_ptr->num].cost = 12;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -189,7 +189,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_IMP:
-        sprintf(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ファイア・ボルト/ボール (ダメージ %d)", "Fire Bolt/Ball (dam %d)"), rc_ptr->lvl);
+        rc_ptr->power_desc[rc_ptr->num].racial_name = format(_("ファイア・ボルト/ボール (ダメージ %d)", "Fire Bolt/Ball (dam %d)"), rc_ptr->lvl);
         rc_ptr->power_desc[rc_ptr->num].min_level = 9;
         rc_ptr->power_desc[rc_ptr->num].cost = 15;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -197,7 +197,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_GOLEM:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("肌石化 (期間 1d20+30)", "Stone Skin (dur 1d20+30)"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("肌石化 (期間 1d20+30)", "Stone Skin (dur 1d20+30)");
         rc_ptr->power_desc[rc_ptr->num].min_level = 20;
         rc_ptr->power_desc[rc_ptr->num].cost = 15;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -206,7 +206,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         break;
     case RACE_SKELETON:
     case RACE_ZOMBIE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("経験値復活", "Restore Experience"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("経験値復活", "Restore Experience");
         rc_ptr->power_desc[rc_ptr->num].min_level = 30;
         rc_ptr->power_desc[rc_ptr->num].cost = 30;
         rc_ptr->power_desc[rc_ptr->num].stat = A_WIS;
@@ -214,7 +214,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_VAMPIRE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("吸血", "Vampiric Drain"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("吸血", "Vampiric Drain");
         rc_ptr->power_desc[rc_ptr->num].min_level = 2;
         rc_ptr->power_desc[rc_ptr->num].cost = 1 + (rc_ptr->lvl / 3);
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -222,7 +222,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_SPRITE:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("眠り粉", "Sleeping Dust"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("眠り粉", "Sleeping Dust");
         rc_ptr->power_desc[rc_ptr->num].min_level = 12;
         rc_ptr->power_desc[rc_ptr->num].cost = 12;
         rc_ptr->power_desc[rc_ptr->num].stat = A_INT;
@@ -230,7 +230,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_BALROG:
-        sprintf(rc_ptr->power_desc[rc_ptr->num].racial_name, _("地獄/火炎のブレス (ダメージ %d)", "Nether or Fire Breath (dam %d)"), rc_ptr->lvl * 3);
+        rc_ptr->power_desc[rc_ptr->num].racial_name = format(_("地獄/火炎のブレス (ダメージ %d)", "Nether or Fire Breath (dam %d)"), rc_ptr->lvl * 3);
         rc_ptr->power_desc[rc_ptr->num].min_level = 15;
         rc_ptr->power_desc[rc_ptr->num].cost = 10 + rc_ptr->lvl / 3;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CON;
@@ -238,7 +238,7 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         rc_ptr->power_desc[rc_ptr->num++].number = -1;
         break;
     case RACE_KUTAR:
-        strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("横に伸びる", "Expand Horizontally (dur 30+1d20)"));
+        rc_ptr->power_desc[rc_ptr->num].racial_name = _("横に伸びる", "Expand Horizontally (dur 30+1d20)");
         rc_ptr->power_desc[rc_ptr->num].min_level = 20;
         rc_ptr->power_desc[rc_ptr->num].cost = 15;
         rc_ptr->power_desc[rc_ptr->num].stat = A_CHR;
@@ -247,27 +247,27 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
         break;
     case RACE_ANDROID:
         if (creature_ptr->lev < 10) {
-            strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("レイガン", "Ray Gun"));
+            rc_ptr->power_desc[rc_ptr->num].racial_name = _("レイガン", "Ray Gun");
             rc_ptr->power_desc[rc_ptr->num].min_level = 1;
             rc_ptr->power_desc[rc_ptr->num].cost = 7;
             rc_ptr->power_desc[rc_ptr->num].fail = 8;
         } else if (creature_ptr->lev < 25) {
-            strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ブラスター", "Blaster"));
+            rc_ptr->power_desc[rc_ptr->num].racial_name = _("ブラスター", "Blaster");
             rc_ptr->power_desc[rc_ptr->num].min_level = 10;
             rc_ptr->power_desc[rc_ptr->num].cost = 13;
             rc_ptr->power_desc[rc_ptr->num].fail = 10;
         } else if (creature_ptr->lev < 35) {
-            strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("バズーカ", "Bazooka"));
+            rc_ptr->power_desc[rc_ptr->num].racial_name = _("バズーカ", "Bazooka");
             rc_ptr->power_desc[rc_ptr->num].min_level = 25;
             rc_ptr->power_desc[rc_ptr->num].cost = 26;
             rc_ptr->power_desc[rc_ptr->num].fail = 12;
         } else if (creature_ptr->lev < 45) {
-            strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ビームキャノン", "Beam Cannon"));
+            rc_ptr->power_desc[rc_ptr->num].racial_name = _("ビームキャノン", "Beam Cannon");
             rc_ptr->power_desc[rc_ptr->num].min_level = 35;
             rc_ptr->power_desc[rc_ptr->num].cost = 40;
             rc_ptr->power_desc[rc_ptr->num].fail = 15;
         } else {
-            strcpy(rc_ptr->power_desc[rc_ptr->num].racial_name, _("ロケット", "Rocket"));
+            rc_ptr->power_desc[rc_ptr->num].racial_name = _("ロケット", "Rocket");
             rc_ptr->power_desc[rc_ptr->num].min_level = 45;
             rc_ptr->power_desc[rc_ptr->num].cost = 60;
             rc_ptr->power_desc[rc_ptr->num].fail = 18;
@@ -278,4 +278,4 @@ void set_race_racial_command(player_type *creature_ptr, rc_type *rc_ptr)
     default:
         break;
     }
-}
\ No newline at end of file
+}
index e49591c..91f86d1 100644 (file)
@@ -10,10 +10,6 @@ rc_type *initialize_rc_type(player_type *creature_ptr, rc_type *rc_ptr)
     rc_ptr->cast = FALSE;
     rc_ptr->is_warrior = (creature_ptr->pclass == CLASS_WARRIOR || creature_ptr->pclass == CLASS_BERSERKER);
     rc_ptr->menu_line = use_menu ? 1 : 0;
-    for (int i = 0; i < MAX_RACIAL_POWERS; i++) {
-        strcpy(rc_ptr->power_desc[i].racial_name, "");
-        rc_ptr->power_desc[i].number = 0;
-    }
 
     return rc_ptr;
 }
index cc75073..5b3acf2 100644 (file)
@@ -1,34 +1,40 @@
 #pragma once
 
 #include "system/angband.h"
+#include <string>
+#include <array>
 
 #define MAX_RACIAL_POWERS 36
 
-/* Racial Power Info / レイシャル・パワー情報の構造体定義 */
-typedef struct rpi_type {
-    GAME_TEXT racial_name[MAX_NLEN];
-    PLAYER_LEVEL min_level; //!<体得レベル
-    int cost;
-    int stat;
-    PERCENTAGE fail;
-    int number;
-    int racial_cost;
-} rpi_type;
+/*!
+ * レイシャル/クラスパワー定義構造体
+ */
+struct rpi_type {
+    std::string racial_name{};
+    PLAYER_LEVEL min_level{}; //!<体得レベル
+    int cost{};
+    int stat{};
+    PERCENTAGE fail{};
+    int number{};
+    int racial_cost{};
+};
 
-// Racial Command.
-typedef struct rc_type {
-    rpi_type power_desc[MAX_RACIAL_POWERS];
-    int num;
-    COMMAND_CODE command_code;
-    int ask;
-    PLAYER_LEVEL lvl;
-    bool flag;
-    bool redraw;
-    bool cast;
-    bool is_warrior;
-    char choice;
-    char out_val[160];
-    int menu_line;
-} rc_type;
+/*!
+ * レイシャル/クラスパワー管理構造体
+ */
+struct rc_type {
+    std::array<rpi_type, MAX_RACIAL_POWERS> power_desc{};
+    int num{};
+    COMMAND_CODE command_code{};
+    int ask{};
+    PLAYER_LEVEL lvl{};
+    bool flag{};
+    bool redraw{};
+    bool cast{};
+    bool is_warrior{};
+    char choice{};
+    char out_val[160]{};
+    int menu_line{};
+};
 
 rc_type *initialize_rc_type(player_type *creature_ptr, rc_type *rc_ptr);