OSDN Git Service

#37287 #37353 (2.2.0.89) DEPTHをs32bに再定義、型の置換を継続中。 / Redefine DEPTH to s32b, ongoing...
[hengband/hengband.git] / src / variable.c
index 5ee3525..9c40f1f 100644 (file)
@@ -1,22 +1,22 @@
-/* File: variable.c */
-
-/*
- * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
- *
- * This software may be copied and distributed for educational, research,
- * and not for profit purposes provided that this copyright and statement
- * are included in all such copies.  Other copyrights may also apply.
+/*!
+ * @file variable.c
+ * @brief グローバル変数定義 / Angband variables
+ * @date 2014/10/05
+ * @author
+ * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke<br>
+ * <br>
+ * This software may be copied and distributed for educational, research,<br>
+ * and not for profit purposes provided that this copyright and statement<br>
+ * are included in all such copies.  Other copyrights may also apply.<br>
  */
 
-/* Purpose: Angband variables */
-
 #include "angband.h"
 
-
-/*
+/*!
+ * コピーライト情報 /
  * Hack -- Link a copyright message into the executable
  */
-cptr copyright[5] =
+const cptr copyright[5] =
 {
        "Copyright (c) 1989 James E. Wilson, Robert A. Keoneke",
        "",
@@ -26,22 +26,22 @@ cptr copyright[5] =
 };
 
 
-int max_macrotrigger = 0;
-cptr macro_template = NULL;
-cptr macro_modifier_chr;
-cptr macro_modifier_name[MAX_MACRO_MOD];
-cptr macro_trigger_name[MAX_MACRO_TRIG];
-cptr macro_trigger_keycode[2][MAX_MACRO_TRIG];
+int max_macrotrigger = 0; /*!< 現在登録中のマクロ(トリガー)の数 */
+cptr macro_template = NULL; /*!< Angband設定ファイルのT: タグ情報から読み込んだ長いTコードを処理するために利用する文字列ポインタ */
+cptr macro_modifier_chr; /*!< &x# で指定されるマクロトリガーに関する情報を記録する文字列ポインタ */
+cptr macro_modifier_name[MAX_MACRO_MOD]; /*!< マクロ上で取り扱う特殊キーを文字列上で表現するためのフォーマットを記録した文字列ポインタ配列 */
+cptr macro_trigger_name[MAX_MACRO_TRIG]; /*!< マクロのトリガーコード */
+cptr macro_trigger_keycode[2][MAX_MACRO_TRIG];  /*!< マクロの内容 */
+
+int level_up = 0; /*!< レベルアップの際に遅延してcalc_mana()関数上で上昇量を表示するかどうかの判定フラグ */
 
-/* ¥ì¥Ù¥ë¥¢¥Ã¥×¤Î»þ¤Ë¾å¾ºÎ̤òɽ¼¨¤¹¤ë¤Î¤Ë»È¤¦ */
-int level_up = 0;
 
 /* 
- *  List for auto-picker/destroyer entries
+ * 自動拾い/破壊設定のリストに関する変数 / List for auto-picker/destroyer entries
  */
-int max_autopick = 0;
-int max_max_autopick = 0;
-autopick_type *autopick_list = NULL;
+int max_autopick = 0; /*!< 現在登録している自動拾い/破壊設定の数 */
+int max_max_autopick = 0; /*!< 自動拾い/破壊設定の限界数 */
+autopick_type *autopick_list = NULL; /*!< 自動拾い/破壊設定構造体のポインタ配列 */
 
 /*
  * Savefile version
@@ -71,6 +71,7 @@ u16b sf_saves;                        /* Number of "saves" during this life */
 bool arg_fiddle;                       /* Command arg -- Request fiddle mode */
 bool arg_wizard;                       /* Command arg -- Request wizard mode */
 bool arg_sound;                                /* Command arg -- Request special sounds */
+bool arg_music;                                /* Command arg -- Request special musics */
 byte arg_graphics;                     /* Command arg -- Request graphics mode */
 bool arg_monochrome;           /* Command arg -- Request monochrome mode */
 bool arg_force_original;       /* Command arg -- Request original keyset */
@@ -88,6 +89,8 @@ bool character_saved;         /* The character was just saved to a savefile */
 bool character_icky;           /* The game is in an icky full screen mode */
 bool character_xtra;           /* The game is in an icky startup mode */
 
