X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fvariable.c;h=0a853efb79a29676a5c8e0749334272159a6bee6;hb=6d340e461d95ac600bdf07d8e3d5ac1196298837;hp=0bf064f3e694aefa2b7b36d387143f57de209c06;hpb=5a630b91018cf2caa8d4c31e508c10731b6c1f98;p=hengband%2Fhengband.git diff --git a/src/variable.c b/src/variable.c index 0bf064f3e..0a853efb7 100644 --- a/src/variable.c +++ b/src/variable.c @@ -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
+ *
+ * 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.
*/ -/* 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,21 +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; -autopick_type autopick_list[MAX_AUTOPICK]; +int max_autopick = 0; /*!< 現在登録している自動拾い/破壊設定の数 */ +int max_max_autopick = 0; /*!< 自動拾い/破壊設定の限界数 */ +autopick_type *autopick_list = NULL; /*!< 自動拾い/破壊設定構造体のポインタ配列 */ /* * Savefile version @@ -70,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 */ @@ -87,14 +89,16 @@ 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 */ 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" */ @@ -103,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 */ +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 dungeon_turn; /* Game turn in dungeon */ -s32b old_turn; /* Turn when level began (feelings) */ -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 */ bool use_graphics; /* The "graphics" mode is enabled */ bool use_bigtile = FALSE; @@ -133,9 +138,9 @@ 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 inkey_special; /* See the "inkey()" function */ +bool get_com_no_macros = FALSE; /* Expand macros in "get_com" or not */ -s16b coin_type; /* Hack -- force coin type */ +OBJECT_SUBTYPE_VALUE coin_type; /* Hack -- force coin type */ bool opening_chest; /* Hack -- prevent chest generation */ @@ -155,16 +160,15 @@ s16b equip_cnt; /* Number of items in equipment */ 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' */ int total_friends = 0; -s32b total_friend_levels = 0; s32b friend_align = 0; int leaving_quest = 0; @@ -175,135 +179,195 @@ bool reinit_wilderness = FALSE; * Software options (set via the '=' command). See "tables.c" */ - -/* Option Set 1 -- User Interface */ +/*** Input Options ***/ bool rogue_like_commands; /* Rogue-like commands */ -bool quick_messages; /* Activate quick messages */ -bool auto_more; -bool command_menu; -bool other_query_flag; /* Prompt for various information */ -bool carry_query_flag; /* Prompt before picking things up */ -bool use_old_target; /* Use old target by default */ -bool always_pickup; /* Pick things up by default */ -bool always_repeat; /* Repeat obvious commands */ -bool depth_in_feet; /* Show dungeon level in feet */ - -bool stack_force_notes; /* Merge inscriptions when stacking */ -bool stack_force_costs; /* Merge discounts when stacking */ - -bool show_labels; /* Show labels in object listings */ -bool show_weights; /* Show weights in object listings */ - -bool ring_bell; /* Ring the bell (on errors, etc) */ - -bool show_item_graph; - - -/* Option Set 2 -- Disturbance */ - -bool find_ignore_stairs; /* Run past stairs */ -bool find_ignore_doors; /* Run through open doors */ -bool find_cut; /* Run past known corners */ - -bool disturb_move; /* Disturb whenever any monster moves */ -bool disturb_near; /* Disturb whenever viewable monster moves */ -bool disturb_high; /* Disturb whenever high-level monster moves */ -bool disturb_panel; /* Disturb whenever map panel changes */ -bool disturb_state; /* Disturn whenever player state changes */ -bool disturb_minor; /* Disturb whenever boring things happen */ - -bool disturb_trap_detect; /* Disturb when leaving trap detected area */ -bool alert_trap_detect; /* Alert when leaving trap detected area */ -bool last_words; /* Get last words upon dying */ -bool over_exert; -bool small_levels; /* Allow unusually small dungeon levels */ -bool always_small_levels; /* Use always unusually small dungeon levels */ -bool empty_levels; /* Allow empty 'arena' levels */ -bool bound_walls_perm; /* Boundary walls are created by permanent wall */ -bool equippy_chars; /* Back by popular demand... */ -bool display_mutations; /* Skip mutations screen even if we have it */ -bool plain_descriptions; /* Plain object descriptions */ -bool confirm_destroy; /* Known worthless items are destroyed without confirmation */ -bool confirm_quest; /* Prompt before staircases... */ -bool confirm_wear; /* Confirm before putting on known cursed items */ -bool disturb_pets; /* Pets moving nearby disturb us */ - - - -/* Option Set 3 -- Game-Play */ - -bool manual_haggle; /* Auto-haggle in stores */ - -bool auto_scum; /* Auto-scum for good levels */ - -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 always_pickup; /* Pick things up by default */ +bool carry_query_flag; /* Prompt before picking things up */ +bool quick_messages; /* Activate quick messages */ +bool auto_more; /* Automatically clear '-more-' prompts */ +bool command_menu; /* Enable command selection menu */ +bool other_query_flag; /* Prompt for floor item selection */ +bool use_old_target; /* Use old target by default */ +bool always_repeat; /* Repeat obvious commands */ +bool confirm_destroy; /* Prompt for destruction of known worthless items */ +bool confirm_wear; /* Confirm to wear/wield known cursed items */ +bool confirm_quest; /* Prompt before exiting a quest level */ +bool target_pet; /* Allow targetting pets */ + +#ifdef ALLOW_EASY_OPEN +bool easy_open; /* Automatically open doors */ +#endif -bool dungeon_align; /* Generate dungeons with aligned rooms */ +#ifdef ALLOW_EASY_DISARM +bool easy_disarm; /* Automatically disarm traps */ +#endif -bool track_follow; /* Monsters follow the player */ -bool track_target; /* Monsters target the player */ +#ifdef ALLOW_EASY_FLOOR +bool easy_floor; /* Display floor stacks in a list */ +#endif -bool smart_learn; /* Monsters learn from their mistakes */ -bool smart_cheat; /* Monsters exploit player weaknesses */ +bool use_command; /* Allow unified use command */ +bool over_exert; /* Allow casting spells when short of mana */ +bool numpad_as_cursorkey; /* Use numpad keys as cursor key in editor mode */ -/* Option Set 4 -- Efficiency */ +/*** Map Screen Options ***/ -bool view_reduce_view; /* Reduce view-radius in town */ +bool center_player; /* Center map while walking (*slow*) */ +bool center_running; /* Centering even while running */ +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 */ +bool fresh_message; /* Flush output after every message */ +bool hilite_player; /* Hilite the player with the cursor */ +bool display_path; /* Display actual path before shooting */ -bool check_abort; /* Avoid checking for user abort */ -bool flush_failure; /* Flush input on any failure */ -bool flush_disturb; /* Flush input on disturbance */ +/*** Text Display Options ***/ -bool fresh_before; /* Flush output before normal commands */ -bool fresh_after; /* Flush output after normal commands */ -bool fresh_message; /* Flush output after all messages */ +bool plain_descriptions; /* Plain object descriptions */ +bool plain_pickup; /* Plain pickup messages(japanese only) */ +bool always_show_list; /* Always show list when choosing items */ +bool depth_in_feet; /* Show dungeon level in feet */ +bool show_labels; /* Show labels in object listings */ +bool show_weights; /* Show weights in object listings */ +bool show_item_graph; /* Show items graphics */ +bool equippy_chars; /* Display 'equippy' chars */ +bool display_mutations; /* Display mutations in 'C'haracter Display */ +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 ***/ + +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 small_levels; /* Allow unusually small dungeon levels */ +bool always_small_levels; /* Always create unusually small dungeon levels */ +bool empty_levels; /* Allow empty 'arena' levels */ +bool bound_walls_perm; /* Boundary walls become 'permanent wall' */ +bool last_words; /* Leave last words when your character dies */ + +#ifdef WORLD_SCORE +bool send_score; /* Send score dump to the world score server */ +#endif -bool compress_savefile; /* Compress messages in savefiles */ +bool allow_debug_opts; /* Allow use of debug/cheat options */ -bool hilite_player; /* Hilite the player with the cursor */ -bool view_yellow_lite; /* Use special colors for torch-lit grids */ -bool view_bright_lite; /* Use special colors for 'viewable' grids */ +/*** Disturbance Options ***/ -bool view_granite_lite; /* Use special colors for wall grids (slow) */ -bool view_special_lite; /* Use special colors for floor grids (slow) */ -bool new_ascii_graphics; -bool display_path; -bool target_pet; -bool plain_pickup; +bool find_ignore_stairs; /* Run past stairs */ +bool find_ignore_doors; /* Run through open doors */ +bool find_cut; /* Run past known corners */ +bool check_abort; /* Check for user abort while continuous command */ +bool flush_failure; /* Flush input on various failures */ +bool flush_disturb; /* Flush input whenever disturbed */ +bool disturb_move; /* Disturb whenever any monster moves */ +bool disturb_high; /* Disturb whenever high-level monster moves */ +bool disturb_near; /* Disturb whenever viewable monster moves */ +bool disturb_pets; /* Disturb when visible pets move */ +bool disturb_panel; /* Disturb whenever map panel changes */ +bool disturb_state; /* Disturb whenever player state changes */ +bool disturb_minor; /* Disturb whenever boring things happen */ +bool ring_bell; /* Audible bell (on errors, etc) */ +bool disturb_trap_detect; /* Disturb when leaving trap detected area */ +bool alert_trap_detect; /* Alert when leaving trap detected area */ + + +/*** Birth Options ***/ + +bool manual_haggle; /* Manually haggle in stores */ +bool easy_band; /* Easy Mode (*) */ +bool smart_learn; /* Monsters learn from their mistakes (*) */ +bool smart_cheat; /* Monsters exploit players weaknesses (*) */ +bool vanilla_town; /* Use 'vanilla' town without quests and wilderness */ +bool lite_town; /* Use 'lite' town without a wilderness */ +bool ironman_shops; /* Stores are permanently closed (*) */ +bool ironman_small_levels; /* Always create unusually small dungeon levels (*) */ +bool ironman_downward; /* Disable recall and use of up stairs (*) */ +bool ironman_empty_levels; /* Always create empty 'arena' levels (*) */ +bool ironman_rooms; /* Always generate very unusual rooms (*) */ +bool ironman_nightmare; /* Nightmare mode(it isn't even remotely fair!)(*) */ +bool left_hander; /* Left-Hander */ +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 ***/ + +bool destroy_items; /* Use easy auto-destroyer */ +bool destroy_feeling; /* Apply auto-destroy as sense feeling */ +bool destroy_identify; /* Apply auto-destroy as identify an item */ +bool leave_worth; /* Auto-destroyer leaves known worthy items */ +bool leave_equip; /* Auto-destroyer leaves weapons and armour */ +bool leave_chest; /* Auto-destroyer leaves closed chests */ +bool leave_wanted; /* Auto-destroyer leaves wanted corpses */ +bool leave_corpse; /* Auto-destroyer leaves corpses and skeletons */ +bool leave_junk; /* Auto-destroyer leaves junk */ +bool leave_special; /* Auto-destroyer leaves items your race/class needs */ + + +/*** Play-record Options ***/ + +bool record_fix_art; /* Record fixed artifacts */ +bool record_rand_art; /* Record random artifacts */ +bool record_destroy_uniq; /* Record when destroy unique monster */ +bool record_fix_quest; /* Record fixed quests */ +bool record_rand_quest; /* Record random quests */ +bool record_maxdepth; /* Record movements to deepest level */ +bool record_stair; /* Record recall and stair movements */ +bool record_buy; /* Record purchased items */ +bool record_sell; /* Record sold items */ +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; -bool always_show_list; -bool powerup_home; -bool send_score; -bool allow_debug_opts; /* Allow use of debug/cheat options */ /* Cheating options */ -bool cheat_peek; /* Peek into object creation */ -bool cheat_hear; /* Peek into monster creation */ -bool cheat_room; /* Peek into dungeon creation */ -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_peek; /* Peek into object creation */ +bool cheat_hear; /* Peek into monster creation */ +bool cheat_room; /* Peek into dungeon creation */ +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 */ -byte hitpoint_warn; /* Hitpoint warning (0 to 9) */ -byte mana_warn; /* Mana color (0 to 9) */ +byte hitpoint_warn; /* Hitpoint warning (0 to 9) */ +byte mana_warn; /* Mana color (0 to 9) */ -byte delay_factor; /* Delay factor (0 to 9) */ +byte delay_factor; /* Delay factor (0 to 9) */ -bool autosave_l; /* Autosave before entering new levels */ -bool autosave_t; /* Timed autosave */ +bool autosave_l; /* Autosave before entering new levels */ +bool autosave_t; /* Timed autosave */ s16b autosave_freq; /* Autosave frequency */ @@ -311,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 */ @@ -323,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; /* @@ -349,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]; @@ -370,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]; /* @@ -442,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] @@ -493,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", @@ -533,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", @@ -600,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", }; @@ -640,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 @@ -719,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; /* @@ -755,6 +839,7 @@ player_magic *m_info; */ feature_type *f_info; char *f_name; +char *f_tag; /* * The object kind arrays @@ -907,7 +992,7 @@ bool item_tester_no_ryoute = FALSE; * 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; /* @@ -948,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_maxdeapth; -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 @@ -1008,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; +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 @@ -1094,28 +1135,9 @@ int highscore_fd = -1; int mutant_regenerate_mod = 100; -/* - * Birth options - */ -bool easy_band; -bool vanilla_town; /* Use "vanilla" town without set quests */ -bool ironman_shops; /* Stores are permanently closed */ -bool ironman_small_levels; /* Always create unusually small dungeon levels */ -bool ironman_downward; /* Don't allow climbing upwards/recalling */ -bool ironman_autoscum; /* Permanently enable the autoscummer */ -bool lite_town; /* Use "lite" town without wilderness */ -bool ironman_empty_levels; /* Always create empty 'arena' levels */ -bool ironman_rooms; /* Always generate very unusual rooms */ -bool ironman_nightmare; /* Play the game in Nightmare mode */ -bool left_hander; -bool preserve_mode; -bool autoroller; -bool autochara; - - bool can_save = FALSE; /* Game can be saved */ -bool world_monster; +s16b world_monster; bool world_player; int cap_mon; @@ -1124,19 +1146,17 @@ int cap_hp; int cap_maxhp; u16b cap_nickname; -s16b battle_mon[4]; +IDX battle_mon[4]; int sel_monster; int battle_odds; int kakekin; u32b mon_odds[4]; -int pet_t_m_idx; -int riding_t_m_idx; - -s16b kubi_r_idx[MAX_KUBI]; -s16b today_mon; +MONSTER_IDX pet_t_m_idx; +MONSTER_IDX riding_t_m_idx; -monster_type party_mon[MAX_PARTY_MON]; +IDX kubi_r_idx[MAX_KUBI]; +IDX today_mon; bool write_level; @@ -1155,19 +1175,94 @@ bool generate_encounter; cptr screen_dump = NULL; +/*** Terrain feature variables ***/ + +/* Nothing */ +FEAT_IDX feat_none; + +/* Floor */ +FEAT_IDX feat_floor; + +/* Objects */ +FEAT_IDX feat_glyph; +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_entrance; + +/* Special traps */ +FEAT_IDX feat_trap_open; +FEAT_IDX feat_trap_armageddon; +FEAT_IDX feat_trap_piranha; + +/* Rubble */ +FEAT_IDX feat_rubble; + +/* Seams */ +FEAT_IDX feat_magma_vein; +FEAT_IDX feat_quartz_vein; + +/* Walls */ +FEAT_IDX feat_granite; +FEAT_IDX feat_permanent; + +/* Glass floor */ +FEAT_IDX feat_glass_floor; + +/* Glass walls */ +FEAT_IDX feat_glass_wall; +FEAT_IDX feat_permanent_glass_wall; + +/* Pattern */ +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 */ +FEAT_IDX feat_black_market; +FEAT_IDX feat_town; + +/* Terrains */ +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) */ +FEAT_IDX feat_undetected; + /* * Which dungeon ? */ -byte dungeon_type; -s16b *max_dlv; +DUNGEON_IDX dungeon_type; +DEPTH *max_dlv; -byte feat_wall_outer; -byte feat_wall_inner; -byte feat_wall_solid; -byte 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; +COMMAND_CODE now_message; bool use_menu; #ifdef CHUUKEI @@ -1176,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; +