OSDN Git Service

153cb94cbd11448c3778aa691c316d7f7830bded
[hengband/hengband.git] / src / variable.c
1 /*!
2  * @file variable.c
3  * @brief グローバル変数定義 / Angband variables
4  * @date 2014/10/05
5  * @author
6  * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke<br>
7  * <br>
8  * This software may be copied and distributed for educational, research,<br>
9  * and not for profit purposes provided that this copyright and statement<br>
10  * are included in all such copies.  Other copyrights may also apply.<br>
11  */
12
13 #include "angband.h"
14
15 /*!
16  * コピーライト情報 /
17  * Hack -- Link a copyright message into the executable
18  */
19 const concptr copyright[5] =
20 {
21         "Copyright (c) 1989 James E. Wilson, Robert A. Keoneke",
22         "",
23         "This software may be copied and distributed for educational, research,",
24         "and not for profit purposes provided that this copyright and statement",
25         "are included in all such copies."
26 };
27
28 int max_macrotrigger = 0; /*!< 現在登録中のマクロ(トリガー)の数 */
29 concptr macro_template = NULL; /*!< Angband設定ファイルのT: タグ情報から読み込んだ長いTコードを処理するために利用する文字列ポインタ */
30 concptr macro_modifier_chr; /*!< &x# で指定されるマクロトリガーに関する情報を記録する文字列ポインタ */
31 concptr macro_modifier_name[MAX_MACRO_MOD]; /*!< マクロ上で取り扱う特殊キーを文字列上で表現するためのフォーマットを記録した文字列ポインタ配列 */
32 concptr macro_trigger_name[MAX_MACRO_TRIG]; /*!< マクロのトリガーコード */
33 concptr macro_trigger_keycode[2][MAX_MACRO_TRIG];  /*!< マクロの内容 */
34
35 int level_up = 0; /*!< レベルアップの際に遅延してcalc_mana()関数上で上昇量を表示するかどうかの判定フラグ */
36
37
38 /* 
39  * 自動拾い/破壊設定のリストに関する変数 / List for auto-picker/destroyer entries
40  */
41 int max_autopick = 0; /*!< 現在登録している自動拾い/破壊設定の数 */
42 int max_max_autopick = 0; /*!< 自動拾い/破壊設定の限界数 */
43 autopick_type *autopick_list = NULL; /*!< 自動拾い/破壊設定構造体のポインタ配列 */
44
45 /*
46  * Savefile version
47  */
48 byte h_ver_major; /* Savefile version for Hengband 1.1.1 and later */
49 byte h_ver_minor;
50 byte h_ver_patch;
51 byte h_ver_extra;
52
53 byte sf_extra;          /* Savefile's encoding key */
54
55 byte z_major;           /* Savefile version for Hengband */
56 byte z_minor;
57 byte z_patch;
58
59 /*
60  * Savefile information
61  */
62 u32b sf_system;                 /* Operating system info */
63 u32b sf_when;                   /* Time when savefile created */
64 u16b sf_lives;                  /* Number of past "lives" with this file */
65 u16b sf_saves;                  /* Number of "saves" during this life */
66
67 /*
68  * Run-time arguments
69  */
70 bool arg_fiddle;                        /* Command arg -- Request fiddle mode */
71 bool arg_wizard;                        /* Command arg -- Request wizard mode */
72 bool arg_sound;                         /* Command arg -- Request special sounds */
73 bool arg_music;                         /* Command arg -- Request special musics */
74 byte arg_graphics;                      /* Command arg -- Request graphics mode */
75 bool arg_monochrome;            /* Command arg -- Request monochrome mode */
76 bool arg_force_original;        /* Command arg -- Request original keyset */
77 bool arg_force_roguelike;       /* Command arg -- Request roguelike keyset */
78 bool arg_bigtile = FALSE;       /* Command arg -- Request big tile mode */
79
80 /*
81  * Various things
82  */
83 bool character_generated;       /* The character exists */
84 bool character_dungeon;         /* The character has a dungeon */
85 bool character_loaded;          /* The character was loaded from a savefile */
86 bool character_saved;           /* The character was just saved to a savefile */
87
88 bool character_icky;            /* The game is in an icky full screen mode */
89 bool character_xtra;            /* The game is in an icky startup mode */
90
91 bool creating_savefile;         /* New savefile is currently created */
92
93 u32b seed_flavor;               /* Hack -- consistent object colors */
94 u32b seed_town;                 /* Hack -- consistent town layout */
95
96 s16b command_cmd;               /* Current "Angband Command" */
97
98 COMMAND_ARG command_arg;        /*!< 各種コマンドの汎用的な引数として扱う / Gives argument of current command */
99 COMMAND_NUM command_rep;        /*!< 各種コマンドの汎用的なリピート数として扱う / Gives repetition of current command */
100 DIRECTION command_dir;          /*!< 各種コマンドの汎用的な方向値処理として扱う/ Gives direction of current command */
101
102 s16b command_see;               /* See "object1.c" */
103 s16b command_wrk;               /* See "object1.c" */
104
105 TERM_LEN command_gap = 999;         /* See "object1.c" */
106
107 s16b command_new;               /* Command chaining from inven/equip view */
108
109 bool msg_flag;                  /* Used in msg_print() for "buffering" */
110
111 s16b running;                   /* Current counter for running, if any */
112 GAME_TURN resting;                      /* Current counter for resting, if any */
113
114 bool invoking_midnight_curse; /*!< 悪夢モード時の真夜中太古の呪い発生処理フラグ */
115
116 GAME_TURN turn;                         /*!< 画面表示上のゲーム時間基準となるターン / Current game turn */
117 GAME_TURN turn_limit;           /*!< turnの最大値 / Limit of game turn */
118 GAME_TURN dungeon_turn;                 /*!< NASTY生成の計算に関わる内部ターン値 / Game turn in dungeon */
119 GAME_TURN dungeon_turn_limit;   /*!< dungeon_turnの最大値 / Limit of game turn in dungeon */
120 GAME_TURN old_turn;                     /* Turn when level began */
121 GAME_TURN old_battle;
122
123 bool use_sound;                 /* The "sound" mode is enabled */
124 bool use_music;                 /* The "music" mode is enabled */
125 bool use_graphics;              /* The "graphics" mode is enabled */
126 bool use_bigtile = FALSE;
127
128 s16b signal_count;              /* Hack -- Count interupts */
129
130 bool inkey_base;                /* See the "inkey()" function */
131 bool inkey_xtra;                /* See the "inkey()" function */
132 bool inkey_scan;                /* See the "inkey()" function */
133 bool inkey_flag;                /* See the "inkey()" function */
134 bool get_com_no_macros = FALSE; /* Expand macros in "get_com" or not */
135
136 OBJECT_SUBTYPE_VALUE coin_type; /* Hack -- force coin type */
137
138 bool opening_chest;             /* Hack -- prevent chest generation */
139
140 bool shimmer_monsters;  /* Hack -- optimize multi-hued monsters */
141 bool shimmer_objects;   /* Hack -- optimize multi-hued objects */
142
143 bool repair_monsters;   /* Hack -- optimize detect monsters */
144 bool repair_objects;    /* Hack -- optimize detect objects */
145
146 bool is_loading_now;    /*!< ロード直後にcalc_bonus()時の徳変化、及びsanity_blast()による異常を抑止する */
147 bool hack_mutation;
148
149 s16b inven_cnt; /* Number of items in inventory */
150 s16b equip_cnt; /* Number of items in equipment */
151
152 OBJECT_IDX o_max = 1; /* Number of allocated objects */
153 OBJECT_IDX o_cnt = 0; /* Number of live objects */
154
155 MONSTER_IDX m_max = 1; /* Number of allocated monsters */
156 MONSTER_IDX m_cnt = 0; /* Number of live monsters */
157
158 MONSTER_IDX hack_m_idx = 0;     /* Hack -- see "process_monsters()" */
159 MONSTER_IDX hack_m_idx_ii = 0;
160 bool multi_rew = FALSE;
161 char summon_kin_type;   /* Hack, by Julian Lighton: summon 'relatives' */
162
163 int total_friends = 0;
164 s32b friend_align = 0;
165
166 int leaving_quest = 0;
167 bool reinit_wilderness = FALSE;
168
169
170
171 /*
172  * Dungeon variables
173  */
174
175 bool closing_flag;              /* Dungeon is closing */
176
177
178 /*
179  * Dungeon size info
180  */
181
182 POSITION panel_row_min, panel_row_max;
183 POSITION panel_col_min, panel_col_max;
184 POSITION panel_col_prt, panel_row_prt;
185
186
187 /*
188  * Targetting variables
189  */
190 MONSTER_IDX target_who;
191 POSITION target_col;
192 POSITION target_row;
193
194
195 /*
196  * User info
197  */
198 int player_uid;
199 int player_euid;
200 int player_egid;
201
202 /*
203  * Stripped version of "player_name"
204  */
205 char player_base[32];
206
207
208 /*
209  * Buffer to hold the current savefile name
210  * 'savefile' holds full path name. 'savefile_base' holds only base name.
211  */
212 char savefile[1024];
213 char savefile_base[40];
214
215 POSITION_IDX lite_n; //!< Array of grids lit by player lite (see "current_floor_ptr->grid_array.c")
216 POSITION lite_y[LITE_MAX];
217 POSITION lite_x[LITE_MAX];
218
219 POSITION_IDX mon_lite_n; //!< Array of grids lit by player lite (see "current_floor_ptr->grid_array.c")
220 POSITION mon_lite_y[MON_LITE_MAX];
221 POSITION mon_lite_x[MON_LITE_MAX];
222
223 POSITION_IDX view_n; //!< Array of grids viewable to the player (see "current_floor_ptr->grid_array.c")
224 POSITION view_y[VIEW_MAX];
225 POSITION view_x[VIEW_MAX];
226
227 POSITION_IDX temp_n; //!< Array of grids for use by various functions (see "current_floor_ptr->grid_array.c")
228 POSITION temp_y[TEMP_MAX];
229 POSITION temp_x[TEMP_MAX];
230
231 POSITION_IDX redraw_n = 0; //!< Array of grids for delayed visual updating (see "current_floor_ptr->grid_array.c")
232 POSITION redraw_y[REDRAW_MAX];
233 POSITION redraw_x[REDRAW_MAX];
234
235
236 /*
237  * Number of active macros.
238  */
239 s16b macro__num;
240
241 /*
242  * Array of macro patterns [MACRO_MAX]
243  */
244 concptr *macro__pat;
245
246 /*
247  * Array of macro actions [MACRO_MAX]
248  */
249 concptr *macro__act;
250
251 /*
252  * Array of macro types [MACRO_MAX]
253  */
254 bool *macro__cmd;
255
256 /*
257  * Current macro action [1024]
258  */
259 char *macro__buf;
260
261
262 /*
263  * The number of quarks
264  */
265 STR_OFFSET quark__num;
266
267 /*
268  * The pointers to the quarks [QUARK_MAX]
269  */
270 concptr *quark__str;
271
272
273 /*
274  * The next "free" index to use
275  */
276 u32b message__next;
277
278 /*
279  * The index of the oldest message (none yet)
280  */
281 u32b message__last;
282
283 /*
284  * The next "free" offset
285  */
286 u32b message__head;
287
288 /*
289  * The offset to the oldest used char (none yet)
290  */
291 u32b message__tail;
292
293 /*
294  * The array of offsets, by index [MESSAGE_MAX]
295  */
296 u32b *message__ptr;
297
298 /*
299  * The array of chars, by offset [MESSAGE_BUF]
300  */
301 char *message__buf;
302
303 BIT_FLAGS option_flag[8]; //!< The array of normal options
304 BIT_FLAGS option_mask[8]; //!< The array of normal options
305 BIT_FLAGS window_flag[8]; //!< The array of window options
306 BIT_FLAGS window_mask[8]; //!< The array of window options
307
308 /*
309  * The array of window pointers
310  */
311 term *angband_term[8];
312
313 /*
314  * Standard window names
315  */
316 const char angband_term_name[8][16] =
317 {
318         "Hengband",
319         "Term-1",
320         "Term-2",
321         "Term-3",
322         "Term-4",
323         "Term-5",
324         "Term-6",
325         "Term-7"
326 };
327
328
329 /*
330  * Global table of color definitions
331  */
332 byte angband_color_table[256][4] =
333 {
334         {0x00, 0x00, 0x00, 0x00},       /* TERM_DARK */
335         {0x00, 0xFF, 0xFF, 0xFF},       /* TERM_WHITE */
336         {0x00, 0x80, 0x80, 0x80},       /* TERM_SLATE */
337         {0x00, 0xFF, 0x80, 0x00},       /* TERM_ORANGE */
338         {0x00, 0xC0, 0x00, 0x00},       /* TERM_RED */
339         {0x00, 0x00, 0x80, 0x40},       /* TERM_GREEN */
340         {0x00, 0x00, 0x00, 0xFF},       /* TERM_BLUE */
341         {0x00, 0x80, 0x40, 0x00},       /* TERM_UMBER */
342         {0x00, 0x40, 0x40, 0x40},       /* TERM_L_DARK */
343         {0x00, 0xC0, 0xC0, 0xC0},       /* TERM_L_WHITE */
344         {0x00, 0xFF, 0x00, 0xFF},       /* TERM_VIOLET */
345         {0x00, 0xFF, 0xFF, 0x00},       /* TERM_YELLOW */
346         {0x00, 0xFF, 0x00, 0x00},       /* TERM_L_RED */
347         {0x00, 0x00, 0xFF, 0x00},       /* TERM_L_GREEN */
348         {0x00, 0x00, 0xFF, 0xFF},       /* TERM_L_BLUE */
349         {0x00, 0xC0, 0x80, 0x40}        /* TERM_L_UMBER */
350 };
351
352
353 /*
354  * Standard sound names
355  */
356 const concptr angband_sound_name[SOUND_MAX] =
357 {
358         "dummy",
359         "hit",
360         "miss",
361         "flee",
362         "drop",
363         "kill",
364         "level",
365         "death",
366         "study",
367         "teleport",
368         "shoot",
369         "quaff",
370         "zap",
371         "walk",
372         "tpother",
373         "hitwall",
374         "eat",
375         "store1",
376         "store2",
377         "store3",
378         "store4",
379         "dig",
380         "opendoor",
381         "shutdoor",
382         "tplevel",
383         "scroll",
384         "buy",
385         "sell",
386         "warn",
387         "rocket",
388         "n_kill",
389         "u_kill",
390         "quest",
391         "heal",
392         "x_heal",
393         "bite",
394         "claw",
395         "m_spell",
396         "summon",
397         "breath",
398         "ball",
399         "m_heal",
400         "atkspell",
401         "evil",
402         "touch",
403         "sting",
404         "crush",
405         "slime",
406         "wail",
407         "winner",
408         "fire",
409         "acid",
410         "elec",
411         "cold",
412         "illegal",
413         "fail",
414         "wakeup",
415         "invuln",
416         "fall",
417         "pain",
418         "destitem",
419         "moan",
420         "show",
421         "unused",
422         "explode",
423         "glass",
424         "reflect",
425 };
426
427 /*
428  * Standard music names
429  */
430 const concptr angband_music_basic_name[MUSIC_BASIC_MAX] =
431 {
432         "default",
433         "gameover",
434         "exit",
435         "town",
436         "field1",
437         "field2",
438         "field3",
439         "dun_low",
440         "dun_med",
441         "dun_high",
442         "feel1",
443         "feel2",
444         "winner",
445         "build",
446         "wild",
447         "quest",
448         "arena",
449         "battle",
450         "quest_clear",
451         "final_quest_clear",
452         "ambush",
453 };
454
455
456 /*
457  * The array of "current_floor_ptr->grid_array grids" [MAX_WID][MAX_HGT].
458  * Not completely allocated, that would be inefficient
459  * Not completely hardcoded, that would overflow memory
460  */
461 floor_type floor;
462 floor_type *current_floor_ptr = &floor;
463
464 /*
465  * The array of saved floors
466  */
467 saved_floor_type saved_floors[MAX_SAVED_FLOORS];
468
469
470 /*
471  * Number of floor_id used from birth
472  */
473 FLOOR_IDX max_floor_id;
474
475
476 world_type world;
477 world_type *current_world_ptr = &world;
478
479
480 /*
481  * Sign for current process used in temporal files.
482  * Actually it is the start time of current process.
483  */
484 u32b saved_floor_file_sign;
485
486
487 /*
488  * Maximum number of towns
489  */
490 TOWN_IDX max_towns;
491
492 /*
493  * The towns [max_towns]
494  */
495 town_type *town_info;
496
497
498 /*
499  * The player's inventory [INVEN_TOTAL]
500  */
501 object_type *inventory;
502
503
504 /*
505  * The size of "alloc_kind_table" (at most max_k_idx * 4)
506  */
507 s16b alloc_kind_size;
508
509 /*
510  * The entries in the "kind allocator table"
511  */
512 alloc_entry *alloc_kind_table;
513
514
515 /*
516  * The size of "alloc_race_table" (at most max_r_idx)
517  */
518 s16b alloc_race_size;
519
520 /*
521  * The entries in the "race allocator table"
522  */
523 alloc_entry *alloc_race_table;
524
525
526 /*
527  * Specify attr/char pairs for visual special effects
528  * Be sure to use "index & 0x7F" to avoid illegal access
529  */
530 TERM_COLOR misc_to_attr[256];
531 char misc_to_char[256];
532
533
534 /*
535  * Specify attr/char pairs for inventory items (by tval)
536  * Be sure to use "index & 0x7F" to avoid illegal access
537  */
538 TERM_COLOR tval_to_attr[128];
539 char tval_to_char[128];
540
541
542 /*
543  * Keymaps for each "mode" associated with each keypress.
544  */
545 concptr keymap_act[KEYMAP_MODES][256];
546
547
548
549 /*** Player information ***/
550
551 /*
552  * Static player info record
553  */
554 player_type p_body;
555
556 /*
557  * Pointer to the player info
558  */
559 player_type *p_ptr = &p_body;
560
561 /*
562  * Pointer to the player tables
563  * (sex, race, class, magic)
564  */
565 const player_sex *sp_ptr;
566 const player_race *rp_ptr;
567 const player_class *cp_ptr;
568 const player_seikaku *ap_ptr;
569 const player_magic *mp_ptr;
570
571
572 /*
573  * The last character rolled,
574  * holded for quick start
575  */
576 birther previous_char;
577
578
579 /*
580  * The vault generation arrays
581  */
582 vault_type *v_info;
583 char *v_name;
584 char *v_text;
585
586 /*
587  * The skill table
588  */
589 skill_table *s_info;
590
591 /*
592  * The magic info
593  */
594 player_magic *m_info;
595
596 /*
597  * The terrain feature arrays
598  */
599 feature_type *f_info;
600 char *f_name;
601 char *f_tag;
602
603 /*
604  * The object kind arrays
605  */
606 object_kind *k_info;
607 char *k_name;
608 char *k_text;
609
610 /*
611  * The artifact arrays
612  */
613 artifact_type *a_info;
614 char *a_name;
615 char *a_text;
616
617 /*
618  * The ego-item arrays
619  */
620 ego_item_type *e_info;
621 char *e_name;
622 char *e_text;
623
624
625 /*
626  * The monster race arrays
627  */
628 monster_race *r_info;
629 char *r_name;
630 char *r_text;
631
632
633 /*
634  * The dungeon arrays
635  */
636 dungeon_type *d_info;
637 char *d_name;
638 char *d_text;
639
640
641 concptr ANGBAND_SYS = "xxx"; //!< Hack -- The special Angband "System Suffix" This variable is used to choose an appropriate "pref-xxx" file
642
643
644 #ifdef JP
645 concptr ANGBAND_KEYBOARD = "JAPAN"; //!< Hack -- The special Angband "Keyboard Suffix" This variable is used to choose an appropriate macro-trigger definition
646 #else
647 concptr ANGBAND_KEYBOARD = "0";
648 #endif
649
650 concptr ANGBAND_GRAF = "ascii"; //!< Hack -- The special Angband "Graphics Suffix" This variable is used to choose an appropriate "graf-xxx" file
651 concptr ANGBAND_DIR; //!< Path name: The main "lib" directory This variable is not actually used anywhere in the code
652 concptr ANGBAND_DIR_APEX; //!< High score files (binary) These files may be portable between platforms
653 concptr ANGBAND_DIR_BONE; //!< Bone files for player ghosts (ascii) These files are portable between platforms
654 concptr ANGBAND_DIR_DATA; //!< Binary image files for the "*_info" arrays (binary) These files are not portable between platforms
655 concptr ANGBAND_DIR_EDIT; //!< Textual template files for the "*_info" arrays (ascii) These files are portable between platforms
656 concptr ANGBAND_DIR_SCRIPT; //!< Script files These files are portable between platforms.
657 concptr ANGBAND_DIR_FILE; //!< Various extra files (ascii) These files may be portable between platforms
658 concptr ANGBAND_DIR_HELP; //!< Help files (normal) for the online help (ascii) These files are portable between platforms
659 concptr ANGBAND_DIR_INFO; //!< Help files (spoilers) for the online help (ascii) These files are portable between platforms
660 concptr ANGBAND_DIR_PREF; //!< Default user "preference" files (ascii) These files are rarely portable between platforms
661 concptr ANGBAND_DIR_SAVE; //!< Savefiles for current characters (binary)
662 concptr ANGBAND_DIR_USER; //!< User "preference" files (ascii) These files are rarely portable between platforms
663 concptr ANGBAND_DIR_XTRA; //!< Various extra files (binary) These files are rarely portable between platforms
664
665
666 /*
667  * Here is a "pseudo-hook" used during calls to "get_item()" and
668  * "show_inven()" and "show_equip()", and the choice window routines.
669  */
670 OBJECT_TYPE_VALUE item_tester_tval;
671
672
673 /*
674  * Here is a "hook" used during calls to "get_item()" and
675  * "show_inven()" and "show_equip()", and the choice window routines.
676  */
677 bool (*item_tester_hook)(object_type*);
678
679
680
681 /*
682  * Current "comp" function for ang_sort()
683  */
684 bool (*ang_sort_comp)(vptr u, vptr v, int a, int b);
685
686
687 /*
688  * Current "swap" function for ang_sort()
689  */
690 void (*ang_sort_swap)(vptr u, vptr v, int a, int b);
691
692
693
694 /*
695  * Hack -- function hooks to restrict "get_mon_num_prep()" function
696  */
697 monsterrace_hook_type get_mon_num_hook;
698 monsterrace_hook_type get_mon_num2_hook;
699
700
701 /*
702  * Hack -- function hook to restrict "get_obj_num_prep()" function
703  */
704 bool (*get_obj_num_hook)(KIND_OBJECT_IDX k_idx);
705
706
707 /*
708  * Wilderness
709  */
710 wilderness_type **wilderness;
711
712
713 /*
714  * Buildings
715  */
716 building_type building[MAX_BLDG];
717
718
719 /*
720  * Maximum number of quests
721  */
722 QUEST_IDX max_q_idx;
723
724 /*
725  * Maximum number of monsters in r_info.txt
726  */
727 MONRACE_IDX max_r_idx;
728
729 /*
730  * Maximum number of items in k_info.txt
731  */
732 KIND_OBJECT_IDX max_k_idx;
733
734 /*
735  * Maximum number of vaults in v_info.txt
736  */
737 VAULT_IDX max_v_idx;
738
739 /*
740  * Maximum number of terrain features in f_info.txt
741  */
742 FEAT_IDX max_f_idx;
743
744 /*
745  * Maximum number of artifacts in a_info.txt
746  */
747 ARTIFACT_IDX max_a_idx;
748
749 /*
750  * Maximum number of ego-items in e_info.txt
751  */
752 EGO_IDX max_e_idx;
753
754 /*
755  * Maximum number of dungeon in e_info.txt
756  */
757 DUNGEON_IDX max_d_idx;
758
759
760
761 /*
762  * Quest info
763  */
764 quest_type *quest;
765
766 /*
767  * Quest text
768  */
769 char quest_text[10][80];
770
771 /*
772  * Current line of the quest text
773  */
774 int quest_text_line;
775
776 /*
777  * Default spell color table (quark index)
778  */
779 s16b gf_color[MAX_GF];
780
781 /*
782  * Flags for initialization
783  */
784 int init_flags;
785
786
787 /*
788  * The "highscore" file descriptor, if available.
789  */
790 int highscore_fd = -1;
791
792 int mutant_regenerate_mod = 100;
793
794 bool can_save = FALSE;        /* Game can be saved */
795
796 s16b world_monster;
797
798 int cap_mon;
799 int cap_mspeed;
800 HIT_POINT cap_hp;
801 HIT_POINT cap_maxhp;
802 STR_OFFSET cap_nickname;
803
804 MONRACE_IDX battle_mon[4];
805 int sel_monster;
806 int battle_odds;
807 PRICE kakekin;
808 u32b mon_odds[4];
809
810 MONSTER_IDX pet_t_m_idx;
811 MONSTER_IDX riding_t_m_idx;
812
813 MONSTER_IDX kubi_r_idx[MAX_KUBI];
814 MONSTER_IDX today_mon;
815
816 bool write_level;
817
818 u32b playtime;
819 u32b start_time;
820
821 bool sukekaku;
822 bool new_mane;
823
824 bool mon_fight;
825
826 bool ambush_flag;
827 bool generate_encounter;
828
829 concptr screen_dump = NULL;
830
831 /*** Terrain feature variables ***/
832
833 /* Nothing */
834 FEAT_IDX feat_none;
835
836 /* Floor */
837 FEAT_IDX feat_floor;
838
839 /* Objects */
840 FEAT_IDX feat_glyph;
841 FEAT_IDX feat_explosive_rune;
842 FEAT_IDX feat_mirror;
843
844 /* Stairs */
845 FEAT_IDX feat_up_stair;
846 FEAT_IDX feat_down_stair;
847 FEAT_IDX feat_entrance;
848
849 /* Special traps */
850 FEAT_IDX feat_trap_open;
851 FEAT_IDX feat_trap_armageddon;
852 FEAT_IDX feat_trap_piranha;
853
854 /* Rubble */
855 FEAT_IDX feat_rubble;
856
857 /* Seams */
858 FEAT_IDX feat_magma_vein;
859 FEAT_IDX feat_quartz_vein;
860
861 /* Walls */
862 FEAT_IDX feat_granite;
863 FEAT_IDX feat_permanent;
864
865 /* Glass floor */
866 FEAT_IDX feat_glass_floor;
867
868 /* Glass walls */
869 FEAT_IDX feat_glass_wall;
870 FEAT_IDX feat_permanent_glass_wall;
871
872 /* Pattern */
873 FEAT_IDX feat_pattern_start;
874 FEAT_IDX feat_pattern_1;
875 FEAT_IDX feat_pattern_2;
876 FEAT_IDX feat_pattern_3;
877 FEAT_IDX feat_pattern_4;
878 FEAT_IDX feat_pattern_end;
879 FEAT_IDX feat_pattern_old;
880 FEAT_IDX feat_pattern_exit;
881 FEAT_IDX feat_pattern_corrupted;
882
883 /* Various */
884 FEAT_IDX feat_black_market;
885 FEAT_IDX feat_town;
886
887 /* Terrains */
888 FEAT_IDX feat_deep_water;
889 FEAT_IDX feat_shallow_water;
890 FEAT_IDX feat_deep_lava;
891 FEAT_IDX feat_shallow_lava;
892 FEAT_IDX feat_heavy_cold_zone;
893 FEAT_IDX feat_cold_zone;
894 FEAT_IDX feat_heavy_electrical_zone;
895 FEAT_IDX feat_electrical_zone;
896 FEAT_IDX feat_deep_acid_puddle;
897 FEAT_IDX feat_shallow_acid_puddle;
898 FEAT_IDX feat_deep_poisonous_puddle;
899 FEAT_IDX feat_shallow_poisonous_puddle;
900 FEAT_IDX feat_dirt;
901 FEAT_IDX feat_grass;
902 FEAT_IDX feat_flower;
903 FEAT_IDX feat_brake;
904 FEAT_IDX feat_tree;
905 FEAT_IDX feat_mountain;
906 FEAT_IDX feat_swamp;
907
908 /* Unknown grid (not detected) */
909 FEAT_IDX feat_undetected;
910
911 /*
912  * Which dungeon ?
913  */
914 DEPTH *max_dlv;
915
916 FEAT_IDX feat_wall_outer;
917 FEAT_IDX feat_wall_inner;
918 FEAT_IDX feat_wall_solid;
919 FEAT_IDX feat_ground_type[100], feat_wall_type[100];
920
921 bool now_damaged;
922 COMMAND_CODE now_message;
923 bool use_menu;
924
925 #ifdef CHUUKEI
926 bool chuukei_server;
927 bool chuukei_client;
928 char *server_name;
929 int server_port;
930 #endif
931
932 /* for movie */
933 bool browsing_movie;
934
935 #ifdef TRAVEL
936 /* for travel */
937 travel_type travel;
938 #endif
939
940 /* for snipers */
941 int snipe_type = SP_NONE;
942 bool reset_concent = FALSE;   /* Concentration reset flag */
943 bool is_fired = FALSE;
944