*/
#include "angband.h"
+#include "geometry.h"
/*!
* コピーライト情報 /
* Hack -- Link a copyright message into the executable
*/
-const cptr copyright[5] =
+const concptr copyright[5] =
{
"Copyright (c) 1989 James E. Wilson, Robert A. Keoneke",
"",
"are included in all such copies."
};
-
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]; /*!< マクロの内容 */
+concptr macro_template = NULL; /*!< Angband設定ファイルのT: タグ情報から読み込んだ長いTコードを処理するために利用する文字列ポインタ */
+concptr macro_modifier_chr; /*!< &x# で指定されるマクロトリガーに関する情報を記録する文字列ポインタ */
+concptr macro_modifier_name[MAX_MACRO_MOD]; /*!< マクロ上で取り扱う特殊キーを文字列上で表現するためのフォーマットを記録した文字列ポインタ配列 */
+concptr macro_trigger_name[MAX_MACRO_TRIG]; /*!< マクロのトリガーコード */
+concptr macro_trigger_keycode[2][MAX_MACRO_TRIG]; /*!< マクロの内容 */
int level_up = 0; /*!< レベルアップの際に遅延してcalc_mana()関数上で上昇量を表示するかどうかの判定フラグ */
/*
* Savefile version
*/
-byte h_ver_major; /* Savefile version for Hengband 1.1.1 and later */
+byte h_ver_major; /* Savefile version for Hengband 1.1.1 and later */
byte h_ver_minor;
byte h_ver_patch;
byte h_ver_extra;
bool msg_flag; /* Used in msg_print() for "buffering" */
s16b running; /* Current counter for running, if any */
-GAME_TURN resting; /* Current counter for resting, if any */
-
-POSITION cur_hgt; /* Current dungeon height */
-POSITION cur_wid; /* Current dungeon width */
-DEPTH dun_level; /*!< 現在の実ダンジョン階層、base_levelの参照元となる / Current dungeon level */
-MONSTER_NUMBER num_repro; /*!< Current reproducer count */
-DEPTH base_level; /*!< 基本生成レベル、後述のobject_level, monster_levelの参照元となる / Base dungeon level */
-DEPTH object_level; /*!< アイテムの生成レベル、base_levelを起点に一時変更する時に参照 / Current object creation level */
-DEPTH monster_level; /*!< モンスターの生成レベル、base_levelを起点に一時変更する時に参照 / Current monster creation level */
+
bool invoking_midnight_curse; /*!< 悪夢モード時の真夜中太古の呪い発生処理フラグ */
-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 */
s16b inven_cnt; /* Number of items in inventory */
s16b equip_cnt; /* Number of items in equipment */
-s16b o_max = 1; /* Number of allocated objects */
-s16b o_cnt = 0; /* Number of live objects */
+OBJECT_IDX o_max = 1; /* Number of allocated objects */
+OBJECT_IDX o_cnt = 0; /* Number of live objects */
MONSTER_IDX m_max = 1; /* Number of allocated monsters */
MONSTER_IDX m_cnt = 0; /* Number of live monsters */
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' */
/*
* Targetting variables
*/
-IDX target_who;
+MONSTER_IDX target_who;
POSITION target_col;
POSITION target_row;
char savefile[1024];
char savefile_base[40];
-POSITION_IDX lite_n; //!< Array of grids lit by player lite (see "cave.c")
-POSITION lite_y[LITE_MAX];
-POSITION lite_x[LITE_MAX];
-
-POSITION_IDX mon_lite_n; //!< Array of grids lit by player lite (see "cave.c")
-POSITION mon_lite_y[MON_LITE_MAX];
-POSITION mon_lite_x[MON_LITE_MAX];
-
-POSITION_IDX view_n; //!< Array of grids viewable to the player (see "cave.c")
-POSITION view_y[VIEW_MAX];
-POSITION view_x[VIEW_MAX];
-POSITION_IDX temp_n; //!< Array of grids for use by various functions (see "cave.c")
-POSITION temp_y[TEMP_MAX];
-POSITION temp_x[TEMP_MAX];
-
-POSITION_IDX redraw_n = 0; //!< Array of grids for delayed visual updating (see "cave.c")
-POSITION redraw_y[REDRAW_MAX];
-POSITION redraw_x[REDRAW_MAX];
+pos_list tmp_pos;
/*
/*
* Array of macro patterns [MACRO_MAX]
*/
-cptr *macro__pat;
+concptr *macro__pat;
/*
* Array of macro actions [MACRO_MAX]
*/
-cptr *macro__act;
+concptr *macro__act;
/*
* Array of macro types [MACRO_MAX]
/*
* The pointers to the quarks [QUARK_MAX]
*/
-cptr *quark__str;
+concptr *quark__str;
/*
/*
* Standard sound names
*/
-const cptr angband_sound_name[SOUND_MAX] =
+const concptr angband_sound_name[SOUND_MAX] =
{
"dummy",
"hit",
/*
* Standard music names
*/
-const cptr angband_music_basic_name[MUSIC_BASIC_MAX] =
+const concptr angband_music_basic_name[MUSIC_BASIC_MAX] =
{
"default",
"gameover",
/*
- * The array of "cave grids" [MAX_WID][MAX_HGT].
+ * The array of "current_floor_ptr->grid_array grids" [MAX_WID][MAX_HGT].
* Not completely allocated, that would be inefficient
* Not completely hardcoded, that would overflow memory
*/
-cave_type *cave[MAX_HGT];
-
+floor_type floor;
+floor_type *current_floor_ptr = &floor;
/*
* The array of saved floors
/*
* Number of floor_id used from birth
*/
-s16b max_floor_id;
+FLOOR_IDX max_floor_id;
+
+
+world_type world;
+world_type *current_world_ptr = &world;
/*
/*
- * The array of dungeon items [max_o_idx]
- */
-object_type *o_list;
-
-/*
- * The array of dungeon monsters [max_m_idx]
- */
-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
*/
-u16b max_towns;
+TOWN_IDX max_towns;
/*
* The towns [max_towns]
*/
-town_type *town;
+town_type *town_info;
/*
* Be sure to use "index & 0x7F" to avoid illegal access
*/
TERM_COLOR misc_to_attr[256];
-char misc_to_char[256];
+SYMBOL_CODE misc_to_char[256];
/*
* Be sure to use "index & 0x7F" to avoid illegal access
*/
TERM_COLOR tval_to_attr[128];
-char tval_to_char[128];
+SYMBOL_CODE tval_to_char[128];
/*
* Keymaps for each "mode" associated with each keypress.
*/
-cptr keymap_act[KEYMAP_MODES][256];
+concptr keymap_act[KEYMAP_MODES][256];
/*
* The dungeon arrays
*/
-dungeon_info_type *d_info;
+dungeon_type *d_info;
char *d_name;
char *d_text;
-cptr ANGBAND_SYS = "xxx"; //!< Hack -- The special Angband "System Suffix" This variable is used to choose an appropriate "pref-xxx" file
+concptr ANGBAND_SYS = "xxx"; //!< Hack -- The special Angband "System Suffix" This variable is used to choose an appropriate "pref-xxx" file
#ifdef JP
-cptr ANGBAND_KEYBOARD = "JAPAN"; //!< Hack -- The special Angband "Keyboard Suffix" This variable is used to choose an appropriate macro-trigger definition
+concptr ANGBAND_KEYBOARD = "JAPAN"; //!< Hack -- The special Angband "Keyboard Suffix" This variable is used to choose an appropriate macro-trigger definition
#else
-cptr ANGBAND_KEYBOARD = "0";
+concptr ANGBAND_KEYBOARD = "0";
#endif
-cptr ANGBAND_GRAF = "ascii"; //!< Hack -- The special Angband "Graphics Suffix" This variable is used to choose an appropriate "graf-xxx" file
-cptr ANGBAND_DIR; //!< Path name: The main "lib" directory This variable is not actually used anywhere in the code
-cptr ANGBAND_DIR_APEX; //!< High score files (binary) These files may be portable between platforms
-cptr ANGBAND_DIR_BONE; //!< Bone files for player ghosts (ascii) These files are portable between platforms
-cptr ANGBAND_DIR_DATA; //!< Binary image files for the "*_info" arrays (binary) These files are not portable between platforms
-cptr ANGBAND_DIR_EDIT; //!< Textual template files for the "*_info" arrays (ascii) These files are portable between platforms
-cptr ANGBAND_DIR_SCRIPT; //!< Script files These files are portable between platforms.
-cptr ANGBAND_DIR_FILE; //!< Various extra files (ascii) These files may be portable between platforms
-cptr ANGBAND_DIR_HELP; //!< Help files (normal) for the online help (ascii) These files are portable between platforms
-cptr ANGBAND_DIR_INFO; //!< Help files (spoilers) for the online help (ascii) These files are portable between platforms
-cptr ANGBAND_DIR_PREF; //!< Default user "preference" files (ascii) These files are rarely portable between platforms
-cptr ANGBAND_DIR_SAVE; //!< Savefiles for current characters (binary)
-cptr ANGBAND_DIR_USER; //!< User "preference" files (ascii) These files are rarely portable between platforms
-cptr ANGBAND_DIR_XTRA; //!< Various extra files (binary) These files are rarely portable between platforms
-bool item_tester_full; //!< Total Hack -- allow all items to be listed (even empty ones) This is only used by "do_cmd_inven_e()" and is cleared there.
-
-bool item_tester_no_ryoute = FALSE;
+concptr ANGBAND_GRAF = "ascii"; //!< Hack -- The special Angband "Graphics Suffix" This variable is used to choose an appropriate "graf-xxx" file
+concptr ANGBAND_DIR; //!< Path name: The main "lib" directory This variable is not actually used anywhere in the code
+concptr ANGBAND_DIR_APEX; //!< High score files (binary) These files may be portable between platforms
+concptr ANGBAND_DIR_BONE; //!< Bone files for player ghosts (ascii) These files are portable between platforms
+concptr ANGBAND_DIR_DATA; //!< Binary image files for the "*_info" arrays (binary) These files are not portable between platforms
+concptr ANGBAND_DIR_EDIT; //!< Textual template files for the "*_info" arrays (ascii) These files are portable between platforms
+concptr ANGBAND_DIR_SCRIPT; //!< Script files These files are portable between platforms.
+concptr ANGBAND_DIR_FILE; //!< Various extra files (ascii) These files may be portable between platforms
+concptr ANGBAND_DIR_HELP; //!< Help files (normal) for the online help (ascii) These files are portable between platforms
+concptr ANGBAND_DIR_INFO; //!< Help files (spoilers) for the online help (ascii) These files are portable between platforms
+concptr ANGBAND_DIR_PREF; //!< Default user "preference" files (ascii) These files are rarely portable between platforms
+concptr ANGBAND_DIR_SAVE; //!< Savefiles for current characters (binary)
+concptr ANGBAND_DIR_USER; //!< User "preference" files (ascii) These files are rarely portable between platforms
+concptr ANGBAND_DIR_XTRA; //!< Various extra files (binary) These files are rarely portable between platforms
+
/*
* Here is a "pseudo-hook" used during calls to "get_item()" and
/*
* Hack -- function hooks to restrict "get_mon_num_prep()" function
*/
-monster_hook_type get_mon_num_hook;
-monster_hook_type get_mon_num2_hook;
+monsterrace_hook_type get_mon_num_hook;
+monsterrace_hook_type get_mon_num2_hook;
/*
*/
bool (*get_obj_num_hook)(KIND_OBJECT_IDX k_idx);
-
-/* Hack, monk armour */
-bool monk_armour_aux;
-bool monk_notify_aux;
-
-
-/*
- * Wilderness
- */
-wilderness_type **wilderness;
-
-
/*
* Buildings
*/
/*
* Maximum number of vaults in v_info.txt
*/
-IDX max_v_idx;
+VAULT_IDX max_v_idx;
/*
* Maximum number of terrain features in f_info.txt
*/
-IDX max_f_idx;
+FEAT_IDX max_f_idx;
/*
* Maximum number of artifacts in a_info.txt
/*
* Maximum number of ego-items in e_info.txt
*/
-IDX max_e_idx;
+EGO_IDX max_e_idx;
/*
* Maximum number of dungeon in e_info.txt
*/
DUNGEON_IDX max_d_idx;
-/*
- * Maximum number of objects in the level
- */
-OBJECT_IDX max_o_idx;
-/*
- * Maximum number of monsters in the level
- */
-MONSTER_IDX max_m_idx;
-
-/*
- * Maximum size of the wilderness
- */
-POSITION max_wild_x;
-POSITION max_wild_y;
/*
* Quest info
/*
* Default spell color table (quark index)
*/
-s16b gf_color[MAX_GF];
+TERM_COLOR gf_color[MAX_GF];
/*
* Flags for initialization
*/
int highscore_fd = -1;
-int mutant_regenerate_mod = 100;
-
bool can_save = FALSE; /* Game can be saved */
-s16b world_monster;
-bool world_player;
int cap_mon;
int cap_mspeed;
MONSTER_IDX pet_t_m_idx;
MONSTER_IDX riding_t_m_idx;
-MONSTER_IDX kubi_r_idx[MAX_KUBI];
MONSTER_IDX today_mon;
bool write_level;
-u32b playtime;
u32b start_time;
bool sukekaku;
bool ambush_flag;
bool generate_encounter;
-cptr screen_dump = NULL;
+concptr screen_dump = NULL;
/*** Terrain feature variables ***/
FEAT_IDX feat_explosive_rune;
FEAT_IDX feat_mirror;
-/* Doors */
-door_type feat_door[MAX_DOOR_TYPES];
-
/* Stairs */
FEAT_IDX feat_up_stair;
FEAT_IDX feat_down_stair;
FEAT_IDX feat_shallow_water;
FEAT_IDX feat_deep_lava;
FEAT_IDX feat_shallow_lava;
+FEAT_IDX feat_heavy_cold_zone;
+FEAT_IDX feat_cold_zone;
+FEAT_IDX feat_heavy_electrical_zone;
+FEAT_IDX feat_electrical_zone;
+FEAT_IDX feat_deep_acid_puddle;
+FEAT_IDX feat_shallow_acid_puddle;
+FEAT_IDX feat_deep_poisonous_puddle;
+FEAT_IDX feat_shallow_poisonous_puddle;
FEAT_IDX feat_dirt;
FEAT_IDX feat_grass;
FEAT_IDX feat_flower;
/*
* Which dungeon ?
*/
-DUNGEON_IDX dungeon_type;
DEPTH *max_dlv;
FEAT_IDX feat_wall_outer;
FEAT_IDX feat_wall_inner;
FEAT_IDX feat_wall_solid;
-FEAT_IDX floor_type[100], fill_type[100];
+FEAT_IDX feat_ground_type[100], feat_wall_type[100];
-bool now_damaged;
COMMAND_CODE now_message;
bool use_menu;
#endif
/* for snipers */
-int snipe_type = SP_NONE;
bool reset_concent = FALSE; /* Concentration reset flag */
bool is_fired = FALSE;