OSDN Git Service

[Refactor] #1766 Changed ItemPrimaryType from enum to enum class
[hengbandforosx/hengbandosx.git] / src / birth / initial-equipments-table.cpp
index 3ab6d4b..82878d3 100644 (file)
  * Each player starts out with a few items, given as tval/sval pairs.\n
  * In addition, he always has some food and a few torches.\n
  */
-byte player_init[MAX_CLASS][3][2] = {
-    { /* Warrior */
-        { TV_RING, SV_RING_RES_FEAR },
-        { TV_HARD_ARMOR, SV_CHAIN_MAIL },
-        { TV_SWORD, SV_BROAD_SWORD } },
-
-    { /* Mage */
-        { TV_SORCERY_BOOK, 0 },
-        { TV_DEATH_BOOK, 0 },
-        { TV_SWORD, SV_DAGGER } },
-
-    { /* Priest */
-        { TV_SORCERY_BOOK, 0 },
-        { TV_DEATH_BOOK, 0 },
-        { TV_HAFTED, SV_MACE } },
-
-    { /* Rogue */
-        { TV_SORCERY_BOOK, 0 },
-        { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-        { TV_SWORD, SV_DAGGER } },
-
-    { /* Ranger */
-        { TV_NATURE_BOOK, 0 },
-        { TV_DEATH_BOOK, 0 },
-        { TV_SWORD, SV_DAGGER } },
-
-    { /* Paladin */
-        { TV_SORCERY_BOOK, 0 },
-        { TV_SCROLL, SV_SCROLL_PROTECTION_FROM_EVIL },
-        { TV_SWORD, SV_BROAD_SWORD } },
-
-    { /* Warrior-Mage */
-        { TV_SORCERY_BOOK, 0 },
-        { TV_DEATH_BOOK, 0 },
-        { TV_SWORD, SV_SHORT_SWORD } },
-
-    { /* Chaos Warrior */
-        { TV_SORCERY_BOOK, 0 },
-        { TV_HARD_ARMOR, SV_METAL_SCALE_MAIL },
-        { TV_SWORD, SV_BROAD_SWORD } },
-
-    { /* Monk */
-        { TV_SORCERY_BOOK, 0 },
-        { TV_POTION, SV_POTION_SPEED },
-        { TV_POTION, SV_POTION_HEROISM } },
-
-    { /* Mindcrafter */
-        { TV_POTION, SV_POTION_SPEED },
-        { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-        { TV_SWORD, SV_SMALL_SWORD } },
-
-    { /* High Mage */
-        { TV_SORCERY_BOOK, 0 },
-        { TV_RING, SV_RING_SUSTAIN_INT },
-        { TV_SWORD, SV_DAGGER } },
-
-    { /* Tourist */
-        { TV_FOOD, SV_FOOD_JERKY },
-        { TV_SCROLL, SV_SCROLL_MAPPING },
-        { TV_BOW, SV_SLING } },
-
-    { /* Imitator */
-        { TV_POTION, SV_POTION_SPEED },
-        { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-        { TV_SWORD, SV_SHORT_SWORD } },
-
-    { /* Beastmaster */
-        { TV_TRUMP_BOOK, 0 },
-        { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-        { TV_POLEARM, SV_SPEAR } },
-
-    { /* Sorcerer */
-        { TV_HAFTED, SV_WIZSTAFF },
-        { TV_RING, SV_RING_SUSTAIN_INT },
-        { TV_WAND, SV_WAND_MAGIC_MISSILE } },
+std::vector<std::vector<std::tuple<ItemPrimaryType, byte>>> player_init = {
+    {
+        /* Warrior */
+        std::make_tuple(ItemPrimaryType::TV_RING, SV_RING_RES_FEAR),
+        std::make_tuple(ItemPrimaryType::TV_HARD_ARMOR, SV_CHAIN_MAIL),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_BROAD_SWORD),
+    },
+
+    {
+        /* Mage */
+        std::make_tuple(ItemPrimaryType::TV_SORCERY_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_DEATH_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_DAGGER),
+    },
+
+    {
+        /* Priest */
+        std::make_tuple(ItemPrimaryType::TV_SORCERY_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_DEATH_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_HAFTED, SV_MACE),
+    },
+
+    {
+        /* Rogue */
+        std::make_tuple(ItemPrimaryType::TV_SORCERY_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_DAGGER),
+    },
+
+    {
+        /* Ranger */
+        std::make_tuple(ItemPrimaryType::TV_NATURE_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_DEATH_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_DAGGER),
+    },
+
+    {
+        /* Paladin */
+        std::make_tuple(ItemPrimaryType::TV_SORCERY_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_SCROLL, SV_SCROLL_PROTECTION_FROM_EVIL),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_BROAD_SWORD),
+    },
+
+    {
+        /* Warrior-Mage */
+        std::make_tuple(ItemPrimaryType::TV_SORCERY_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_DEATH_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_SHORT_SWORD),
+    },
+
+    {
+        /* Chaos Warrior */
+        std::make_tuple(ItemPrimaryType::TV_SORCERY_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_HARD_ARMOR, SV_METAL_SCALE_MAIL),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_BROAD_SWORD),
+    },
+
+    {
+        /* Monk */
+        std::make_tuple(ItemPrimaryType::TV_SORCERY_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_POTION, SV_POTION_SPEED),
+        std::make_tuple(ItemPrimaryType::TV_POTION, SV_POTION_HEROISM),
+    },
+
+    {
+        /* Mindcrafter */
+        std::make_tuple(ItemPrimaryType::TV_POTION, SV_POTION_SPEED),
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_SMALL_SWORD),
+    },
+
+    {
+        /* High Mage */
+        std::make_tuple(ItemPrimaryType::TV_SORCERY_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_RING, SV_RING_SUSTAIN_INT),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_DAGGER),
+    },
+
+    {
+        /* Tourist */
+        std::make_tuple(ItemPrimaryType::TV_FOOD, SV_FOOD_JERKY),
+        std::make_tuple(ItemPrimaryType::TV_SCROLL, SV_SCROLL_MAPPING),
+        std::make_tuple(ItemPrimaryType::TV_BOW, SV_SLING),
+    },
+
+    {
+        /* Imitator */
+        std::make_tuple(ItemPrimaryType::TV_POTION, SV_POTION_SPEED),
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_SHORT_SWORD),
+    },
+
+    {
+        /* Beastmaster */
+        std::make_tuple(ItemPrimaryType::TV_TRUMP_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR),
+        std::make_tuple(ItemPrimaryType::TV_POLEARM, SV_SPEAR),
+    },
+
+    {
+        /* Sorcerer */
+        std::make_tuple(ItemPrimaryType::TV_HAFTED, SV_WIZSTAFF),
+        std::make_tuple(ItemPrimaryType::TV_RING, SV_RING_SUSTAIN_INT),
+        std::make_tuple(ItemPrimaryType::TV_WAND, SV_WAND_MAGIC_MISSILE),
+    },
 
     {
         /* Archer */
-        { TV_BOW, SV_SHORT_BOW },
-        { TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL },
-        { TV_SWORD, SV_SHORT_SWORD },
+        std::make_tuple(ItemPrimaryType::TV_BOW, SV_SHORT_BOW),
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_SHORT_SWORD),
     },
 
     {
         /* Magic eater */
-        { TV_WAND, SV_WAND_MAGIC_MISSILE },
-        { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-        { TV_SWORD, SV_SHORT_SWORD },
+        std::make_tuple(ItemPrimaryType::TV_WAND, SV_WAND_MAGIC_MISSILE),
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_SHORT_SWORD),
     },
 
     {
         /* Bard */
-        { TV_MUSIC_BOOK, 0 },
-        { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-        { TV_SWORD, SV_SHORT_SWORD },
+        std::make_tuple(ItemPrimaryType::TV_MUSIC_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_SHORT_SWORD),
     },
 
     {
         /* Red Mage */
-        { TV_ARCANE_BOOK, 0 },
-        { TV_SOFT_ARMOR, SV_HARD_LEATHER_ARMOR },
-        { TV_SWORD, SV_SHORT_SWORD },
+        std::make_tuple(ItemPrimaryType::TV_ARCANE_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_HARD_LEATHER_ARMOR),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_SHORT_SWORD),
     },
 