+bool creating_savefile;                /* New savefile is currently created */
+
 u32b seed_flavor;              /* Hack -- consistent object colors */
 u32b seed_town;                        /* Hack -- consistent town layout */
 
@@ -104,27 +107,28 @@ s16b command_gap = 999;         /* See "object1.c" */
 
 s16b command_new;              /* Command chaining from inven/equip view */
 
-s16b energy_use;               /* Energy use this turn */
-
 bool msg_flag;                 /* Used in msg_print() for "buffering" */
 
 s16b running;                  /* Current counter for running, if any */
 s16b resting;                  /* Current counter for resting, if any */
 
-s16b cur_hgt;                  /* Current dungeon height */
-s16b cur_wid;                  /* Current dungeon width */
-s16b dun_level;                        /* Current dungeon level */
+POSITION cur_hgt;              /* Current dungeon height */
+POSITION cur_wid;              /* Current dungeon width */
+DEPTH dun_level;               /* Current dungeon level */
 s16b num_repro;                        /* Current reproducer count */
-s16b object_level;             /* Current object creation level */
-s16b monster_level;            /* Current monster creation level */
-s16b base_level;        /* Base dungeon level */
-
-s32b turn;                             /* Current game turn */
-s32b dungeon_turn;                     /* Game turn in dungeon */
-s32b old_turn;                 /* Turn when level began (feelings) */
+DEPTH object_level;            /* Current object creation level */
+DEPTH monster_level;   /* Current monster creation level */
+DEPTH base_level;              /* Base dungeon level */
+
+s32b turn;                             /*!< 画面表示上のゲーム時間基準となるターン / Current game turn */
+s32b turn_limit;               /*!< turnの最大値 / Limit of game turn */
+s32b dungeon_turn;                     /*!< NASTY生成の計算に関わる内部ターン値 / Game turn in dungeon */
+s32b dungeon_turn_limit;       /*!< dungeon_turnの最大値 / Limit of game turn in dungeon */
+s32b old_turn;                 /* Turn when level began */
 s32b old_battle;
 
 bool use_sound;                        /* The "sound" mode is enabled */
+bool use_music;                        /* The "music" mode is enabled */
 bool use_graphics;             /* The "graphics" mode is enabled */
 bool use_bigtile = FALSE;
 
@@ -134,6 +138,7 @@ bool inkey_base;            /* See the "inkey()" function */
 bool inkey_xtra;               /* See the "inkey()" function */
 bool inkey_scan;               /* See the "inkey()" function */
 bool inkey_flag;               /* See the "inkey()" function */
+bool get_com_no_macros = FALSE;        /* Expand macros in "get_com" or not */
 
 s16b coin_type;                        /* Hack -- force coin type */
 
@@ -164,7 +169,6 @@ bool multi_rew = FALSE;
 char summon_kin_type;   /* Hack, by Julian Lighton: summon 'relatives' */
 
 int total_friends = 0;
-s32b total_friend_levels = 0;
 s32b friend_align = 0;
 
 int leaving_quest = 0;
@@ -216,6 +220,9 @@ bool view_yellow_lite;      /* Use special colors for torch-lit grids */
 bool view_bright_lite; /* Use special colors for 'viewable' grids */
 bool view_granite_lite;        /* Use special colors for wall grids (slow) */
 bool view_special_lite;        /* Use special colors for floor grids (slow) */
+bool view_perma_grids; /* Map remembers all perma-lit grids */
+bool view_torch_grids; /* Map remembers all torch-lit grids */
+bool view_unsafe_grids;        /* Map marked by detect traps */
 bool view_reduce_view; /* Reduce view-radius in town */
 bool fresh_before;     /* Flush output while continuous command */
 bool fresh_after;      /* Flush output after monster's move */
@@ -239,6 +246,7 @@ bool compress_savefile;     /* Compress messages in savefiles */
 bool abbrev_extra;     /* Describe obj's extra resistances by abbreviation */
 bool abbrev_all;       /* Describe obj's all resistances by abbreviation */
 bool exp_need; /* Show the experience needed for next level */
+bool ignore_unview;    /* Ignore whenever any monster does */
 
 
 /*** Game-Play Options ***/
@@ -246,9 +254,6 @@ bool exp_need;      /* Show the experience needed for next level */
 bool stack_force_notes;        /* Merge inscriptions when stacking */
 bool stack_force_costs;        /* Merge discounts when stacking */
 bool expand_list;      /* Expand the power of the list commands */
