OSDN Git Service

[Refactor] #37353 構造体 dungeon_info_type を他の慣例に従い dungeon_type に改名。 / Rename dungeon_i...
[hengband/hengband.git] / src / init2.c
index 5dbea3d..a672898 100644 (file)
@@ -36,6 +36,8 @@
 
 #include "init.h"
 #include "trap.h"
+#include "rooms.h"
+#include "store.h"
 
 #ifndef MACINTOSH
 #ifdef CHECK_MODIFICATION_TIME
@@ -181,7 +183,7 @@ void init_file_paths(char *path)
        /* Allow "fat binary" usage with NeXT */
        if (TRUE)
        {
-               cptr next = NULL;
+               concptr next = NULL;
 
 # if defined(m68k)
                next = "m68k";
@@ -230,7 +232,7 @@ int error_line; /*!< データ読み込み/初期化時に汎用的にエラー
 /*!
  * エラーメッセージの名称定義 / Standard error message text
  */
-cptr err_str[PARSE_ERROR_MAX] =
+concptr err_str[PARSE_ERROR_MAX] =
 {
        NULL,
 #ifdef JP
@@ -285,7 +287,7 @@ header m_head; /*!< プレイヤー職業魔法情報のヘッダ構造体 */
  * @param template_file ファイル名
  * @return テキストの方が新しいか、rawファイルがなく更新の必要がある場合-1、更新の必要がない場合0。
  */
-static errr check_modification_date(int fd, cptr template_file)
+static errr check_modification_date(int fd, concptr template_file)
 {
        char buf[1024];
 
@@ -437,7 +439,7 @@ static void init_header(header *head, IDX num, int len)
  * Note that we let each entry have a unique "name" and "text" string,
  * even if the string happens to be empty (everyone has a unique '\0').
  */
-static errr init_info(cptr filename, header *head,
+static errr init_info(concptr filename, header *head,
                      void **info, char **name, char **text, char **tag)
 {
        int fd;
@@ -520,7 +522,7 @@ static errr init_info(cptr filename, header *head,
                /* Errors */
                if (err)
                {
-                       cptr oops;
+                       concptr oops;
 
 #ifdef JP
                        /* Error string */
@@ -582,7 +584,7 @@ static errr init_info(cptr filename, header *head,
                if (fd >= 0)
                {
                        /* Dump it */
-                       fd_write(fd, (cptr)(head), head->head_size);
+                       fd_write(fd, (concptr)(head), head->head_size);
 
                        /* Dump the "*_info" array */
                        fd_write(fd, head->info_ptr, head->info_size);
@@ -773,7 +775,7 @@ static errr init_r_info(void)
 static errr init_d_info(void)
 {
        /* Init the header */
-       init_header(&d_head, max_d_idx, sizeof(dungeon_info_type));
+       init_header(&d_head, max_d_idx, sizeof(dungeon_type));
 
 #ifdef ALLOW_TEMPLATES
 
@@ -857,562 +859,6 @@ static errr init_m_info(void)
 
 
 
-/*** Initialize others ***/
-
-/*!
- * 店舗で販売するオブジェクトを定義する / Hack -- Objects sold in the stores -- by tval/sval pair.
- */
-static byte store_table[MAX_STORES][STORE_CHOICES][2] =
-{
-       {
-               /* General Store */
-
-               { TV_FOOD, SV_FOOD_RATION },
-               { TV_FOOD, SV_FOOD_RATION },
-               { TV_FOOD, SV_FOOD_RATION },
-               { TV_FOOD, SV_FOOD_RATION },
-
-               { TV_FOOD, SV_FOOD_RATION },
-               { TV_FOOD, SV_FOOD_BISCUIT },
-               { TV_FOOD, SV_FOOD_JERKY },
-               { TV_FOOD, SV_FOOD_JERKY },
-
-               { TV_FOOD, SV_FOOD_PINT_OF_WINE },
-               { TV_FOOD, SV_FOOD_PINT_OF_ALE },
-               { TV_LITE, SV_LITE_TORCH },
-               { TV_LITE, SV_LITE_TORCH },
-
-               { TV_LITE, SV_LITE_TORCH },
-               { TV_LITE, SV_LITE_TORCH },
-               { TV_LITE, SV_LITE_LANTERN },
-               { TV_LITE, SV_LITE_LANTERN },
-
-               { TV_FLASK, 0 },
-               { TV_FLASK, 0 },
-               { TV_FLASK, 0 },
-               { TV_FLASK, 0 },
-
-               { TV_FLASK, 0 },
-               { TV_FLASK, 0 },
-               { TV_SPIKE, 0 },
-               { TV_SPIKE, 0 },
-
-               { TV_SHOT, SV_AMMO_NORMAL },
-               { TV_ARROW, SV_AMMO_NORMAL },
-               { TV_BOLT, SV_AMMO_NORMAL },
-               { TV_DIGGING, SV_SHOVEL },
-
-               { TV_DIGGING, SV_PICK },
-               { TV_CLOAK, SV_CLOAK },
-               { TV_CLOAK, SV_CLOAK },
-               { TV_CLOAK, SV_FUR_CLOAK },
-
-               { TV_FOOD, SV_FOOD_RATION },
-               { TV_FOOD, SV_FOOD_RATION },
-               { TV_FOOD, SV_FOOD_RATION },
-               { TV_FOOD, SV_FOOD_RATION },
-
-               { TV_POTION, SV_POTION_WATER },
-               { TV_POTION, SV_POTION_WATER },
-               { TV_LITE, SV_LITE_LANTERN },
-               { TV_LITE, SV_LITE_LANTERN },
-
-               { TV_FOOD, SV_FOOD_WAYBREAD },
-               { TV_FOOD, SV_FOOD_WAYBREAD },
-               { TV_CAPTURE, 0 },
-               { TV_FIGURINE, 0 },
-
-               { TV_SHOT, SV_AMMO_NORMAL },
-               { TV_ARROW, SV_AMMO_NORMAL },
-               { TV_BOLT, SV_AMMO_NORMAL },
-               { TV_DIGGING, SV_SHOVEL }
-       },
-
-       {
-               /* Armoury */
-
-               { TV_BOOTS, SV_PAIR_OF_SOFT_LEATHER_BOOTS },
-               { TV_BOOTS, SV_PAIR_OF_SOFT_LEATHER_BOOTS },
-               { TV_BOOTS, SV_PAIR_OF_HARD_LEATHER_BOOTS },
-               { TV_BOOTS, SV_PAIR_OF_HARD_LEATHER_BOOTS },
-
-               { TV_HELM, SV_HARD_LEATHER_CAP },
-               { TV_HELM, SV_HARD_LEATHER_CAP },
-               { TV_HELM, SV_METAL_CAP },
-               { TV_HELM, SV_IRON_HELM },
-
-               { TV_SOFT_ARMOR, SV_ROBE },
-               { TV_SOFT_ARMOR, SV_ROBE },
-               { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-               { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-
-               { TV_SOFT_ARMOR, SV_HARD_LEATHER_ARMOR },
-               { TV_SOFT_ARMOR, SV_HARD_LEATHER_ARMOR },
-               { TV_SOFT_ARMOR, SV_HARD_STUDDED_LEATHER },
-               { TV_SOFT_ARMOR, SV_HARD_STUDDED_LEATHER },
-
-               { TV_SOFT_ARMOR, SV_RHINO_HIDE_ARMOR },
-               { TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL },
-               { TV_HARD_ARMOR, SV_METAL_SCALE_MAIL },
-               { TV_HARD_ARMOR, SV_CHAIN_MAIL },
-
-               { TV_HARD_ARMOR, SV_DOUBLE_RING_MAIL },
-               { TV_HARD_ARMOR, SV_AUGMENTED_CHAIN_MAIL },
-               { TV_HARD_ARMOR, SV_BAR_CHAIN_MAIL },
-               { TV_HARD_ARMOR, SV_DOUBLE_CHAIN_MAIL },
-
-               { TV_HARD_ARMOR, SV_METAL_BRIGANDINE_ARMOUR },
-               { TV_HARD_ARMOR, SV_SPLINT_MAIL },
-               { TV_GLOVES, SV_SET_OF_LEATHER_GLOVES },
-               { TV_GLOVES, SV_SET_OF_LEATHER_GLOVES },
-
-               { TV_GLOVES, SV_SET_OF_GAUNTLETS },
-               { TV_SHIELD, SV_SMALL_LEATHER_SHIELD },
-               { TV_SHIELD, SV_LARGE_LEATHER_SHIELD },
-               { TV_SHIELD, SV_SMALL_METAL_SHIELD },
-
-               { TV_BOOTS, SV_PAIR_OF_HARD_LEATHER_BOOTS },
-               { TV_BOOTS, SV_PAIR_OF_HARD_LEATHER_BOOTS },
-               { TV_HELM, SV_HARD_LEATHER_CAP },
-               { TV_HELM, SV_HARD_LEATHER_CAP },
-
-               { TV_SOFT_ARMOR, SV_ROBE },
-               { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-               { TV_SOFT_ARMOR, SV_SOFT_LEATHER_ARMOR },
-               { TV_SOFT_ARMOR, SV_HARD_LEATHER_ARMOR },
-
-               { TV_SOFT_ARMOR, SV_LEATHER_JACK },
-               { TV_HARD_ARMOR, SV_METAL_SCALE_MAIL },
-               { TV_HARD_ARMOR, SV_CHAIN_MAIL },
-               { TV_HARD_ARMOR, SV_CHAIN_MAIL },
-
-               { TV_GLOVES, SV_SET_OF_LEATHER_GLOVES },
-               { TV_GLOVES, SV_SET_OF_GAUNTLETS },
-               { TV_SHIELD, SV_SMALL_LEATHER_SHIELD },
-               { TV_SHIELD, SV_SMALL_LEATHER_SHIELD }
-       },
-
-       {
-               /* Weaponsmith */
-
-               { TV_SWORD, SV_DAGGER },
-               { TV_SWORD, SV_MAIN_GAUCHE },
-               { TV_SWORD, SV_RAPIER },
-               { TV_SWORD, SV_SMALL_SWORD },
-
-               { TV_SWORD, SV_SHORT_SWORD },
-               { TV_SWORD, SV_SABRE },
-               { TV_SWORD, SV_CUTLASS },
-               { TV_SWORD, SV_TULWAR },
-
-               { TV_SWORD, SV_BROAD_SWORD },
-               { TV_SWORD, SV_LONG_SWORD },
-               { TV_SWORD, SV_SCIMITAR },
-               { TV_SWORD, SV_KATANA },
-
-               { TV_SWORD, SV_BASTARD_SWORD },
-               { TV_POLEARM, SV_SPEAR },
-               { TV_POLEARM, SV_AWL_PIKE },
-               { TV_POLEARM, SV_TRIDENT },
-
-               { TV_POLEARM, SV_PIKE },
-               { TV_POLEARM, SV_BEAKED_AXE },
-               { TV_POLEARM, SV_BROAD_AXE },
-               { TV_POLEARM, SV_LANCE },
-
-               { TV_POLEARM, SV_BATTLE_AXE },
-               { TV_POLEARM, SV_HATCHET },
-               { TV_BOW, SV_SLING },
-               { TV_BOW, SV_SHORT_BOW },
-
-               { TV_BOW, SV_LIGHT_XBOW },
-               { TV_SHOT, SV_AMMO_NORMAL },
-               { TV_SHOT, SV_AMMO_NORMAL },
-               { TV_ARROW, SV_AMMO_NORMAL },
-
-               { TV_ARROW, SV_AMMO_NORMAL },
-               { TV_BOLT, SV_AMMO_NORMAL },
-               { TV_BOLT, SV_AMMO_NORMAL },
-               { TV_BOW, SV_LIGHT_XBOW },
-
-               { TV_ARROW, SV_AMMO_NORMAL },
-               { TV_BOLT, SV_AMMO_NORMAL },
-               { TV_BOW, SV_SHORT_BOW },
-               { TV_BOW, SV_LIGHT_XBOW },
-
-               { TV_SWORD, SV_DAGGER },
-               { TV_SWORD, SV_TANTO },
-               { TV_SWORD, SV_RAPIER },
-               { TV_SWORD, SV_SMALL_SWORD },
-
-               { TV_SWORD, SV_SHORT_SWORD },
-               { TV_SWORD, SV_LONG_SWORD },
-               { TV_SWORD, SV_SCIMITAR },
-               { TV_SWORD, SV_BROAD_SWORD },
-
-               { TV_HISSATSU_BOOK, 0 },
-               { TV_HISSATSU_BOOK, 0 },
-               { TV_HISSATSU_BOOK, 1 },
-               { TV_HISSATSU_BOOK, 1 },
-       },
-
-       {
-               /* Temple */
-
-               { TV_HAFTED, SV_NUNCHAKU },
-               { TV_HAFTED, SV_QUARTERSTAFF },
-               { TV_HAFTED, SV_MACE },
-               { TV_HAFTED, SV_BO_STAFF },
-
-               { TV_HAFTED, SV_WAR_HAMMER },
-               { TV_HAFTED, SV_WAR_HAMMER },
-               { TV_HAFTED, SV_MORNING_STAR },
-               { TV_HAFTED, SV_FLAIL },
-
-               { TV_HAFTED, SV_LEAD_FILLED_MACE },
-               { TV_SCROLL, SV_SCROLL_REMOVE_CURSE },
-               { TV_SCROLL, SV_SCROLL_BLESSING },
-               { TV_SCROLL, SV_SCROLL_HOLY_CHANT },
-
-               { TV_POTION, SV_POTION_HEROISM },
-               { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
-               { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
-               { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
-
-               { TV_POTION, SV_POTION_CURE_LIGHT },
-               { TV_POTION, SV_POTION_CURE_SERIOUS },
-               { TV_POTION, SV_POTION_CURE_SERIOUS },
-               { TV_POTION, SV_POTION_CURE_CRITICAL },
-
-               { TV_POTION, SV_POTION_CURE_CRITICAL },
-               { TV_POTION, SV_POTION_RESTORE_EXP },
-               { TV_POTION, SV_POTION_RESTORE_EXP },
-               { TV_POTION, SV_POTION_RESTORE_EXP },
-
-               { TV_LIFE_BOOK, 0 },
-               { TV_LIFE_BOOK, 0 },
-               { TV_LIFE_BOOK, 1 },
-               { TV_LIFE_BOOK, 1 },
-
-               { TV_CRUSADE_BOOK, 0 },
-               { TV_CRUSADE_BOOK, 0 },
-               { TV_CRUSADE_BOOK, 1 },
-               { TV_CRUSADE_BOOK, 1 },
-
-               { TV_HAFTED, SV_WHIP },
-               { TV_HAFTED, SV_MACE },
-               { TV_HAFTED, SV_BALL_AND_CHAIN },
-               { TV_HAFTED, SV_WAR_HAMMER },
-
-               { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
-               { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
-               { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
-               { TV_POTION, SV_POTION_CURE_CRITICAL },
-
-               { TV_POTION, SV_POTION_CURE_CRITICAL },
-               { TV_POTION, SV_POTION_RESTORE_EXP },
-
-               { TV_FIGURINE, 0 },
-               { TV_STATUE, SV_ANY },
-
-               { TV_SCROLL, SV_SCROLL_REMOVE_CURSE },
-               { TV_SCROLL, SV_SCROLL_REMOVE_CURSE },
-               { TV_SCROLL, SV_SCROLL_STAR_REMOVE_CURSE },
-               { TV_SCROLL, SV_SCROLL_STAR_REMOVE_CURSE }
-       },
-
-       {
-               /* Alchemy shop */
-
-               { TV_SCROLL, SV_SCROLL_ENCHANT_WEAPON_TO_HIT },
-               { TV_SCROLL, SV_SCROLL_ENCHANT_WEAPON_TO_DAM },
-               { TV_SCROLL, SV_SCROLL_ENCHANT_ARMOR },
-               { TV_SCROLL, SV_SCROLL_IDENTIFY },
-
-               { TV_SCROLL, SV_SCROLL_IDENTIFY },
-               { TV_SCROLL, SV_SCROLL_IDENTIFY },
-               { TV_SCROLL, SV_SCROLL_IDENTIFY },
-               { TV_SCROLL, SV_SCROLL_LIGHT },
-
-               { TV_SCROLL, SV_SCROLL_PHASE_DOOR },
-               { TV_SCROLL, SV_SCROLL_PHASE_DOOR },
-               { TV_SCROLL, SV_SCROLL_TELEPORT },
-               { TV_SCROLL, SV_SCROLL_MONSTER_CONFUSION },
-
-               { TV_SCROLL, SV_SCROLL_MAPPING },
-               { TV_SCROLL, SV_SCROLL_DETECT_GOLD },
-               { TV_SCROLL, SV_SCROLL_DETECT_ITEM },
-               { TV_SCROLL, SV_SCROLL_DETECT_TRAP },
-
-               { TV_SCROLL, SV_SCROLL_DETECT_INVIS },
-               { TV_SCROLL, SV_SCROLL_RECHARGING },
-               { TV_SCROLL, SV_SCROLL_TELEPORT },
-               { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
-
-               { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
-               { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
-               { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
-               { TV_SCROLL, SV_SCROLL_TELEPORT },
-
-               { TV_SCROLL, SV_SCROLL_TELEPORT },
-               { TV_POTION, SV_POTION_RES_STR },
-               { TV_POTION, SV_POTION_RES_INT },
-               { TV_POTION, SV_POTION_RES_WIS },
-
-               { TV_POTION, SV_POTION_RES_DEX },
-               { TV_POTION, SV_POTION_RES_CON },
-               { TV_POTION, SV_POTION_RES_CHR },
-               { TV_SCROLL, SV_SCROLL_IDENTIFY },
-
-               { TV_SCROLL, SV_SCROLL_IDENTIFY },
-               { TV_SCROLL, SV_SCROLL_STAR_IDENTIFY },  /* Yep, occasionally! */
-               { TV_SCROLL, SV_SCROLL_STAR_IDENTIFY },
-               { TV_SCROLL, SV_SCROLL_LIGHT },
-
-               { TV_POTION, SV_POTION_RES_STR },
-               { TV_POTION, SV_POTION_RES_INT },
-               { TV_POTION, SV_POTION_RES_WIS },
-               { TV_POTION, SV_POTION_RES_DEX },
-
-               { TV_POTION, SV_POTION_RES_CON },
-               { TV_POTION, SV_POTION_RES_CHR },
-               { TV_SCROLL, SV_SCROLL_ENCHANT_ARMOR },
-               { TV_SCROLL, SV_SCROLL_ENCHANT_ARMOR },
-
-               { TV_SCROLL, SV_SCROLL_RECHARGING },
-               { TV_SCROLL, SV_SCROLL_PHASE_DOOR },
-               { TV_SCROLL, SV_SCROLL_ENCHANT_WEAPON_TO_HIT },
-               { TV_SCROLL, SV_SCROLL_ENCHANT_WEAPON_TO_DAM },
-
-       },
-
-       {
-               /* Magic-User store */
-
-               { TV_RING, SV_RING_PROTECTION },
-               { TV_RING, SV_RING_LEVITATION_FALL },
-               { TV_RING, SV_RING_PROTECTION },
-               { TV_RING, SV_RING_RESIST_FIRE },
-
-               { TV_RING, SV_RING_RESIST_COLD },
-               { TV_AMULET, SV_AMULET_CHARISMA },
-               { TV_RING, SV_RING_WARNING },
-               { TV_AMULET, SV_AMULET_RESIST_ACID },
-
-               { TV_AMULET, SV_AMULET_SEARCHING },
-               { TV_WAND, SV_WAND_SLOW_MONSTER },
-               { TV_WAND, SV_WAND_CONFUSE_MONSTER },
-               { TV_WAND, SV_WAND_SLEEP_MONSTER },
-
-               { TV_WAND, SV_WAND_MAGIC_MISSILE },
-               { TV_WAND, SV_WAND_STINKING_CLOUD },
-               { TV_WAND, SV_WAND_WONDER },
-               { TV_WAND, SV_WAND_DISARMING },
-
-               { TV_STAFF, SV_STAFF_LITE },
-               { TV_STAFF, SV_STAFF_MAPPING },
-               { TV_STAFF, SV_STAFF_DETECT_TRAP },
-               { TV_STAFF, SV_STAFF_DETECT_DOOR },
-
-               { TV_STAFF, SV_STAFF_DETECT_GOLD },
-               { TV_STAFF, SV_STAFF_DETECT_ITEM },
-               { TV_STAFF, SV_STAFF_DETECT_INVIS },
-               { TV_STAFF, SV_STAFF_DETECT_EVIL },
-
-               { TV_STAFF, SV_STAFF_TELEPORTATION },
-               { TV_STAFF, SV_STAFF_TELEPORTATION },
-               { TV_STAFF, SV_STAFF_TELEPORTATION },
-               { TV_STAFF, SV_STAFF_TELEPORTATION },
-
-               { TV_STAFF, SV_STAFF_IDENTIFY },
-               { TV_STAFF, SV_STAFF_IDENTIFY },
-               { TV_STAFF, SV_STAFF_IDENTIFY },
-
-               { TV_STAFF, SV_STAFF_IDENTIFY },
-               { TV_STAFF, SV_STAFF_REMOVE_CURSE },
-               { TV_STAFF, SV_STAFF_CURE_LIGHT },
-               { TV_STAFF, SV_STAFF_PROBING },
-
-               { TV_FIGURINE, 0 },
-
-               { TV_SORCERY_BOOK, 0 },
-               { TV_SORCERY_BOOK, 0 },
-               { TV_SORCERY_BOOK, 1 },
-               { TV_SORCERY_BOOK, 1 },
-
-               { TV_ARCANE_BOOK, 0 },
-               { TV_ARCANE_BOOK, 0 },
-               { TV_ARCANE_BOOK, 1 },
-               { TV_ARCANE_BOOK, 1 },
-
-               { TV_ARCANE_BOOK, 2 },
-               { TV_ARCANE_BOOK, 2 },
-               { TV_ARCANE_BOOK, 3 },
-               { TV_ARCANE_BOOK, 3 },
-
-       },
-
-       {
-               /* Black Market (unused) */
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 }
-       },
-
-       {
-               /* Home (unused) */
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 }
-       },
-
-       {
-               /* Bookstore */
-               { TV_SORCERY_BOOK, 0 },
-               { TV_SORCERY_BOOK, 0 },
-               { TV_SORCERY_BOOK, 1 },
-               { TV_SORCERY_BOOK, 1 },
-
-               { TV_NATURE_BOOK, 0 },
-               { TV_NATURE_BOOK, 0 },
-               { TV_NATURE_BOOK, 1 },
-               { TV_NATURE_BOOK, 1 },
-
-               { TV_CHAOS_BOOK, 0 },
-               { TV_CHAOS_BOOK, 0 },
-               { TV_CHAOS_BOOK, 1 },
-               { TV_CHAOS_BOOK, 1 },
-
-               { TV_DEATH_BOOK, 0 },
-               { TV_DEATH_BOOK, 0 },
-               { TV_DEATH_BOOK, 1 },
-               { TV_DEATH_BOOK, 1 },
-
-               { TV_TRUMP_BOOK, 0 },           /* +16 */
-               { TV_TRUMP_BOOK, 0 },
-               { TV_TRUMP_BOOK, 1 },
-               { TV_TRUMP_BOOK, 1 },
-
-               { TV_ARCANE_BOOK, 0 },
-               { TV_ARCANE_BOOK, 1 },
-               { TV_ARCANE_BOOK, 2 },
-               { TV_ARCANE_BOOK, 3 },
-
-               { TV_CRAFT_BOOK, 0 },
-               { TV_CRAFT_BOOK, 0 },
-               { TV_CRAFT_BOOK, 1 },
-               { TV_CRAFT_BOOK, 1 },
-
-               { TV_DAEMON_BOOK, 0 },
-               { TV_DAEMON_BOOK, 0 },
-               { TV_DAEMON_BOOK, 1 },
-               { TV_DAEMON_BOOK, 1 },
-
-               { TV_MUSIC_BOOK, 0 },
-               { TV_MUSIC_BOOK, 0 },
-               { TV_MUSIC_BOOK, 1 },
-               { TV_MUSIC_BOOK, 1 },
-
-               { TV_HEX_BOOK, 0 },
-               { TV_HEX_BOOK, 0 },
-               { TV_HEX_BOOK, 1 },
-               { TV_HEX_BOOK, 1 },
-       },
-
-       {
-               /* Museum (unused) */
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 },
-               { 0, 0 }
-       }
-};
 
 
 /*!
@@ -1477,8 +923,6 @@ static errr init_towns(void)
                {
                        st_ptr->stock_size = STORE_INVEN_MAX;
                }
-
-
                        /* Allocate the stock */
                        C_MAKE(st_ptr->stock, st_ptr->stock_size, object_type);
 
@@ -1597,7 +1041,7 @@ static bool feat_tag_is_not_found = FALSE;
  * Initialize quest array
  * @return 地形ID
  */
-s16b f_tag_to_index_in_init(cptr str)
+s16b f_tag_to_index_in_init(concptr str)
 {
        FEAT_IDX feat = f_tag_to_index(str);
 
@@ -1737,6 +1181,14 @@ static errr init_feat_variables(void)
        feat_shallow_water = f_tag_to_index_in_init("SHALLOW_WATER");
        feat_deep_lava = f_tag_to_index_in_init("DEEP_LAVA");
        feat_shallow_lava = f_tag_to_index_in_init("SHALLOW_LAVA");
+       feat_heavy_cold_zone = f_tag_to_index_in_init("HEAVY_COLD_ZONE");
+       feat_cold_zone = f_tag_to_index_in_init("COLD_ZONE");
+       feat_heavy_electrical_zone = f_tag_to_index_in_init("HEAVY_ELECTRICAL_ZONE");
+       feat_electrical_zone = f_tag_to_index_in_init("ELECTRICAL_ZONE");
+       feat_deep_acid_puddle = f_tag_to_index_in_init("DEEP_ACID_PUDDLE");
+       feat_shallow_acid_puddle = f_tag_to_index_in_init("SHALLOW_ACID_PUDDLE");
+       feat_deep_poisonous_puddle = f_tag_to_index_in_init("DEEP_POISONOUS_PUDDLE");
+       feat_shallow_poisonous_puddle = f_tag_to_index_in_init("SHALLOW_POISONOUS_PUDDLE");
        feat_dirt = f_tag_to_index_in_init("DIRT");
        feat_grass = f_tag_to_index_in_init("GRASS");
        feat_flower = f_tag_to_index_in_init("FLOWER");
@@ -1793,8 +1245,8 @@ static errr init_other(void)
        /*** Prepare the various "bizarre" arrays ***/
 
        /* Macro variables */
-       C_MAKE(macro__pat, MACRO_MAX, cptr);
-       C_MAKE(macro__act, MACRO_MAX, cptr);
+       C_MAKE(macro__pat, MACRO_MAX, concptr);
+       C_MAKE(macro__act, MACRO_MAX, concptr);
        C_MAKE(macro__cmd, MACRO_MAX, bool);
 
        /* Macro action buffer */
@@ -1867,7 +1319,7 @@ static errr init_other(void)
         *  Window 1 : Display messages
         *  Window 2 : Display inven/equip
         */
-       window_flag[1] = 1L << 6;
+       window_flag[1] = 1L << A_MAX;
        window_flag[2] = 1L << 0;
 
 
@@ -2161,7 +1613,7 @@ static errr init_alloc(void)
  * Hack -- take notes on line 23
  * @return なし
  */
-static void note(cptr str)
+static void note(concptr str)
 {
        Term_erase(0, 23, 255);
        Term_putstr(20, 23, -1, TERM_WHITE, str);
@@ -2176,12 +1628,12 @@ static void note(cptr str)
  * @return なし
  * @note
  * <pre>
- * XXX XXX XXX This function is "messy" because various things
+ * This function is "messy" because various things
  * may or may not be initialized, but the "plog()" and "quit()"
  * functions are "supposed" to work under any conditions.
  * </pre>
  */
-static void init_angband_aux(cptr why)
+static void init_angband_aux(concptr why)
 {
        /* Why */
        plog(why);
@@ -2221,7 +1673,7 @@ static void init_angband_aux(cptr why)
  * @return なし
  * @note
  * <pre>
- * XXX XXX XXX This function is "messy" because various things
+ * This function is "messy" because various things
  * may or may not be initialized, but the "plog()" and "quit()"
  * functions are "supposed" to work under any conditions.
  * Verify some files, display the "news.txt" file, create
@@ -2296,8 +1748,6 @@ void init_angband(void)
 
 
        /*** Display the "news" file ***/
-
-       /* Clear screen */
        Term_clear();
 
        /* Build the filename */
@@ -2499,7 +1949,7 @@ static void put_title(void)
  * @brief サムチェック情報を出力 / Get check sum in string form
  * @return サムチェック情報の文字列
  */
-cptr get_check_sum(void)
+concptr get_check_sum(void)
 {
        return format("%02x%02x%02x%02x%02x%02x%02x%02x%02x", 
                      f_head.v_extra,