-    { /* Samurai */
-        { TV_HISSATSU_BOOK, 0 },
-        { TV_HARD_ARMOR, SV_CHAIN_MAIL },
-        { TV_SWORD, SV_BROAD_SWORD }
+    {
+        /* Samurai */
+        std::make_tuple(ItemPrimaryType::TV_HISSATSU_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_HARD_ARMOR, SV_CHAIN_MAIL),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_BROAD_SWORD),
     },
 
-    { /* ForceTrainer */
-        { TV_SORCERY_BOOK, 0 },
-        { TV_POTION, SV_POTION_SPEED },
-        { TV_POTION, SV_POTION_RESTORE_MANA }
+    {
+        /* ForceTrainer */
+        std::make_tuple(ItemPrimaryType::TV_SORCERY_BOOK, 0),
+        std::make_tuple(ItemPrimaryType::TV_POTION, SV_POTION_SPEED),
+        std::make_tuple(ItemPrimaryType::TV_POTION, SV_POTION_RESTORE_MANA),
     },
 
-    { /* Blue Mage */
-        { TV_SOFT_ARMOR, SV_ROBE },
-        { TV_WAND, SV_WAND_MAGIC_MISSILE },
-        { TV_SWORD, SV_DAGGER }
+    {
+        /* Blue Mage */
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_ROBE),
+        std::make_tuple(ItemPrimaryType::TV_WAND, SV_WAND_MAGIC_MISSILE),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_DAGGER),
     },
 