-bool view_perma_grids; /* Map remembers all perma-lit grids */
-bool view_torch_grids; /* Map remembers all torch-lit grids */
-bool view_unsafe_grids;        /* Map marked by detect traps */
 bool small_levels;     /* Allow unusually small dungeon levels */
 bool always_small_levels;      /* Always create unusually small dungeon levels */
 bool empty_levels;     /* Allow empty 'arena' levels */
@@ -301,6 +306,11 @@ bool preserve_mode;        /* Preserve artifacts (*) */
 bool autoroller;       /* Allow use of autoroller for stats (*) */
 bool autochara;        /* Autoroll for weight, height and social status */
 bool powerup_home;     /* Increase capacity of your home (*) */
+bool show_ammo_detail; /* Show Description of ammo damage */
+bool show_ammo_no_crit;        /* Show No-crit damage of ammo */
+bool show_ammo_crit_ratio;     /* Show critical ratio of ammo */
+
+
 
 
 /*** Easy Object Auto-Destroyer ***/
@@ -332,6 +342,8 @@ bool record_danger; /* Record hitpoint warning */
 bool record_arena;     /* Record arena victories */
 bool record_ident;     /* Record first identified items */
 bool record_named_pet; /* Record informations of named pets */
+char record_o_name[MAX_NLEN];
+s32b record_turn;
 
 
 /* Cheating options */
@@ -343,6 +355,8 @@ bool cheat_xtra;    /* Peek into something else */
 bool cheat_know;       /* Know complete monster info */
 bool cheat_live;       /* Allow player to avoid death */
 bool cheat_save;       /* Ask for saving death */
+bool cheat_diary_output; /* Detailed info to diary */
+bool cheat_turn;       /* Peek turn */
 
 
 /* Special options */
@@ -361,11 +375,6 @@ s16b autosave_freq;     /* Autosave frequency */
  * Dungeon variables
  */
 
-byte feeling;                  /* Most recent feeling */
-s16b rating;                   /* Level's current rating */
-
-bool good_item_flag;           /* True if "Artifact" on this level */
-
 bool closing_flag;             /* Dungeon is closing */
 
 
@@ -373,22 +382,17 @@ bool closing_flag;                /* Dungeon is closing */
  * Dungeon size info
  */
 
-s16b panel_row_min, panel_row_max;
-s16b panel_col_min, panel_col_max;
-s16b panel_col_prt, panel_row_prt;
+POSITION panel_row_min, panel_row_max;
+POSITION panel_col_min, panel_col_max;
+POSITION panel_col_prt, panel_row_prt;
 
-/*
- * Player location in dungeon
- */
-int py;
-int px;
 
 /*
  * Targetting variables
  */
-s16b target_who;
-s16b target_col;
-s16b target_row;
+IDX target_who;
+POSITION target_col;
+POSITION target_row;
 
 
 /*
@@ -399,11 +403,6 @@ int player_euid;
 int player_egid;
 
 /*
- * Current player's character name
- */
-char player_name[32];
-
-/*
  * Stripped version of "player_name"
  */
 char player_base[32];
@@ -420,36 +419,36 @@ char savefile_base[40];
  * Array of grids lit by player lite (see "cave.c")
  */
 s16b lite_n;
-s16b lite_y[LITE_MAX];
-s16b lite_x[LITE_MAX];
+POSITION lite_y[LITE_MAX];
+POSITION lite_x[LITE_MAX];
 
 /*
  * Array of grids lit by player lite (see "cave.c")
  */
 s16b mon_lite_n;
-s16b mon_lite_y[MON_LITE_MAX];
-s16b mon_lite_x[MON_LITE_MAX];
+POSITION mon_lite_y[MON_LITE_MAX];
+POSITION mon_lite_x[MON_LITE_MAX];
 
 /*
  * Array of grids viewable to the player (see "cave.c")
  */
 s16b view_n;
-byte view_y[VIEW_MAX];
-byte view_x[VIEW_MAX];
+POSITION view_y[VIEW_MAX];
+POSITION view_x[VIEW_MAX];
 
 /*
  * Array of grids for use by various functions (see "cave.c")
  */
 s16b temp_n;
-byte temp_y[TEMP_MAX];
-byte temp_x[TEMP_MAX];
+POSITION temp_y[TEMP_MAX];
+POSITION temp_x[TEMP_MAX];
 
 /*
  * Array of grids for delayed visual updating (see "cave.c")
  */
 s16b redraw_n = 0;
