4 * Hack -- Prepare to use the "Secure" routines
6 #if defined(SET_UID) && defined(SECURE)
8 # define getuid() PlayerUID
9 # define geteuid() PlayerUID
12 #define KEYMAP_MODE_ORIG 0 /*!<
\83I
\83\8a\83W
\83i
\83\8b\83L
\81[
\94z
\92u / Mode for original keyset commands */
13 #define KEYMAP_MODE_ROGUE 1 /*!<
\83\8d\81[
\83O
\83\89\83C
\83N
\83L
\81[
\94z
\92u / Mode for roguelike keyset commands */
14 #define KEYMAP_MODES 2 /*!<
\83L
\81[
\94z
\92u
\82Ì
\90\94 / Number of keymap modes */
16 #define SCREEN_BUF_MAX_SIZE (4 * 65536) /*!< Max size of screen dump buffer */
19 #define CHEAT_OBJECT 0
20 #define CHEAT_MONSTER 1
21 #define CHEAT_DUNGEON 2
25 * Max numbers of macro trigger names
27 #define MAX_MACRO_MOD 12
28 #define MAX_MACRO_TRIG 200 /*!<
\93o
\98^
\82ð
\8b\96\82·
\83}
\83N
\83\8d\81i
\83g
\83\8a\83K
\81[
\81j
\82Ì
\8dÅ
\91å
\90\94 */
33 * Old variables for object flags such as flags1, flags2, and flags3
34 * are obsolated. Now single array flgs[TR_FLAG_SIZE] contains all
35 * object flags. And each flag is refered by single index number
36 * instead of a bit mask.
38 * Therefore it's very easy to add a lot of new flags; no one need to
39 * worry about in which variable a new flag should be put, nor to
40 * modify a huge number of files all over the source directory at once
41 * to add new flag variables such as flags4, a_ability_flags1, etc...
43 * All management of flags is now treated using a set of macros
44 * instead of bit operations.
45 * Note: These macros are using division, modulo, and bit shift
46 * operations, and it seems that these operations are rather slower
47 * than original bit operation. But since index numbers are almost
48 * always given as constant, such slow operations are performed in the
49 * compile time. So there is no problem on the speed.
51 * Exceptions of new flag management is a set of flags to control
52 * object generation and the curse flags. These are not yet rewritten
53 * in new index form; maybe these have no merit of rewriting.
56 #define have_flag(ARRAY, INDEX) !!((ARRAY)[(INDEX)/32] & (1L << ((INDEX)%32)))
57 #define add_flag(ARRAY, INDEX) ((ARRAY)[(INDEX)/32] |= (1L << ((INDEX)%32)))
58 #define remove_flag(ARRAY, INDEX) ((ARRAY)[(INDEX)/32] &= ~(1L << ((INDEX)%32)))
59 #define is_pval_flag(INDEX) ((TR_STR <= (INDEX) && (INDEX) <= TR_MAGIC_MASTERY) || (TR_STEALTH <= (INDEX) && (INDEX) <= TR_BLOWS))
60 #define have_pval_flags(ARRAY) !!((ARRAY)[0] & (0x00003f7f))
65 typedef struct tag_type tag_type;
74 * An entry for the object/monster allocation functions
76 * Pass 1 is determined from allocation information
77 * Pass 2 is determined from allocation restriction
78 * Pass 3 is determined from allocation calculation
81 typedef struct alloc_entry alloc_entry;
85 KIND_OBJECT_IDX index; /* The actual index */
87 DEPTH level; /* Base dungeon level */
88 PROB prob1; /* Probability, pass 1 */
89 PROB prob2; /* Probability, pass 2 */
90 PROB prob3; /* Probability, pass 3 */
92 u16b total; /* Unused for now */
95 extern u32b message__next;
96 extern u32b message__last;
97 extern u32b message__head;
98 extern u32b message__tail;
99 extern u32b *message__ptr;
100 extern char *message__buf;
102 extern bool msg_flag;
104 extern s16b macro__num;
105 extern concptr *macro__pat;
106 extern concptr *macro__act;
107 extern bool *macro__cmd;
108 extern char *macro__buf;
110 extern bool get_com_no_macros;
112 extern bool inkey_base;
113 extern bool inkey_xtra;
114 extern bool inkey_scan;
115 extern bool inkey_flag;
118 * Automatically generated "variable" declarations
120 extern int max_macrotrigger;
121 extern concptr macro_template;
122 extern concptr macro_modifier_chr;
123 extern concptr macro_modifier_name[MAX_MACRO_MOD];
124 extern concptr macro_trigger_name[MAX_MACRO_TRIG];
125 extern concptr macro_trigger_keycode[2][MAX_MACRO_TRIG];
127 extern COMMAND_CODE command_cmd;
128 extern COMMAND_ARG command_arg;
129 extern s16b command_rep;
130 extern DIRECTION command_dir;
131 extern s16b command_see;
132 extern TERM_LEN command_gap;
133 extern s16b command_wrk;
134 extern s16b command_new;
136 extern concptr keymap_act[KEYMAP_MODES][256];
138 /*** Music constants ***/
140 #define MUSIC_BASIC_DEFAULT 0
141 #define MUSIC_BASIC_GAMEOVER 1
142 #define MUSIC_BASIC_EXIT 2
143 #define MUSIC_BASIC_TOWN 3
144 #define MUSIC_BASIC_FIELD1 4
145 #define MUSIC_BASIC_FIELD2 5
146 #define MUSIC_BASIC_FIELD3 6
147 #define MUSIC_BASIC_DUN_LOW 7
148 #define MUSIC_BASIC_DUN_MED 8
149 #define MUSIC_BASIC_DUN_HIGH 9
150 #define MUSIC_BASIC_DUN_FEEL1 10
151 #define MUSIC_BASIC_DUN_FEEL2 11
152 #define MUSIC_BASIC_WINNER 12
153 #define MUSIC_BASIC_BUILD 13
154 #define MUSIC_BASIC_WILD 14
155 #define MUSIC_BASIC_QUEST 15
156 #define MUSIC_BASIC_ARENA 16
157 #define MUSIC_BASIC_BATTLE 17
158 #define MUSIC_BASIC_QUEST_CLEAR 18
159 #define MUSIC_BASIC_FINAL_QUEST_CLEAR 19
160 #define MUSIC_BASIC_AMBUSH 20
161 #define MUSIC_BASIC_MAX 21 /*!< BGM
\92è
\8b`
\82Ì
\8dÅ
\91å
\90\94 */
163 /*** Sound constants ***/
166 * Mega-Hack -- some primitive sound support (see "main-win.c")
168 * Some "sound" constants for "Term_xtra(TERM_XTRA_SOUND, val)"
175 #define SOUND_LEVEL 6
176 #define SOUND_DEATH 7
177 #define SOUND_STUDY 8
178 #define SOUND_TELEPORT 9
179 #define SOUND_SHOOT 10
180 #define SOUND_QUAFF 11
182 #define SOUND_WALK 13
183 #define SOUND_TPOTHER 14
184 #define SOUND_HITWALL 15
186 #define SOUND_STORE1 17
187 #define SOUND_STORE2 18
188 #define SOUND_STORE3 19
189 #define SOUND_STORE4 20
191 #define SOUND_OPENDOOR 22
192 #define SOUND_SHUTDOOR 23
193 #define SOUND_TPLEVEL 24
194 #define SOUND_SCROLL 25
196 #define SOUND_SELL 27
197 #define SOUND_WARN 28
198 #define SOUND_ROCKET 29 /*!< Somebody's shooting rockets */
199 #define SOUND_N_KILL 30 /*!< The player kills a non-living/undead monster */
200 #define SOUND_U_KILL 31 /*!< The player kills a unique */
201 #define SOUND_QUEST 32 /*!< The player has just completed a quest */
202 #define SOUND_HEAL 33 /*!< The player was healed a little bit */
203 #define SOUND_X_HEAL 34 /*!< The player was healed full health */
204 #define SOUND_BITE 35 /*!< A monster bites you */
205 #define SOUND_CLAW 36 /*!< A monster claws you */
206 #define SOUND_M_SPELL 37 /*!< A monster casts a miscellaneous spell */
207 #define SOUND_SUMMON 38 /*!< A monster casts a summoning spell */
208 #define SOUND_BREATH 39 /*!< A monster breathes */
209 #define SOUND_BALL 40 /*!< A monster casts a ball / bolt spell */
210 #define SOUND_M_HEAL 41 /*!< A monster heals itself somehow */
211 #define SOUND_ATK_SPELL 42 /*!< A monster casts a misc. offensive spell */
212 #define SOUND_EVIL 43 /*!< Something nasty has just happened! */
213 #define SOUND_TOUCH 44 /*!< A monster touches you */
214 #define SOUND_STING 45 /*!< A monster stings you */
215 #define SOUND_CRUSH 46 /*!< A monster crushes / envelopes you */
216 #define SOUND_SLIME 47 /*!< A monster drools/spits/etc on you */
217 #define SOUND_WAIL 48 /*!< A monster wails */
218 #define SOUND_WINNER 49 /*!< Just won the game! */
219 #define SOUND_FIRE 50 /*!< An item was burned */
220 #define SOUND_ACID 51 /*!< An item was destroyed by acid */
221 #define SOUND_ELEC 52 /*!< An item was destroyed by electricity */
222 #define SOUND_COLD 53 /*!< An item was shattered */
223 #define SOUND_ILLEGAL 54 /*!< Illegal command attempted */
224 #define SOUND_FAIL 55 /*!< Fail to get a spell off / activate an item */
225 #define SOUND_WAKEUP 56 /*!< A monster wakes up */
226 #define SOUND_INVULN 57 /*!< Invulnerability! */
227 #define SOUND_FALL 58 /*!< Falling through a trapdoor... */
228 #define SOUND_PAIN 59 /*!< A monster is in pain! */
229 #define SOUND_DESTITEM 60 /*!< An item was destroyed by misc. means */
230 #define SOUND_MOAN 61 /*!< A monster makes a moan/beg/insult attack */
231 #define SOUND_SHOW 62 /*!< A monster makes a "show" attack */
232 #define SOUND_UNUSED 63 /*!< (no sound for gaze attacks) */
233 #define SOUND_EXPLODE 64 /*!< Something (or somebody) explodes */
234 #define SOUND_GLASS 65 /*!< A glass feature was crashed */
235 #define SOUND_REFLECT 66 /*!< A bolt was reflected */
238 * Mega-Hack -- maximum known sounds
240 #define SOUND_MAX 67 /*!<
\8cø
\89Ê
\89¹
\92è
\8b`
\82Ì
\8dÅ
\91å
\90\94 */
243 * @brief
\96Á
\8fî
\95ñ
\82Ì
\8dÅ
\91å
\90\94 / Maximum number of "quarks" (see "io.c")
245 * Default: assume at most 512 different inscriptions are used<br>
246 * Was 512... 256 quarks added for random artifacts<br>
248 #define QUARK_MAX 768
253 * Hack -- The main "screen"
255 #define term_screen (angband_term[0])
258 * Hack -- conditional (or "bizarre") externs
262 extern void user_name(char *buf, int id);
267 extern int stricmp(concptr a, concptr b);
272 extern int usleep(huge usecs);
275 extern const char hexsym[16];
278 extern errr path_parse(char *buf, int max, concptr file);
279 extern errr path_build(char *buf, int max, concptr path, concptr file);
280 extern FILE *my_fopen(concptr file, concptr mode);
281 extern FILE *my_fopen_temp(char *buf, int max);
282 extern errr my_fgets(FILE *fff, char *buf, huge n);
283 extern errr my_fputs(FILE *fff, concptr buf, huge n);
284 extern errr my_fclose(FILE *fff);
285 extern errr fd_kill(concptr file);
286 extern errr fd_move(concptr file, concptr what);
287 extern errr fd_copy(concptr file, concptr what);
288 extern int fd_make(concptr file, BIT_FLAGS mode);
289 extern int fd_open(concptr file, int flags);
290 extern errr fd_lock(int fd, int what);
291 extern errr fd_seek(int fd, huge n);
292 extern errr fd_chop(int fd, huge n);
293 extern errr fd_read(int fd, char *buf, huge n);
294 extern errr fd_write(int fd, concptr buf, huge n);
295 extern errr fd_close(int fd);
296 extern void flush(void);
297 extern void bell(void);
298 extern errr play_music(int type, int num);
299 extern void select_floor_music(void);
300 extern void sound(int num);
301 extern void move_cursor(int row, int col);
302 extern void text_to_ascii(char *buf, concptr str);
303 extern void ascii_to_text(char *buf, concptr str);
304 extern errr macro_add(concptr pat, concptr act);
305 extern sint macro_find_exact(concptr pat);
306 extern char inkey(void);
307 extern concptr quark_str(STR_OFFSET num);
308 extern void quark_init(void);
309 extern u16b quark_add(concptr str);
310 extern s32b message_num(void);
311 extern concptr message_str(int age);
312 extern void message_add(concptr msg);
313 extern void msg_erase(void);
314 extern void msg_print(concptr msg);
315 extern void msg_print_wizard(int cheat_type, concptr msg);
317 extern void msg_format(concptr fmt, ...);
318 extern void msg_format_wizard(int cheat_type, concptr fmt, ...);
320 extern void screen_save(void);
321 extern void screen_load(void);
322 extern void c_put_str(TERM_COLOR attr, concptr str, TERM_LEN row, TERM_LEN col);
323 extern void put_str(concptr str, TERM_LEN row, TERM_LEN col);
324 extern void c_prt(TERM_COLOR attr, concptr str, TERM_LEN row, TERM_LEN col);
325 extern void prt(concptr str, TERM_LEN row, TERM_LEN col);
326 extern void c_roff(TERM_COLOR attr, concptr str);
327 extern void roff(concptr str);
328 extern void clear_from(int row);
329 extern bool askfor_aux(char *buf, int len, bool numpad_cursor);
330 extern bool askfor(char *buf, int len);
331 extern bool get_string(concptr prompt, char *buf, int len);
334 * Bit flags for control of get_check_strict()
336 #define CHECK_OKAY_CANCEL 0x01
337 #define CHECK_NO_ESCAPE 0x02
338 #define CHECK_NO_HISTORY 0x04
339 #define CHECK_DEFAULT_Y 0x08
340 extern bool get_check(concptr prompt);
341 extern bool get_check_strict(concptr prompt, BIT_FLAGS mode);
343 extern bool get_com(concptr prompt, char *command, bool z_escape);
344 extern QUANTITY get_quantity(concptr prompt, QUANTITY max);
345 extern void pause_line(int row);
346 extern void request_command(int shopping);
347 extern bool is_a_vowel(int ch);
348 extern int get_keymap_dir(char ch);
349 extern errr type_string(concptr str, uint len);
350 extern void roff_to_buf(concptr str, int wlen, char *tbuf, size_t bufsize);
353 extern void tag_sort(tag_type elements[], int number);
354 #endif /* SORT_R_INFO */
357 extern byte gamma_table[256];
358 extern void build_gamma_table(int gamma);
359 #endif /* SUPPORT_GAMMA */
361 extern size_t my_strcpy(char *buf, concptr src, size_t bufsize);
362 extern size_t my_strcat(char *buf, concptr src, size_t bufsize);
363 extern char *my_strstr(concptr haystack, concptr needle);
364 extern char *my_strchr(concptr ptr, char ch);
365 extern void str_tolower(char *str);
368 * Special key code used for inkey_special()
370 #define SKEY_MOD_MASK 0x0f00
371 #define SKEY_MOD_SHIFT 0x0100
372 #define SKEY_MOD_CONTROL 0x0200
374 #define SKEY_MASK 0xf000
375 #define SKEY_DOWN 0xf001
376 #define SKEY_LEFT 0xf002
377 #define SKEY_RIGHT 0xf003
378 #define SKEY_UP 0xf004
379 #define SKEY_PGUP 0xf005
380 #define SKEY_PGDOWN 0xf006
381 #define SKEY_TOP 0xf007
382 #define SKEY_BOTTOM 0xf008
383 extern int inkey_special(bool numpad_cursor);
386 extern void repeat_push(COMMAND_CODE what);
387 extern bool repeat_pull(COMMAND_CODE *what);
388 extern void repeat_check(void);