OSDN Git Service

Initial Import
[nethackexpress/trunk.git] / include / trap.h
1 /*      SCCS Id: @(#)trap.h     3.4     2000/08/30      */
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /* NetHack may be freely redistributed.  See license for details. */
4
5 /* note for 3.1.0 and later: no longer manipulated by 'makedefs' */
6
7 #ifndef TRAP_H
8 #define TRAP_H
9
10 union vlaunchinfo {
11         short v_launch_otyp;    /* type of object to be triggered */
12         coord v_launch2;        /* secondary launch point (for boulders) */
13 };
14
15 struct trap {
16         struct trap *ntrap;
17         xchar tx,ty;
18         d_level dst;    /* destination for portals */
19         coord launch;
20         Bitfield(ttyp,5);
21         Bitfield(tseen,1);
22         Bitfield(once,1);
23         Bitfield(madeby_u,1); /* So monsters may take offence when you trap
24                                  them.  Recognizing who made the trap isn't
25                                  completely unreasonable, everybody has
26                                  their own style.  This flag is also needed
27                                  when you untrap a monster.  It would be too
28                                  easy to make a monster peaceful if you could
29                                  set a trap for it and then untrap it. */
30         union vlaunchinfo vl;
31 #define launch_otyp     vl.v_launch_otyp
32 #define launch2         vl.v_launch2
33 };
34
35 extern struct trap *ftrap;
36 #define newtrap()       (struct trap *) alloc(sizeof(struct trap))
37 #define dealloc_trap(trap) free((genericptr_t) (trap))
38
39 /* reasons for statue animation */
40 #define ANIMATE_NORMAL  0
41 #define ANIMATE_SHATTER 1
42 #define ANIMATE_SPELL   2
43
44 /* reasons for animate_statue's failure */
45 #define AS_OK            0      /* didn't fail */
46 #define AS_NO_MON        1      /* makemon failed */
47 #define AS_MON_IS_UNIQUE 2      /* statue monster is unique */
48
49 /* Note: if adding/removing a trap, adjust trap_engravings[] in mklev.c */
50
51 /* unconditional traps */
52 #define NO_TRAP         0
53 #define ARROW_TRAP      1
54 #define DART_TRAP       2
55 #define ROCKTRAP        3
56 #define SQKY_BOARD      4
57 #define BEAR_TRAP       5
58 #define LANDMINE        6
59 #define ROLLING_BOULDER_TRAP    7
60 #define SLP_GAS_TRAP    8
61 #define RUST_TRAP       9
62 #define FIRE_TRAP       10
63 #define PIT             11
64 #define SPIKED_PIT      12
65 #define HOLE            13
66 #define TRAPDOOR        14
67 #define TELEP_TRAP      15
68 #define LEVEL_TELEP     16
69 #define MAGIC_PORTAL    17
70 #define WEB             18
71 #define STATUE_TRAP     19
72 #define MAGIC_TRAP      20
73 #define ANTI_MAGIC      21
74 #define POLY_TRAP       22
75 #define TRAPNUM 23
76
77 #endif /* TRAP_H */