OSDN Git Service

apply #37970
[jnethack/source.git] / include / artifact.h
1 /* NetHack 3.6  artifact.h      $NHDT-Date: 1433050871 2015/05/31 05:41:11 $  $NHDT-Branch: master $:$NHDT-Revision: 1.11 $ */
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /* NetHack may be freely redistributed.  See license for details. */
4
5 #ifndef ARTIFACT_H
6 #define ARTIFACT_H
7
8 #define SPFX_NONE 0x00000000L   /* no special effects, just a bonus */
9 #define SPFX_NOGEN 0x00000001L  /* item is special, bequeathed by gods */
10 #define SPFX_RESTR 0x00000002L  /* item is restricted - can't be named */
11 #define SPFX_INTEL 0x00000004L  /* item is self-willed - intelligent */
12 #define SPFX_SPEAK 0x00000008L  /* item can speak (not implemented) */
13 #define SPFX_SEEK 0x00000010L   /* item helps you search for things */
14 #define SPFX_WARN 0x00000020L   /* item warns you of danger */
15 #define SPFX_ATTK 0x00000040L   /* item has a special attack (attk) */
16 #define SPFX_DEFN 0x00000080L   /* item has a special defence (defn) */
17 #define SPFX_DRLI 0x00000100L   /* drains a level from monsters */
18 #define SPFX_SEARCH 0x00000200L /* helps searching */
19 #define SPFX_BEHEAD 0x00000400L /* beheads monsters */
20 #define SPFX_HALRES 0x00000800L /* blocks hallucinations */
21 #define SPFX_ESP 0x00001000L    /* ESP (like amulet of ESP) */
22 #define SPFX_STLTH 0x00002000L  /* Stealth */
23 #define SPFX_REGEN 0x00004000L  /* Regeneration */
24 #define SPFX_EREGEN 0x00008000L /* Energy Regeneration */
25 #define SPFX_HSPDAM 0x00010000L /* 1/2 spell damage (on player) in combat */
26 #define SPFX_HPHDAM \
27     0x00020000L                /* 1/2 physical damage (on player) in combat */
28 #define SPFX_TCTRL 0x00040000L /* Teleportation Control */
29 #define SPFX_LUCK 0x00080000L  /* Increase Luck (like Luckstone) */
30 #define SPFX_DMONS 0x00100000L /* attack bonus on one monster type */
31 #define SPFX_DCLAS 0x00200000L /* attack bonus on monsters w/ symbol mtype \
32                                   */
33 #define SPFX_DFLAG1 0x00400000L  /* attack bonus on monsters w/ mflags1 flag \
34                                     */
35 #define SPFX_DFLAG2 0x00800000L  /* attack bonus on monsters w/ mflags2 flag \
36                                     */
37 #define SPFX_DALIGN 0x01000000L  /* attack bonus on non-aligned monsters  */
38 #define SPFX_DBONUS 0x01F00000L  /* attack bonus mask */
39 #define SPFX_XRAY 0x02000000L    /* gives X-RAY vision to player */
40 #define SPFX_REFLECT 0x04000000L /* Reflection */
41 #define SPFX_PROTECT 0x08000000L /* Protection */
42
43 struct artifact {
44     short otyp;
45     const char *name;
46     unsigned long spfx;  /* special effect from wielding/wearing */
47     unsigned long cspfx; /* special effect just from carrying obj */
48     unsigned long mtype; /* monster type, symbol, or flag */
49     struct attack attk, defn, cary;
50     uchar inv_prop;     /* property obtained by invoking artifact */
51     aligntyp alignment; /* alignment of bequeathing gods */
52     short role;         /* character role associated with */
53     short race;         /* character race associated with */
54     long cost; /* price when sold to hero (default 100 x base cost) */
55     char acolor;        /* color to use if artifact 'glows' */
56 };
57
58 /* invoked properties with special powers */
59 #define TAMING (LAST_PROP + 1)
60 #define HEALING (LAST_PROP + 2)
61 #define ENERGY_BOOST (LAST_PROP + 3)
62 #define UNTRAP (LAST_PROP + 4)
63 #define CHARGE_OBJ (LAST_PROP + 5)
64 #define LEV_TELE (LAST_PROP + 6)
65 #define CREATE_PORTAL (LAST_PROP + 7)
66 #define ENLIGHTENING (LAST_PROP + 8)
67 #define CREATE_AMMO (LAST_PROP + 9)
68
69 #endif /* ARTIFACT_H */