-/* 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
*/
const 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
s16b command_cmd; /* Current "Angband Command" */
-s16b command_arg; /* Gives argument of current command */
+COMMAND_ARG command_arg; /* Gives argument of current command */
s16b command_rep; /* Gives repetition of current command */
-s16b command_dir; /* Gives direction of current command */
+DIRECTION command_dir; /* Gives direction of current command */
s16b command_see; /* See "object1.c" */
s16b command_wrk; /* 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 */
+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; /* Limit of game turn */
-s32b dungeon_turn; /* Game turn in dungeon */
-s32b dungeon_turn_limit; /* Limit of game turn in dungeon */
-s32b old_turn; /* Turn when level began */
-s32b old_battle;
+GAME_TURN turn; /*!< 画面表示上のゲーム時間基準となるターン / Current game turn */
+GAME_TURN turn_limit; /*!< turnの最大値 / Limit of game turn */
+GAME_TURN dungeon_turn; /*!< NASTY生成の計算に関わる内部ターン値 / Game turn in dungeon */
+GAME_TURN dungeon_turn_limit; /*!< dungeon_turnの最大値 / Limit of game turn in dungeon */
+GAME_TURN old_turn; /* Turn when level began */
+GAME_TURN old_battle;
bool use_sound; /* The "sound" mode is enabled */
bool use_music; /* The "music" mode is enabled */
s16b o_max = 1; /* Number of allocated objects */
s16b o_cnt = 0; /* Number of live objects */
-s16b m_max = 1; /* Number of allocated monsters */
-s16b m_cnt = 0; /* Number of live monsters */
+MONSTER_IDX m_max = 1; /* Number of allocated monsters */
+MONSTER_IDX m_cnt = 0; /* Number of live monsters */
-s16b hack_m_idx = 0; /* Hack -- see "process_monsters()" */
-s16b hack_m_idx_ii = 0;
+MONSTER_IDX hack_m_idx = 0; /* Hack -- see "process_monsters()" */
+MONSTER_IDX hack_m_idx_ii = 0;
bool multi_rew = FALSE;
char summon_kin_type; /* Hack, by Julian Lighton: summon 'relatives' */
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 */
* 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;
/*
int player_egid;
/*
- * Current player's character name
- */
-char player_name[32];
-
-/*
* Stripped version of "player_name"
*/
char player_base[32];
* 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];
/*
/*
* 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]
"quest",
"arena",
"battle",
+ "quest_clear",
+ "final_quest_clear",
+ "ambush",
};
* Here is a "pseudo-hook" used during calls to "get_item()" and
* "show_inven()" and "show_equip()", and the choice window routines.
*/
-byte item_tester_tval;
+OBJECT_TYPE_VALUE item_tester_tval;
/*
/*
* Maximum number of quests
*/
-u16b max_quests;
+IDX max_quests;
/*
* Maximum number of monsters in r_info.txt
*/
-u16b max_r_idx;
+MONRACE_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;
+MONSTER_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
int cap_maxhp;
u16b cap_nickname;
-s16b battle_mon[4];
+IDX battle_mon[4];
int sel_monster;
int battle_odds;
int kakekin;
int pet_t_m_idx;
int riding_t_m_idx;
-s16b kubi_r_idx[MAX_KUBI];
-s16b today_mon;
+IDX kubi_r_idx[MAX_KUBI];
+IDX today_mon;
bool write_level;
/*** Terrain feature variables ***/
/* Nothing */
-s16b feat_none;
+FEAT_IDX feat_none;
/* Floor */
-s16b feat_floor;
+FEAT_IDX feat_floor;
/* Objects */
-s16b feat_glyph;
-s16b feat_explosive_rune;
-s16b feat_mirror;
+FEAT_IDX feat_glyph;
+FEAT_IDX feat_explosive_rune;
+FEAT_IDX feat_mirror;
/* Doors */
door_type feat_door[MAX_DOOR_TYPES];
/* Stairs */
-s16b feat_up_stair;
-s16b feat_down_stair;
-s16b feat_entrance;
+FEAT_IDX feat_up_stair;
+FEAT_IDX feat_down_stair;
+FEAT_IDX feat_entrance;
/* Special traps */
-s16b feat_trap_open;
-s16b feat_trap_armageddon;
-s16b feat_trap_piranha;
+FEAT_IDX feat_trap_open;
+FEAT_IDX feat_trap_armageddon;
+FEAT_IDX feat_trap_piranha;
/* Rubble */
-s16b feat_rubble;
+FEAT_IDX feat_rubble;
/* Seams */
-s16b feat_magma_vein;
-s16b feat_quartz_vein;
+FEAT_IDX feat_magma_vein;
+FEAT_IDX feat_quartz_vein;
/* Walls */
-s16b feat_granite;
-s16b feat_permanent;
+FEAT_IDX feat_granite;
+FEAT_IDX feat_permanent;
/* Glass floor */
-s16b feat_glass_floor;
+FEAT_IDX feat_glass_floor;
/* Glass walls */
-s16b feat_glass_wall;
-s16b feat_permanent_glass_wall;
+FEAT_IDX feat_glass_wall;
+FEAT_IDX 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;
+FEAT_IDX feat_pattern_start;
+FEAT_IDX feat_pattern_1;
+FEAT_IDX feat_pattern_2;
+FEAT_IDX feat_pattern_3;
+FEAT_IDX feat_pattern_4;
+FEAT_IDX feat_pattern_end;
+FEAT_IDX feat_pattern_old;
+FEAT_IDX feat_pattern_exit;
+FEAT_IDX feat_pattern_corrupted;
/* Various */
-s16b feat_black_market;
-s16b feat_town;
+FEAT_IDX feat_black_market;
+FEAT_IDX 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;
+FEAT_IDX feat_deep_water;
+FEAT_IDX feat_shallow_water;
+FEAT_IDX feat_deep_lava;
+FEAT_IDX feat_shallow_lava;
+FEAT_IDX feat_dirt;
+FEAT_IDX feat_grass;
+FEAT_IDX feat_flower;
+FEAT_IDX feat_brake;
+FEAT_IDX feat_tree;
+FEAT_IDX feat_mountain;
+FEAT_IDX feat_swamp;
/* Unknown grid (not detected) */
-s16b feat_undetected;
+FEAT_IDX feat_undetected;
/*
* Which dungeon ?
*/
-byte dungeon_type;
-s16b *max_dlv;
+DUNGEON_IDX dungeon_type;
+DEPTH *max_dlv;
-s16b feat_wall_outer;
-s16b feat_wall_inner;
-s16b feat_wall_solid;
-s16b floor_type[100], fill_type[100];
+FEAT_IDX feat_wall_outer;
+FEAT_IDX feat_wall_inner;
+FEAT_IDX feat_wall_solid;
+FEAT_IDX floor_type[100], fill_type[100];
bool now_damaged;
s16b now_message;
int snipe_type = SP_NONE;
bool reset_concent = FALSE; /* Concentration reset flag */
bool is_fired = FALSE;
+