-    { /* Cavalry */
-        { TV_BOW, SV_SHORT_BOW },
-        { TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL },
-        { TV_POLEARM, SV_BROAD_SPEAR }
+    {
+        /* Cavalry */
+        std::make_tuple(ItemPrimaryType::TV_BOW, SV_SHORT_BOW),
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL),
+        std::make_tuple(ItemPrimaryType::TV_POLEARM, SV_BROAD_SPEAR),
     },
 
-    { /* Berserker */
-        { TV_POTION, SV_POTION_HEALING },
-        { TV_HARD_ARMOR, SV_AUGMENTED_CHAIN_MAIL },
-        { TV_POLEARM, SV_BROAD_AXE }
+    {
+        /* Berserker */
+        std::make_tuple(ItemPrimaryType::TV_POTION, SV_POTION_HEALING),
+        std::make_tuple(ItemPrimaryType::TV_HARD_ARMOR, SV_AUGMENTED_CHAIN_MAIL),
+        std::make_tuple(ItemPrimaryType::TV_POLEARM, SV_BROAD_AXE),
     },
 
-    { /* Weaponsmith */
-        { TV_RING, SV_RING_RES_FEAR },
-        { TV_HARD_ARMOR, SV_CHAIN_MAIL },
-        { TV_POLEARM, SV_BROAD_AXE }
+    {
+        /* Weaponsmith */
+        std::make_tuple(ItemPrimaryType::TV_RING, SV_RING_RES_FEAR),
+        std::make_tuple(ItemPrimaryType::TV_HARD_ARMOR, SV_CHAIN_MAIL),
+        std::make_tuple(ItemPrimaryType::TV_POLEARM, SV_BROAD_AXE),
     },
 
-    { /* Mirror-Master */
-        { TV_POTION, SV_POTION_SPEED },
-        { TV_RING, SV_RING_SUSTAIN_INT },
-        { TV_SWORD, SV_DAGGER }
+    {
+        /* Mirror-Master */
+        std::make_tuple(ItemPrimaryType::TV_POTION, SV_POTION_SPEED),
+        std::make_tuple(ItemPrimaryType::TV_RING, SV_RING_SUSTAIN_INT),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_DAGGER),
     },
 
-    { /* Ninja */
-        { TV_POTION, SV_POTION_SPEED },
-        { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-        { TV_SWORD, SV_DAGGER }
+    {
+        /* Ninja */
+        std::make_tuple(ItemPrimaryType::TV_POTION, SV_POTION_SPEED),
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_DAGGER),
     },
 
-    { /* Sniper */
-        { TV_BOW, SV_LIGHT_XBOW },
-        { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-        { TV_SWORD, SV_DAGGER }
+    {
+        /* Sniper */
+        std::make_tuple(ItemPrimaryType::TV_BOW, SV_LIGHT_XBOW),
+        std::make_tuple(ItemPrimaryType::TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_DAGGER),
     },
 
-    { /* Elementalist */
-        { TV_POTION, SV_POTION_SPEED },
-        { TV_RING, SV_RING_SUSTAIN_WIS },
-        { TV_SWORD, SV_DAGGER }
+    {
+        /* Elementalist */
+        std::make_tuple(ItemPrimaryType::TV_POTION, SV_POTION_SPEED),
+        std::make_tuple(ItemPrimaryType::TV_RING, SV_RING_SUSTAIN_WIS),
+        std::make_tuple(ItemPrimaryType::TV_SWORD, SV_DAGGER),
     },
 };