-byte redraw_y[REDRAW_MAX];
-byte redraw_x[REDRAW_MAX];
+POSITION redraw_y[REDRAW_MAX];
+POSITION redraw_x[REDRAW_MAX];
 
 
 /*
@@ -492,27 +491,27 @@ cptr *quark__str;
 /*
  * The next "free" index to use
  */
-u16b message__next;
+u32b message__next;
 
 /*
  * The index of the oldest message (none yet)
  */
-u16b message__last;
+u32b message__last;
 
 /*
  * The next "free" offset
  */
-u16b message__head;
+u32b message__head;
 
 /*
  * The offset to the oldest used char (none yet)
  */
-u16b message__tail;
+u32b message__tail;
 
 /*
  * The array of offsets, by index [MESSAGE_MAX]
  */
-u16b *message__ptr;
+u32b *message__ptr;
 
 /*
  * The array of chars, by offset [MESSAGE_BUF]
@@ -543,7 +542,7 @@ term *angband_term[8];
 /*
  * Standard window names
  */
-char angband_term_name[8][16] =
+const char angband_term_name[8][16] =
 {
        "Hengband",
        "Term-1",
@@ -583,9 +582,9 @@ byte angband_color_table[256][4] =
 /*
  * Standard sound names
  */
-char angband_sound_name[SOUND_MAX][16] =
+const cptr angband_sound_name[SOUND_MAX] =
 {
-       "",
+       "dummy",
        "hit",
        "miss",
        "flee",
@@ -650,6 +649,35 @@ char angband_sound_name[SOUND_MAX][16] =
        "show",
        "unused",
        "explode",
+       "glass",
+};
+
+/*
+ * Standard music names
+ */
+const cptr angband_music_basic_name[MUSIC_BASIC_MAX] =
+{
+       "default",
+       "gameover",
+       "exit",
+       "town",
+       "field1",
+       "field2",
+       "field3",
+       "dun_low",
+       "dun_med",
+       "dun_high",
+       "feel1",
+       "feel2",
+       "winner",
+       "build",
+       "wild",
+       "quest",
+       "arena",
+       "battle",
+       "quest_clear",
+       "final_quest_clear",
+       "ambush",
 };
 
 
@@ -690,6 +718,12 @@ object_type *o_list;
  */
 monster_type *m_list;
 
+/*
+ * The array to process dungeon monsters [max_m_idx]
+ */
+s16b *mproc_list[MAX_MTIMED];
+s16b mproc_max[MAX_MTIMED]; /* Number of monsters to be processed */
+
 
 /*
  * Maximum number of towns
@@ -769,11 +803,11 @@ player_type *p_ptr = &p_body;
  * Pointer to the player tables
  * (sex, race, class, magic)
  */
-player_sex *sp_ptr;
-player_race *rp_ptr;
-player_class *cp_ptr;
-player_seikaku *ap_ptr;
-player_magic *mp_ptr;
+const player_sex *sp_ptr;
+const player_race *rp_ptr;
+const player_class *cp_ptr;
+const player_seikaku *ap_ptr;
+const player_magic *mp_ptr;
 
 
 /*
@@ -999,50 +1033,6 @@ bool (*get_obj_num_hook)(int k_idx);
 bool monk_armour_aux;
 bool monk_notify_aux;
 
-#ifdef ALLOW_EASY_OPEN /* TNB */
-bool easy_open;
-#endif /* ALLOW_EASY_OPEN -- TNB */
-
-#ifdef ALLOW_EASY_DISARM /* TNB */
-bool easy_disarm;
-#endif /* ALLOW_EASY_DISARM -- TNB */
-
-#ifdef ALLOW_EASY_FLOOR /* TNB */
-bool easy_floor;
-#endif /* ALLOW_EASY_FLOOR -- TNB */
-
-bool use_command;
-bool center_player;
-bool center_running;
-
-/* Auto-destruction options */
-bool destroy_items;
-bool destroy_feeling;
-bool destroy_identify;
-bool leave_worth;
-bool leave_equip;
-bool leave_wanted;
-bool leave_corpse;
-bool leave_junk;
-bool leave_chest;
-bool leave_special;
-
-/* Nikki */
-bool record_fix_art;
-bool record_rand_art;
-bool record_destroy_uniq;
-bool record_fix_quest;
-bool record_rand_quest;
-bool record_maxdepth;
-bool record_stair;
-bool record_buy;
-bool record_sell;
-bool record_danger;
-bool record_arena;
-bool record_ident;
-bool record_named_pet;
-char record_o_name[MAX_NLEN];
-s32b record_turn;
 
 /*
  * Wilderness
@@ -1059,58 +1049,58 @@ building_type building[MAX_BLDG];
 /*
  * Maximum number of quests
  */
-u16b max_quests;
+IDX max_quests;
 
 /*
  * Maximum number of monsters in r_info.txt
  */
-u16b max_r_idx;
+IDX max_r_idx;
 
 /*
  * Maximum number of items in k_info.txt
  */
-u16b max_k_idx;
+IDX max_k_idx;
 
 /*
  * Maximum number of vaults in v_info.txt
  */
-u16b max_v_idx;
+IDX max_v_idx;
 
 /*
  * Maximum number of terrain features in f_info.txt
  */
-u16b max_f_idx;
+IDX max_f_idx;
 
 /*
  * Maximum number of artifacts in a_info.txt
  */
-u16b max_a_idx;
+IDX max_a_idx;
 
 /*
  * Maximum number of ego-items in e_info.txt
  */
-u16b max_e_idx;
+IDX max_e_idx;
 
 /*
  * Maximum number of dungeon in e_info.txt
  */
-u16b max_d_idx;
+IDX max_d_idx;
 
 /*
  * Maximum number of objects in the level
  */
-u16b max_o_idx;
+IDX max_o_idx;
 
 /*
  * Maximum number of monsters in the level
  */
-u16b max_m_idx;
+IDX max_m_idx;
 
 /*
  * Maximum size of the wilderness
  */
-s32b max_wild_x;
-s32b max_wild_y;
+POSITION max_wild_x;
+POSITION max_wild_y;
 
 /*
  * Quest info
@@ -1168,8 +1158,6 @@ int riding_t_m_idx;
 s16b kubi_r_idx[MAX_KUBI];
 s16b today_mon;
 
-monster_type party_mon[MAX_PARTY_MON];
-
 bool write_level;
 
 u32b playtime;
@@ -1187,6 +1175,81 @@ bool generate_encounter;
 
 cptr screen_dump = NULL;
 
+/*** Terrain feature variables ***/
+
+/* Nothing */
+s16b feat_none;
+
+/* Floor */
+s16b feat_floor;
+
+/* Objects */
+s16b feat_glyph;
+s16b feat_explosive_rune;
+s16b feat_mirror;
+
+/* Doors */
+door_type feat_door[MAX_DOOR_TYPES];
+
+/* Stairs */
+s16b feat_up_stair;
+s16b feat_down_stair;
+s16b feat_entrance;
+
+/* Special traps */
+s16b feat_trap_open;
+s16b feat_trap_armageddon;
+s16b feat_trap_piranha;
+
+/* Rubble */
+s16b feat_rubble;
+
+/* Seams */
+s16b feat_magma_vein;
+s16b feat_quartz_vein;
+
+/* Walls */
+s16b feat_granite;
+s16b feat_permanent;
+
+/* Glass floor */
+s16b feat_glass_floor;
+
+/* Glass walls */
+s16b feat_glass_wall;
+s16b feat_permanent_glass_wall;
+
+/* Pattern */
+s16b feat_pattern_start;
+s16b feat_pattern_1;
+s16b feat_pattern_2;
+s16b feat_pattern_3;
+s16b feat_pattern_4;
+s16b feat_pattern_end;
+s16b feat_pattern_old;
+s16b feat_pattern_exit;
+s16b feat_pattern_corrupted;
+
+/* Various */
+s16b feat_black_market;
+s16b feat_town;
+
+/* Terrains */
+s16b feat_deep_water;
+s16b feat_shallow_water;
+s16b feat_deep_lava;
+s16b feat_shallow_lava;
+s16b feat_dirt;
+s16b feat_grass;
+s16b feat_flower;
+s16b feat_brake;
+s16b feat_tree;
+s16b feat_mountain;
+s16b feat_swamp;
+
+/* Unknown grid (not detected) */
+s16b feat_undetected;
+
 /*
  * Which dungeon ?
  */
@@ -1208,3 +1271,17 @@ bool chuukei_client;
 char *server_name;
 int server_port;
 #endif
+
+/* for movie */
+bool browsing_movie;
+
+#ifdef TRAVEL
+/* for travel */
+travel_type travel;
+#endif
+
+/* for snipers */
+int snipe_type = SP_NONE;
+bool reset_concent = FALSE;   /* Concentration reset flag */
+bool is_fired = FALSE;
+