X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fdefines.h;h=4090920d67aa5de723271885ec99aa0196e75a80;hb=4275b2dad76f7e20dde05e6e0c3b95854613ea66;hp=9d02086b5ef0421359d66b972a33564f9c2a661b;hpb=d259dca7f2f5d5f2ed54bc53a86ae7915fad3aec;p=hengband%2Fhengband.git diff --git a/src/defines.h b/src/defines.h index 9d02086b5..4090920d6 100644 --- a/src/defines.h +++ b/src/defines.h @@ -55,9 +55,9 @@ * "(FAKE_VER_MAJOR-10).(FAKE_VER_MINOR).(FAKE_VER_PATCH)". */ #define FAKE_VERSION 0 -#define FAKE_VER_MAJOR 11 -#define FAKE_VER_MINOR 7 -#define FAKE_VER_PATCH 0 +#define FAKE_VER_MAJOR 12 +#define FAKE_VER_MINOR 1 +#define FAKE_VER_PATCH 3 /* @@ -73,10 +73,10 @@ * * Upper compatibility is always guaranteed. */ -#define H_VER_MAJOR 1 -#define H_VER_MINOR 7 -#define H_VER_PATCH 0 -#define H_VER_EXTRA 4 +#define H_VER_MAJOR 2 +#define H_VER_MINOR 1 +#define H_VER_PATCH 2 +#define H_VER_EXTRA 2 #define ANGBAND_2_8_1 @@ -143,13 +143,16 @@ /* Check is the quest index is "fixed" */ #define is_fixed_quest_idx(Q_IDX) (((Q_IDX) < MIN_RANDOM_QUEST) || ((Q_IDX) > MAX_RANDOM_QUEST)) +#define QUEST_TOWER1 5 +#define QUEST_TOWER2 6 +#define QUEST_TOWER3 7 #define QUEST_OBERON 8 #define QUEST_SERPENT 9 /* * Arena constants */ -#define MAX_ARENA_MONS 38 /* -KMW- */ +#define MAX_ARENA_MONS 41 /* -KMW- */ #define ARENA_DEFEATED_OLD_VER (-(MAX_SHORT)) @@ -195,7 +198,7 @@ /* * Maximum number of player "class" types (see "table.c", etc) */ -#define MAX_CLASS 27 +#define MAX_CLASS 28 #define MAX_SEIKAKU 12 @@ -527,7 +530,7 @@ /* * Random energy */ -#define ENERGY_NEED() (randnor(100, 31)) +#define ENERGY_NEED() (randnor(100, 25)) /* @@ -542,6 +545,7 @@ */ #define TOWN_DAWN 10000 /* Number of ticks from dawn to dawn XXX */ #define TURNS_PER_TICK 10L /* Number of energy-gain-turns per ticks */ +#define MAX_DAYS 20000 /* Maximum days */ #define BREAK_GLYPH 550 /* Rune of protection resistance */ #define BREAK_MINOR_GLYPH 299 /* For explosive runes */ #define BTH_PLUS_ADJ 3 /* Adjust BTH per plus-to-hit */ @@ -616,8 +620,7 @@ #define PF_RYOUTE 0x0040 -/* Maximum number of preservable pets */ -#define MAX_PARTY_MON 21 +#define CAN_TWO_HANDS_WIELDING() (!p_ptr->riding || (p_ptr->pet_extra_flags & PF_RYOUTE)) /* @@ -628,11 +631,13 @@ #define GREAT_OBJ 10 /* - * There is a 1/50 (2%) chance of inflating the requested monster_level + * There is a 1/25 (4%) chance of inflating the requested monster_level * during the creation of a monsters (see "get_mon_num()" in "monster.c"). * Lower values yield harder monsters more often. */ -#define NASTY_MON 50 /* 1/chance of inflated monster level */ +#define NASTY_MON_BASE 25 +#define NASTY_MON_MAX 3 +#define NASTY_MON_PLUS_MAX 25 /* 1/x chance of hurting even if invulnerable! */ #define PENETRATE_INVULNERABILITY 13 @@ -717,8 +722,9 @@ #define CH_DAEMON 0x100 #define CH_CRUSADE 0x200 -#define CH_MUSIC 0x10000 -#define CH_HISSATSU 0x20000 +#define CH_MUSIC 0x08000 /* This is 16th bit */ +#define CH_HISSATSU 0x10000 +#define CH_HEX 0x20000 /* @@ -739,7 +745,8 @@ #define MIN_TECHNIC 16 #define REALM_MUSIC 16 #define REALM_HISSATSU 17 -#define MAX_REALM 17 +#define REALM_HEX 18 +#define MAX_REALM 18 #define VALID_REALM (MAX_REALM + MAX_MAGIC - MIN_TECHNIC + 1) #define NUM_TECHNIC (MAX_REALM - MIN_TECHNIC + 1) @@ -865,7 +872,7 @@ #define RACE_DEMON 32 #define RACE_DUNADAN 33 #define RACE_S_FAIRY 34 -#define RACE_KUTA 35 +#define RACE_KUTAR 35 #define RACE_ANDROID 36 /* @@ -904,6 +911,7 @@ #define CLASS_SMITH 24 #define CLASS_MIRROR_MASTER 25 #define CLASS_NINJA 26 +#define CLASS_SNIPER 27 #define SEIKAKU_FUTUU 0 #define SEIKAKU_CHIKARA 1 @@ -1012,144 +1020,6 @@ #define MAX_FEAT_STATES 8 -/*** Terrain Feature Indexes (see "lib/edit/f_info.txt") ***/ - -/* Nothing */ -#define FEAT_NONE 0x00 - -/* Various */ -#define FEAT_FLOOR 0x01 -#define FEAT_INVIS 0x02 -#define FEAT_GLYPH 0x03 -#define FEAT_OPEN 0x04 -#define FEAT_BROKEN 0x05 -#define FEAT_LESS 0x06 -#define FEAT_MORE 0x07 - -/* Quest features -KMW- */ -#define FEAT_QUEST_ENTER 0x08 -#define FEAT_QUEST_EXIT 0x09 -#define FEAT_QUEST_DOWN 0x0A -#define FEAT_QUEST_UP 0x0B - -#define FEAT_LESS_LESS 0x0D -#define FEAT_MORE_MORE 0x0E - -/* Feature 0x0E - 0x0F unused */ - -/* Traps */ -#define FEAT_TRAP_TRAPDOOR 0x10 -#define FEAT_TRAP_PIT 0x11 -#define FEAT_TRAP_SPIKED_PIT 0x12 -#define FEAT_TRAP_POISON_PIT 0x13 -#define FEAT_TRAP_TY_CURSE 0x14 -#define FEAT_TRAP_TELEPORT 0x15 -#define FEAT_TRAP_FIRE 0x16 -#define FEAT_TRAP_ACID 0x17 -#define FEAT_TRAP_SLOW 0x18 -#define FEAT_TRAP_LOSE_STR 0x19 -#define FEAT_TRAP_LOSE_DEX 0x1A -#define FEAT_TRAP_LOSE_CON 0x1B -#define FEAT_TRAP_BLIND 0x1C -#define FEAT_TRAP_CONFUSE 0x1D -#define FEAT_TRAP_POISON 0x1E -#define FEAT_TRAP_SLEEP 0x1F - -/* Doors */ -#define FEAT_DOOR_HEAD 0x20 -#define FEAT_DOOR_TAIL 0x2F - -/* Extra */ -#define FEAT_SECRET 0x30 -#define FEAT_RUBBLE 0x31 - -/* Seams */ -#define FEAT_MAGMA 0x32 -#define FEAT_QUARTZ 0x33 -#define FEAT_MAGMA_H 0x34 -#define FEAT_QUARTZ_H 0x35 -#define FEAT_MAGMA_K 0x36 -#define FEAT_QUARTZ_K 0x37 - -/* Walls */ -#define FEAT_WALL 0x38 -#define FEAT_WALL_INNER 0x39 -#define FEAT_WALL_OUTER 0x3A -#define FEAT_WALL_SOLID 0x3B -#define FEAT_PERM 0x3C -#define FEAT_PERM_INNER 0x3D -#define FEAT_PERM_OUTER 0x3E -#define FEAT_PERM_SOLID 0x3F - -/* Glyph */ -#define FEAT_MINOR_GLYPH 0x40 - -/* Pattern */ -#define FEAT_PATTERN_START 0x41 -#define FEAT_PATTERN_1 0x42 -#define FEAT_PATTERN_2 0x43 -#define FEAT_PATTERN_3 0x44 -#define FEAT_PATTERN_4 0x45 -#define FEAT_PATTERN_END 0x46 -#define FEAT_PATTERN_OLD 0x47 -#define FEAT_PATTERN_XTRA1 0x48 -#define FEAT_PATTERN_XTRA2 0x49 - -/* Shops */ -#define FEAT_SHOP_HEAD 0x4A -#define FEAT_SHOP_TAIL 0x52 - -/* Terrains */ -#define FEAT_DEEP_WATER 0x53 -#define FEAT_SHAL_WATER 0x54 -#define FEAT_DEEP_LAVA 0x55 -#define FEAT_SHAL_LAVA 0x56 -#define FEAT_DARK_PIT 0x57 -#define FEAT_DIRT 0x58 -#define FEAT_GRASS 0x59 - -#define FEAT_TRAP_TRAPS 0x5A -#define FEAT_TRAP_ALARM 0x5B -#define FEAT_TRAP_OPEN 0x5C - -#define FEAT_FLOWER 0x5D -#define FEAT_DEEP_GRASS 0x5E -#define FEAT_MUSEUM 0x5F - -/* Terrain */ -#define FEAT_TREES 0x60 -#define FEAT_MOUNTAIN 0x61 -#define FEAT_MOUNTAIN_WALL 0x62 - -/* Feature 0x63 - 0x7F unused */ - -/* Buildings */ -#define FEAT_BLDG_HEAD 0x80 -#define FEAT_BLDG_TAIL 0x9F - -/* Hack -- Special fake terrains for f_info */ -#define FEAT_CONVERT_FLOOR 0xa0 -#define FEAT_CONVERT_WALL 0xa1 -#define FEAT_CONVERT_INNER 0xa2 -#define FEAT_CONVERT_OUTER 0xa3 -#define FEAT_CONVERT_SOLID 0xa4 -#define FEAT_CONVERT_STREAM1 0xa5 -#define FEAT_CONVERT_STREAM2 0xa6 - -#define FEAT_TOWN 0xc0 -#define FEAT_ENTRANCE 0xc1 -#define FEAT_SWAMP 0xc2 - -/* for mirror master */ -#define FEAT_MIRROR 0xc3 - -/* unknown grid (not detected) */ -#define FEAT_UNDETECTED 0xc4 - -/* special traps */ -#define FEAT_TRAP_ARMAGEDDON 0xc5 -#define FEAT_TRAP_PIRANHA 0xc6 - /* * Wilderness terrains */ @@ -1290,8 +1160,9 @@ #define FF_UNPERM 109 #define FF_TELEPORTABLE 110 #define FF_CONVERT 111 +#define FF_GLASS 112 -#define FF_FLAG_MAX 112 +#define FF_FLAG_MAX 113 #define FF_FLAG_SIZE (1 + ((FF_FLAG_MAX - 1) / 32)) /* Which features are dynamic */ @@ -1308,11 +1179,69 @@ /* * Feature action flags */ -#define FAF_DESTROY 0x01 -#define FAF_NO_DROP 0x02 +#define FAF_DESTROY 0x01 +#define FAF_NO_DROP 0x02 +#define FAF_CRASH_GLASS 0x04 + + +/* + * Bit flags for teleportation + */ +#define TELEPORT_NONMAGICAL 0x00000001 +#define TELEPORT_PASSIVE 0x00000002 +#define TELEPORT_DEC_VALOUR 0x00000004 + + +/* Types of doors */ +#define DOOR_DEFAULT -1 +#define DOOR_DOOR 0 +#define DOOR_GLASS_DOOR 1 +#define DOOR_CURTAIN 2 + +#define MAX_DOOR_TYPES 3 + +#define feat_locked_door_random(DOOR_TYPE) \ + (feat_door[(DOOR_TYPE)].num_locked ? \ + feat_door[(DOOR_TYPE)].locked[randint0(feat_door[(DOOR_TYPE)].num_locked)] : feat_none) + +#define feat_jammed_door_random(DOOR_TYPE) \ + (feat_door[(DOOR_TYPE)].num_jammed ? \ + feat_door[(DOOR_TYPE)].jammed[randint0(feat_door[(DOOR_TYPE)].num_jammed)] : feat_none) + + +/* Types of normal traps */ +#define NOT_TRAP -1 +#define TRAP_TRAPDOOR 0 +#define TRAP_PIT 1 +#define TRAP_SPIKED_PIT 2 +#define TRAP_POISON_PIT 3 +#define TRAP_TY_CURSE 4 +#define TRAP_TELEPORT 5 +#define TRAP_FIRE 6 +#define TRAP_ACID 7 +#define TRAP_SLOW 8 +#define TRAP_LOSE_STR 9 +#define TRAP_LOSE_DEX 10 +#define TRAP_LOSE_CON 11 +#define TRAP_BLIND 12 +#define TRAP_CONFUSE 13 +#define TRAP_POISON 14 +#define TRAP_SLEEP 15 +#define TRAP_TRAPS 16 +#define TRAP_ALARM 17 + + +/* Types of special traps */ +#define TRAP_OPEN 18 +#define TRAP_ARMAGEDDON 19 +#define TRAP_PIRANHA 20 + +/* Maximum locked/jammed doors */ +#define MAX_LJ_DOORS 8 -/* Type of pattern tiles */ + +/* Types of pattern tiles */ #define NOT_PATTERN_TILE -1 #define PATTERN_TILE_START 0 #define PATTERN_TILE_1 1 @@ -1325,7 +1254,7 @@ #define PATTERN_TILE_WRECKED 8 -/* Type of conversions */ +/* Types of conversions */ #define CONVERT_TYPE_FLOOR 0 #define CONVERT_TYPE_WALL 1 #define CONVERT_TYPE_INNER 2 @@ -1362,7 +1291,7 @@ #define ART_PALANTIR 15 #define ART_STONE_LORE 17 #define ART_FLY_STONE 147 - +#define ART_ORB_OF_FATE 245 /* Amulets */ #define ART_CARLAMMAS 4 #define ART_INGWE 5 @@ -1413,6 +1342,7 @@ #define ART_GHB 192 #define ART_DASAI 200 #define ART_KESHO 204 +#define ART_MILIM 246 /* Shields */ #define ART_THORIN 30 @@ -1448,6 +1378,7 @@ #define ART_LUTHIEN 49 #define ART_TUOR 50 #define ART_MOOK 205 +#define ART_HEAVENLY_MAIDEN 233 /* Gloves */ #define ART_CAMBELEG 52 @@ -1532,6 +1463,7 @@ #define ART_KAMUI 198 #define ART_GOURYU 207 #define ART_EOWYN 216 +#define ART_NANACHO 248 /* Polearms */ #define ART_THEODEN 93 @@ -1594,6 +1526,7 @@ #define ART_GOTHMOG 212 #define ART_JIZO 213 #define ART_FUNDIN 214 +#define ART_AESCULAPIUS 225 /* Bows */ #define ART_BELTHRONDING 124 @@ -1604,6 +1537,8 @@ #define ART_YOICHI 148 #define ART_HARAD 180 #define ART_NAMAKE_BOW 182 +#define ART_ROBIN_HOOD 221 +#define ART_HELLFIRE 222 /* Arrows */ #define ART_BARD_ARROW 153 @@ -1617,16 +1552,16 @@ /* xxx */ /* Body Armor */ -#define EGO_RESIST_ACID 4 -#define EGO_RESIST_ELEC 5 -#define EGO_RESIST_FIRE 6 -#define EGO_RESIST_COLD 7 +#define EGO_A_MORGUL 4 +#define EGO_A_DEMON 5 +#define EGO_DRUID 6 +#define EGO_OLOG 7 #define EGO_RESISTANCE 8 #define EGO_ELVENKIND 9 #define EGO_DWARVEN 10 #define EGO_PERMANENCE 11 #define EGO_YOIYAMI 12 -/* xxx */ +#define EGO_URUKISH 13 /* xxx */ /* xxx */ @@ -1638,6 +1573,8 @@ #define EGO_ENDURANCE 20 #define EGO_REFLECTION 21 #define EGO_NIGHT_DAY 22 +#define EGO_S_PROTECTION 238 +#define EGO_S_DWARVEN 239 /* Crowns and Helms */ #define EGO_DARK 23 @@ -1707,14 +1644,14 @@ #define EGO_CHAOTIC 77 #define EGO_SHARPNESS 78 #define EGO_EARTHQUAKES 79 -#define EGO_SLAY_ANIMAL 80 -#define EGO_SLAY_EVIL 81 -#define EGO_SLAY_UNDEAD 82 -#define EGO_SLAY_DEMON 83 -#define EGO_SLAY_ORC 84 -#define EGO_SLAY_TROLL 85 -#define EGO_SLAY_GIANT 86 -#define EGO_SLAY_DRAGON 87 +#define EGO_XXX_1 80 +#define EGO_XXX_2 81 +#define EGO_XXX_3 82 +#define EGO_XXX_4 83 +#define EGO_XXX_5 84 +#define EGO_XXX_6 85 +#define EGO_XXX_7 86 +#define EGO_WEIRD 87 #define EGO_KILL_ANIMAL 88 #define EGO_KILL_EVIL 89 #define EGO_KILL_UNDEAD 90 @@ -1728,7 +1665,7 @@ #define EGO_TRUMP 98 #define EGO_PATTERN 99 #define EGO_DIGGING 100 -#define EGO_SLAY_HUMAN 101 +#define EGO_DEMON 101 #define EGO_MORGUL 102 #define EGO_KILL_HUMAN 103 @@ -1835,6 +1772,7 @@ #define EGO_AMU_GREAT 235 #define EGO_AMU_DETECTION 236 #define EGO_AMU_NAIVETY 237 +// MAX 239 /* Activation effects for random artifacts */ #define ACT_SUNLIGHT 1 @@ -1852,7 +1790,7 @@ #define ACT_DRAIN_2 13 #define ACT_VAMPIRE_1 14 #define ACT_BO_MISS_2 15 -#define ACT_BA_FIRE_2 16 +#define ACT_BA_FIRE_3 16 #define ACT_BA_COLD_3 17 #define ACT_BA_ELEC_3 18 #define ACT_WHIRLWIND 19 @@ -1862,7 +1800,24 @@ #define ACT_DISP_EVIL 23 #define ACT_BA_MISS_3 24 #define ACT_DISP_GOOD 25 -/* 26 - 50 unused */ +#define ACT_BO_MANA 26 +#define ACT_BA_FIRE_2 27 +#define ACT_BA_WATER 28 +#define ACT_BA_STAR 29 +#define ACT_BA_DARK 30 +#define ACT_BA_MANA 31 +#define ACT_PESTICIDE 32 +#define ACT_BLINDING_LIGHT 33 +#define ACT_BIZARRE 34 +#define ACT_CAST_BA_STAR 35 +#define ACT_BLADETURNER 36 +#define ACT_BA_ACID_1 37 +#define ACT_BR_FIRE 38 +#define ACT_BR_COLD 39 +#define ACT_BR_DRAGON 40 +#define ACT_BA_FIRE_4 41 +#define ACT_BA_NUKE_1 42 +/* 42 - 50 unused */ #define ACT_CONFUSE 51 #define ACT_SLEEP 52 #define ACT_QUAKE 53 @@ -1871,6 +1826,8 @@ #define ACT_BANISH_EVIL 56 #define ACT_GENOCIDE 57 #define ACT_MASS_GENO 58 +#define ACT_SCARE_AREA 59 +#define ACT_AGGRAVATE 60 /* 59 - 64 unused */ #define ACT_CHARM_ANIMAL 65 #define ACT_CHARM_UNDEAD 66 @@ -1882,7 +1839,11 @@ #define ACT_SUMMON_ELEMENTAL 72 #define ACT_SUMMON_DEMON 73 #define ACT_SUMMON_UNDEAD 74 -/* 75 - 80 unused */ +#define ACT_SUMMON_HOUND 75 +#define ACT_SUMMON_DAWN 76 +#define ACT_SUMMON_OCTOPUS 77 +/* 76 - 80 unused */ +#define ACT_CHOIR_SINGS 80 #define ACT_CURE_LW 81 #define ACT_CURE_MW 82 #define ACT_CURE_POISON 83 @@ -1890,7 +1851,9 @@ #define ACT_REST_ALL 85 #define ACT_CURE_700 86 #define ACT_CURE_1000 87 -/* 88 - 90 unused */ +#define ACT_CURING 88 +#define ACT_CURE_MANA_FULL 89 +/* 90 unused */ #define ACT_ESP 91 #define ACT_BERSERK 92 #define ACT_PROT_EVIL 93 @@ -1899,7 +1862,14 @@ #define ACT_XTRA_SPEED 96 #define ACT_WRAITH 97 #define ACT_INVULN 98 -/* 99 - 110 unused */ +#define ACT_HELO 99 +#define ACT_HELO_SPEED 100 +#define ACT_RESIST_ACID 101 +#define ACT_RESIST_FIRE 102 +#define ACT_RESIST_COLD 103 +#define ACT_RESIST_ELEC 104 +#define ACT_RESIST_POIS 105 +/* 106 - 110 unused */ #define ACT_LIGHT 111 #define ACT_MAP_LIGHT 112 #define ACT_DETECT_ALL 113 @@ -1916,7 +1886,28 @@ #define ACT_DIM_DOOR 124 #define ACT_TELEPORT 125 #define ACT_RECALL 126 +#define ACT_JUDGE 127 +#define ACT_TELEKINESIS 128 +#define ACT_DETECT_UNIQUE 129 +#define ACT_ESCAPE 130 +#define ACT_DISP_CURSE_XTRA 131 +#define ACT_BRAND_FIRE_BOLTS 132 +#define ACT_RECHARGE_XTRA 133 +#define ACT_LORE 134 +#define ACT_SHIKOFUMI 135 +#define ACT_PHASE_DOOR 136 +#define ACT_DETECT_ALL_MONS 137 +#define ACT_ULTIMATE_RESIST 138 /* 127 -> unused */ +#define ACT_STRAIN_HASTE 247 +#define ACT_TELEPORT_LEVEL 248 +#define ACT_GRAND_CROSS 249 +#define ACT_CAST_OFF 250 +#define ACT_FISHING 251 +#define ACT_INROU 252 +#define ACT_MURAMASA 253 +#define ACT_BLOODY_MOON 254 +#define ACT_CRIMSON 255 /*** Object "tval" and "sval" codes ***/ @@ -1987,6 +1978,7 @@ #define TV_CRUSADE_BOOK 99 #define TV_MUSIC_BOOK 105 #define TV_HISSATSU_BOOK 106 +#define TV_HEX_BOOK 107 #define TV_GOLD 127 /* Gold can only be picked up by players */ #define TV_EQUIP_BEGIN TV_SHOT @@ -2285,8 +2277,8 @@ #define SV_RING_SUSTAIN_STR 10 #define SV_RING_SUSTAIN_INT 11 #define SV_RING_SUSTAIN_WIS 12 -#define SV_RING_SUSTAIN_DEX 13 -#define SV_RING_SUSTAIN_CON 14 +#define SV_RING_SUSTAIN_CON 13 +#define SV_RING_SUSTAIN_DEX 14 #define SV_RING_SUSTAIN_CHR 15 #define SV_RING_PROTECTION 16 #define SV_RING_ACID 17 @@ -2492,6 +2484,8 @@ #define SV_SCROLL_ARTIFACT 52 #define SV_SCROLL_RESET_RECALL 53 #define SV_SCROLL_SUMMON_KIN 54 +#define SV_SCROLL_AMUSEMENT 55 +#define SV_SCROLL_STAR_AMUSEMENT 56 /* The "sval" codes for TV_POTION */ #define SV_POTION_WATER 0 @@ -2649,7 +2643,7 @@ #define CAVE_MASK (CAVE_FLOOR | CAVE_EXTRA | CAVE_INNER | CAVE_OUTER | CAVE_SOLID | CAVE_VAULT) /* Used only after cave generation */ -#define CAVE_XXXX1 0x0200 +#define CAVE_KNOWN 0x0200 /* Directly viewed or map detected flag */ #define CAVE_NOTE 0x0400 /* Flag for delayed visual update (needs note_spot()) */ #define CAVE_REDRAW 0x0800 /* Flag for delayed visual update (needs lite_spot()) */ #define CAVE_OBJECT 0x1000 /* Mirror, glyph, etc. */ @@ -2695,6 +2689,14 @@ #define PROJECT_FAST 0x4000 #define PROJECT_LOS 0x8000 + +/* + * Special caster ID for project() + */ +#define PROJECT_WHO_UNCTRL_POWER -1 +#define PROJECT_WHO_GLASS_SHARDS -2 + + /* * Bit flags for the "enchant()" function */ @@ -2831,7 +2833,7 @@ #define PR_STATE 0x00100000L /* Display Extra (State) */ #define PR_SPEED 0x00200000L /* Display Extra (Speed) */ #define PR_STUDY 0x00400000L /* Display Extra (Study) */ -#define PR_MANE 0x00800000L /* Display Extra (Mane) */ +#define PR_IMITATION 0x00800000L /* Display Extra (Imitation) */ #define PR_EXTRA 0x01000000L /* Display Extra Info */ #define PR_BASIC 0x02000000L /* Display Basic Info */ #define PR_MAP 0x04000000L /* Display Map */ @@ -2848,6 +2850,7 @@ #define PW_EQUIP 0x00000002L /* Display equip/inven */ #define PW_SPELL 0x00000004L /* Display spell list */ #define PW_PLAYER 0x00000008L /* Display character */ +#define PW_MONSTER_LIST 0x00000010L /* Display monster list */ /* xxx */ /* xxx */ #define PW_MESSAGE 0x00000040L /* Display messages */ @@ -2874,6 +2877,7 @@ #define PM_IGNORE_TERRAIN 0x00000080 #define PM_HASTE 0x00000100 #define PM_KAGE 0x00000200 +#define PM_MULTIPLY 0x00000400 /* Bit flags for monster_desc() */ @@ -2954,6 +2958,7 @@ #define ACTION_KATA 6 #define ACTION_SING 7 #define ACTION_HAYAGAKE 8 +#define ACTION_SPELL 9 /* Empty hand status */ @@ -3233,6 +3238,7 @@ #define OM_NOMSG 0x02 /* temporary flag to suppress messages */ #define OM_NO_QUERY 0x04 /* Query for auto-pick was already answered as 'No' */ #define OM_AUTODESTROY 0x08 /* Destroy later to avoid illegal inventry shift */ +#define OM_TOUCHED 0x10 /* Object was touched by player */ /* @@ -3364,7 +3370,7 @@ #define TR_WARNING 72 /* Warning */ #define TR_HIDE_TYPE 73 /* Hide "pval" description */ #define TR_SHOW_MODS 74 /* Always show Tohit/Todam */ -#define TR_XXX1 75 /* XXX1 */ +#define TR_SLAY_GOOD 75 #define TR_LEVITATION 76 /* Feather Falling */ #define TR_LITE 77 /* Permanent Light */ #define TR_SEE_INVIS 78 /* See Invisible */ @@ -3384,7 +3390,7 @@ #define TR_BLESSED 92 /* Item is Blessed */ #define TR_ES_ATTACK 93 /* Fake flag for Smith */ #define TR_ES_AC 94 /* Fake flag for Smith */ -#define TR_XXX5 95 +#define TR_KILL_GOOD 95 #define TR_KILL_ANIMAL 96 #define TR_KILL_EVIL 97 @@ -3408,8 +3414,12 @@ #define TR_ESP_UNIQUE 115 #define TR_FULL_NAME 116 #define TR_FIXED_FLAVOR 117 +#define TR_ADD_L_CURSE 118 +#define TR_ADD_H_CURSE 119 +#define TR_DRAIN_HP 120 +#define TR_DRAIN_MANA 121 -#define TR_FLAG_MAX 118 +#define TR_FLAG_MAX 122 #define TR_FLAG_SIZE 4 @@ -3429,6 +3439,8 @@ #define TRG_RANDOM_CURSE0 0x00002000L /* Item is Random Cursed */ #define TRG_RANDOM_CURSE1 0x00004000L /* Item is Random Cursed */ #define TRG_RANDOM_CURSE2 0x00008000L /* Item is Random Cursed */ +#define TRG_XTRA_DICE 0x00010000L /* Extra dice */ +#define TRG_POWERFUL 0x00020000L /* Item has good value even if Cursed */ #define MAX_CURSE 17 @@ -3552,6 +3564,8 @@ #define RBE_EXP_VAMP 31 #define RBE_DR_MANA 32 #define RBE_SUPERHURT 33 +#define RBE_INERTIA 34 +#define RBE_STUN 35 /*** Monster flag values (hard-coded) ***/ @@ -3790,7 +3804,7 @@ #define RF7_SELF_LITE_2 0x00000800 /* Monster lights itself */ #define RF7_GUARDIAN 0x00001000 /* Guardian of a dungeon */ #define RF7_CHAMELEON 0x00002000 /* Chameleon can change */ -#define RF7_KILL_EXP 0x00004000 /* No exp until you kill it */ +#define RF7_XXXX4XXX 0x00004000 /* Now Empty */ #define RF7_TANUKI 0x00008000 /* Tanuki disguise */ #define RF7_HAS_DARK_1 0x00010000 /* Monster carries darkness */ #define RF7_SELF_DARK_1 0x00020000 /* Monster darkens itself */ @@ -3909,7 +3923,7 @@ #define RF4_RIDING_MASK \ (RF4_SHRIEK) -#define RF5_RIDING_MASK 0L +#define RF5_RIDING_MASK 0UL #define RF6_RIDING_MASK \ (RF6_BLINK | RF6_TPORT | RF6_TRAPS | RF6_DARKNESS | RF6_SPECIAL) @@ -3926,15 +3940,15 @@ RF5_BO_NETH | RF5_BO_WATE | RF5_BO_MANA | RF5_BO_PLAS | \ RF5_BO_ICEE | RF5_MISSILE) -#define RF6_BOLT_MASK 0L +#define RF6_BOLT_MASK 0UL /* * Hack -- "beam" spells that may hurt fellow monsters * Currently "beam" spells are included in "attack" */ -#define RF4_BEAM_MASK 0L +#define RF4_BEAM_MASK 0UL -#define RF5_BEAM_MASK 0L +#define RF5_BEAM_MASK 0UL #define RF6_BEAM_MASK (RF6_PSY_SPEAR) @@ -3965,7 +3979,7 @@ #define RF5_BIG_BALL_MASK \ (RF5_BA_LITE | RF5_BA_DARK | RF5_BA_WATE | RF5_BA_MANA) -#define RF6_BIG_BALL_MASK 0L +#define RF6_BIG_BALL_MASK 0UL /* * Hack -- "breath" spells that may hurt friends @@ -3979,17 +3993,17 @@ RF4_BR_GRAV | RF4_BR_PLAS | RF4_BR_WALL | RF4_BR_MANA | \ RF4_BR_NUKE | RF4_BR_DISI) -#define RF5_BREATH_MASK 0L +#define RF5_BREATH_MASK 0UL -#define RF6_BREATH_MASK 0L +#define RF6_BREATH_MASK 0UL /* * Hack -- "summon" spells * Currently "summon" spells are included in "intelligent" and "indirect" */ -#define RF4_SUMMON_MASK 0L +#define RF4_SUMMON_MASK 0UL -#define RF5_SUMMON_MASK 0L +#define RF5_SUMMON_MASK 0UL #define RF6_SUMMON_MASK \ (RF6_S_KIN | RF6_S_CYBER | RF6_S_MONSTER | RF6_S_MONSTERS | RF6_S_ANT | \ @@ -4091,13 +4105,14 @@ (bool)(((A)->ap_r_idx == (A)->r_idx) ? TRUE : FALSE) #define is_original_ap_and_seen(A) \ - (bool)((A)->ml && ((A)->ap_r_idx == (A)->r_idx)) + (bool)((A)->ml && !p_ptr->image && ((A)->ap_r_idx == (A)->r_idx)) /* * Is the monster seen by the player? */ #define is_seen(A) \ - ((bool) ((A)->ml && (!ignore_unview || player_can_see_bold((A)->fy, (A)->fx)))) + ((bool)((A)->ml && (!ignore_unview || p_ptr->inside_battle || \ + (player_can_see_bold((A)->fy, (A)->fx) && projectable(py, px, (A)->fy, (A)->fx))))) /*** Option Definitions ***/ @@ -4155,7 +4170,9 @@ #define object_attr(T) \ ((k_info[(T)->k_idx].flavor) ? \ (k_info[k_info[(T)->k_idx].flavor].x_attr) : \ - (k_info[(T)->k_idx].x_attr)) + ((!(T)->k_idx || ((T)->tval != TV_CORPSE) || ((T)->sval != SV_CORPSE) || \ + (k_info[(T)->k_idx].x_attr != TERM_DARK)) ? \ + (k_info[(T)->k_idx].x_attr) : (r_info[(T)->pval].x_attr))) /* * Return the "char" for a given item. @@ -4430,14 +4447,6 @@ #define get_feat_mimic(C) \ (f_info[(C)->mimic ? (C)->mimic : (C)->feat].mimic) -#define update_playtime() \ -{\ - u32b tmp;\ - tmp = time(NULL);\ - playtime += (tmp - start_time);\ - start_time = tmp;\ -} - /* * Hack -- Prepare to use the "Secure" routines */ @@ -4554,11 +4563,12 @@ extern int PlayerUID; #define SOUND_SHOW 62 /* A monster makes a "show" attack */ #define SOUND_UNUSED 63 /* (no sound for gaze attacks) */ #define SOUND_EXPLODE 64 /* Something (or somebody) explodes */ +#define SOUND_GLASS 65 /* A glass feature was crashed */ /* * Mega-Hack -- maximum known sounds */ -#define SOUND_MAX 65 +#define SOUND_MAX 66 #define MAX_VIRTUE 18 @@ -4649,19 +4659,21 @@ extern int PlayerUID; #define BACT_POKER 43 #define BACT_IDENT_ONE 44 #define BACT_RECHARGE_ALL 45 -#define BACT_EVAL_AC 46 -#define MAX_BACT 47 +#define BACT_EVAL_AC 46 +#define BACT_BROKEN_WEAPON 47 +#define MAX_BACT 48 /* * Quest status */ -#define QUEST_STATUS_UNTAKEN 0 -#define QUEST_STATUS_TAKEN 1 -#define QUEST_STATUS_COMPLETED 2 -#define QUEST_STATUS_REWARDED 3 -#define QUEST_STATUS_FINISHED 4 -#define QUEST_STATUS_FAILED 5 -#define QUEST_STATUS_FAILED_DONE 6 +#define QUEST_STATUS_UNTAKEN 0 +#define QUEST_STATUS_TAKEN 1 +#define QUEST_STATUS_COMPLETED 2 +#define QUEST_STATUS_REWARDED 3 +#define QUEST_STATUS_FINISHED 4 +#define QUEST_STATUS_FAILED 5 +#define QUEST_STATUS_FAILED_DONE 6 +#define QUEST_STATUS_STAGE_COMPLETED 7 /* * Quest type @@ -4673,15 +4685,17 @@ extern int PlayerUID; #define QUEST_TYPE_KILL_NUMBER 5 #define QUEST_TYPE_KILL_ALL 6 #define QUEST_TYPE_RANDOM 7 +#define QUEST_TYPE_TOWER 8 /* * Initialization flags */ -#define INIT_SHOW_TEXT 0x01 -#define INIT_ASSIGN 0x02 -#define INIT_CREATE_DUNGEON 0x04 -#define INIT_ONLY_FEATURES 0x08 -#define INIT_ONLY_BUILDINGS 0x10 +#define INIT_NAME_ONLY 0x01 +#define INIT_SHOW_TEXT 0x02 +#define INIT_ASSIGN 0x04 +#define INIT_CREATE_DUNGEON 0x08 +#define INIT_ONLY_FEATURES 0x10 +#define INIT_ONLY_BUILDINGS 0x20 /* * Quest flags @@ -4689,6 +4703,7 @@ extern int PlayerUID; #define QUEST_FLAG_SILENT 0x01 /* no messages fro completion */ #define QUEST_FLAG_PRESET 0x02 /* quest is outside the main dungeon */ #define QUEST_FLAG_ONCE 0x04 /* quest is marked finished after leaving */ +#define QUEST_FLAG_TOWER 0x08 /* Tower quest is special */ /* * Available graphic modes @@ -4792,6 +4807,22 @@ extern int PlayerUID; #define NIKKI_NAMED_PET 21 #define NIKKI_PAT_TELE 22 +#define RECORD_NAMED_PET_NAME 0 +#define RECORD_NAMED_PET_UNNAME 1 +#define RECORD_NAMED_PET_DISMISS 2 +#define RECORD_NAMED_PET_DEATH 3 +#define RECORD_NAMED_PET_MOVED 4 +#define RECORD_NAMED_PET_LOST_SIGHT 5 +#define RECORD_NAMED_PET_DESTROY 6 +#define RECORD_NAMED_PET_EARTHQUAKE 7 +#define RECORD_NAMED_PET_GENOCIDE 8 +#define RECORD_NAMED_PET_WIZ_ZAP 9 +#define RECORD_NAMED_PET_TELE_LEVEL 10 +#define RECORD_NAMED_PET_BLAST 11 +#define RECORD_NAMED_PET_HEAL_LEPER 12 +#define RECORD_NAMED_PET_COMPACT 13 +#define RECORD_NAMED_PET_LOSE_PARENT 14 + #define MAX_MANE 16 #define MAX_MONSPELLS 96 #define MONSPELL_TYPE_BOLT 1 @@ -4912,6 +4943,7 @@ extern int PlayerUID; #define MON_BEGGAR 12 #define MON_LEPER 13 #define MON_BLACK_MARKET 14 +#define MON_LION_HEART 19 #define MON_GHB 39 #define MON_NOV_PRIEST 45 #define MON_GRIP 53 @@ -4936,6 +4968,7 @@ extern int PlayerUID; #define MON_BLUE_HORROR 189 #define MON_GOLD_COINS 195 #define MON_VORPAL_BUNNY 205 +#define MON_MASTER_YEEK 224 #define MON_PRIEST 225 #define MON_D_ELF_PRIEST 226 #define MON_TIGER 230 @@ -4947,9 +4980,13 @@ extern int PlayerUID; #define MON_UMBER_HULK 283 #define MON_ORC_CAPTAIN 285 #define MON_BERSERKER 293 +#define MON_IMP 296 #define MON_SHAGRAT 314 #define MON_GORBAG 315 #define MON_STONE_GIANT 321 +#define MON_LIZARD_KING 332 +#define MON_WYVERN 334 +#define MON_SABRE_TIGER 339 #define MON_D_ELF_LORD 348 #define MON_FIRE_VOR 354 #define MON_WATER_VOR 355 @@ -4969,6 +5006,7 @@ extern int PlayerUID; #define MON_GWAIHIR 410 #define MON_ANGEL 417 #define MON_ADAMANT_COINS 423 +#define MON_COLBRAN 435 #define MON_SPIRIT_NAGA 436 #define MON_GACHAPIN 441 #define MON_BASILISK 453 @@ -4978,6 +5016,7 @@ extern int PlayerUID; #define MON_SHADOW_DRAKE 471 #define MON_GHOST 477 #define MON_OGRE_SHAMAN 479 +#define MON_GHOUL_KING 483 #define MON_NINJA 485 #define MON_BICLOPS 490 #define MON_IVORY_MONK 492 @@ -5004,11 +5043,14 @@ extern int PlayerUID; #define MON_MANDOR 598 #define MON_SHIM_VOR 600 #define MON_SERAPH 605 +#define MON_BARON_HELL 609 #define MON_KAVLAX 616 #define MON_ETTIN 621 #define MON_VAMPIRE_LORD 623 #define MON_JUBJUB 640 +#define MON_G_C_DRAKE 646 #define MON_CLUB_DEMON 648 +#define MON_F_ANGEL 652 #define MON_D_ELF_SORC 657 #define MON_MASTER_LICH 658 #define MON_RINALDO 660 @@ -5018,12 +5060,14 @@ extern int PlayerUID; #define MON_JACK_SHADOWS 670 #define MON_LLOIGOR 682 #define MON_DREADMASTER 690 +#define MON_DROLEM 691 #define MON_DAWN 693 #define MON_NAZGUL 696 #define MON_SMAUG 697 #define MON_STORMBRINGER 698 #define MON_ULTRA_PALADIN 699 #define MON_G_TITAN 702 +#define MON_S_TYRANNO 705 #define MON_FAFNER 712 #define MON_G_BALROG 720 #define MON_TIME_HOUND 725 @@ -5045,6 +5089,7 @@ extern int PlayerUID; #define MON_BRAND 773 #define MON_SHADOWLORD 774 #define MON_ARCHLICH 776 +#define MON_JABBERWOCK 778 #define MON_CHAOS_HOUND 779 #define MON_ULT_BEHOLDER 781 #define MON_SHAMBLER 786 @@ -5099,8 +5144,10 @@ extern int PlayerUID; #define MON_D_ELF_SHADE 886 #define MON_MANA_HOUND 887 #define MON_VENOM_WYRM 890 +#define MON_TROLL_KING 894 #define MON_BAZOOKER 896 #define MON_SHARD_VOR 897 +#define MON_ELF_LORD 900 #define MON_MASTER_MYS 916 #define MON_G_MASTER_MYS 917 #define MON_IE 921 @@ -5146,13 +5193,18 @@ extern int PlayerUID; #define MON_CHAMELEON 1040 #define MON_CHAMELEON_K 1041 #define MON_TOPAZ_MONK 1047 +#define MON_M_MINDCRAFTER 1056 +#define MON_ELDER_VAMPIRE 1058 #define MON_NOBORTA 1059 #define MON_MORI_TROLL 1060 #define MON_BARNEY 1061 #define MON_GROO 1062 #define MON_LOUSY 1063 +#define MON_WYRM_SPACE 1064 #define MON_JIZOTAKO 1065 #define MON_TANUKI 1067 +#define MON_HATOPOPPO 1083 +#define MON_KOGAN 1096 /* Maximum "Nazguls" number */ #define MAX_NAZGUL_NUM 5 @@ -5210,7 +5262,8 @@ extern int PlayerUID; #define MUSIC_DETECT 101 -#define music_singing(X) ((p_ptr->pclass == CLASS_BARD) && (p_ptr->magic_num1[0] == X)) +#define music_singing(X) ((p_ptr->pclass == CLASS_BARD) && (p_ptr->magic_num1[0] == (X))) +#define music_singing_any() ((p_ptr->pclass == CLASS_BARD) && p_ptr->magic_num1[0]) #define HISSATSU_NONE 0 #define HISSATSU_2 1 @@ -5280,11 +5333,11 @@ extern int PlayerUID; #define DF1_NO_DOORS 0x00000020L #define DF1_WATER_RIVER 0x00000040L #define DF1_LAVA_RIVER 0x00000080L -#define DF1_XXX08 0x00000100L -#define DF1_XXX09 0x00000200L +#define DF1_CURTAIN 0x00000100L +#define DF1_GLASS_DOOR 0x00000200L #define DF1_CAVE 0x00000400L #define DF1_CAVERN 0x00000800L -#define DF1_XXX12 0x00001000L +#define DF1_ARCADE 0x00001000L #define DF1_XXX13 0x00002000L #define DF1_XXX14 0x00004000L #define DF1_XXX15 0x00008000L @@ -5296,7 +5349,7 @@ extern int PlayerUID; #define DF1_NO_VAULT 0x00200000L #define DF1_ARENA 0x00400000L #define DF1_DESTROY 0x00800000L -#define DF1_XXX24 0x01000000L +#define DF1_GLASS_ROOM 0x01000000L #define DF1_NO_CAVE 0x02000000L #define DF1_NO_MAGIC 0x04000000L #define DF1_NO_MELEE 0x08000000L @@ -5433,15 +5486,18 @@ extern int PlayerUID; #define IS_FAST() (p_ptr->fast || music_singing(MUSIC_SPEED) || music_singing(MUSIC_SHERO)) #define IS_INVULN() (p_ptr->invuln || music_singing(MUSIC_INVULN)) #define IS_HERO() (p_ptr->hero || music_singing(MUSIC_HERO) || music_singing(MUSIC_SHERO)) -#define IS_BLESSED() (p_ptr->blessed || music_singing(MUSIC_BLESS)) +#define IS_BLESSED() (p_ptr->blessed || music_singing(MUSIC_BLESS) || hex_spelling(HEX_BLESS)) #define IS_OPPOSE_ACID() (p_ptr->oppose_acid || music_singing(MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU)) #define IS_OPPOSE_ELEC() (p_ptr->oppose_elec || music_singing(MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU)) #define IS_OPPOSE_FIRE() (p_ptr->oppose_fire || music_singing(MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU)) #define IS_OPPOSE_COLD() (p_ptr->oppose_cold || music_singing(MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU)) #define IS_OPPOSE_POIS() (p_ptr->oppose_pois || music_singing(MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU)) -#define IS_TIM_ESP() (p_ptr->tim_esp || music_singing(MUSIC_MIND)) +#define IS_TIM_ESP() (p_ptr->tim_esp || music_singing(MUSIC_MIND) || (p_ptr->concent >= CONCENT_TELE_THRESHOLD)) #define IS_TIM_STEALTH() (p_ptr->tim_stealth || music_singing(MUSIC_STEALTH)) +/* Multishadow effects is determined by turn */ +#define CHECK_MULTISHADOW() (p_ptr->multishadow && (turn & 1)) + /* Is "teleport level" ineffective to this target? */ #define TELE_LEVEL_IS_INEFF(TARGET) \ (p_ptr->inside_arena || p_ptr->inside_battle || \ @@ -5488,3 +5544,105 @@ extern int PlayerUID; #define MPE_DO_PICKUP 0x00000020 #define MPE_BREAK_TRAP 0x00000040 #define MPE_DONT_SWAP_MON 0x00000080 + + +#define MTIMED_CSLEEP 0 /* Monster is sleeping */ +#define MTIMED_FAST 1 /* Monster is temporarily fast */ +#define MTIMED_SLOW 2 /* Monster is temporarily slow */ +#define MTIMED_STUNNED 3 /* Monster is stunned */ +#define MTIMED_CONFUSED 4 /* Monster is confused */ +#define MTIMED_MONFEAR 5 /* Monster is afraid */ +#define MTIMED_INVULNER 6 /* Monster is temporarily invulnerable */ + +#define MAX_MTIMED 7 + +#define MON_CSLEEP(M_PTR) ((M_PTR)->mtimed[MTIMED_CSLEEP]) +#define MON_FAST(M_PTR) ((M_PTR)->mtimed[MTIMED_FAST]) +#define MON_SLOW(M_PTR) ((M_PTR)->mtimed[MTIMED_SLOW]) +#define MON_STUNNED(M_PTR) ((M_PTR)->mtimed[MTIMED_STUNNED]) +#define MON_CONFUSED(M_PTR) ((M_PTR)->mtimed[MTIMED_CONFUSED]) +#define MON_MONFEAR(M_PTR) ((M_PTR)->mtimed[MTIMED_MONFEAR]) +#define MON_INVULNER(M_PTR) ((M_PTR)->mtimed[MTIMED_INVULNER]) + +/* + * Bit flags for screen_object() + */ +#define SCROBJ_FAKE_OBJECT 0x00000001 +#define SCROBJ_FORCE_DETAIL 0x00000002 + +/* + * For travel command (auto run) + */ +#define TRAVEL + +/* Sniper */ +#define SP_NONE 0 +#define SP_LITE 1 +#define SP_AWAY 2 +#define SP_FIRE 3 +#define SP_KILL_WALL 4 +#define SP_COLD 5 +#define SP_KILL_TRAP 6 +#define SP_ELEC 7 +#define SP_PIERCE 8 +#define SP_RUSH 9 +#define SP_DOUBLE 10 +#define SP_EXPLODE 11 +#define SP_EVILNESS 12 +#define SP_HOLYNESS 13 +#define SP_FINAL 14 +#define SP_NEEDLE 15 + +#define CONCENT_RADAR_THRESHOLD 2 +#define CONCENT_TELE_THRESHOLD 5 + +/* Hex */ +#define hex_spelling_any() \ + ((p_ptr->realm1 == REALM_HEX) && (p_ptr->magic_num1[0])) +#define hex_spelling(X) \ + ((p_ptr->realm1 == REALM_HEX) && (p_ptr->magic_num1[0] & (1L << (X)))) +/* 1st book */ +#define HEX_BLESS 0 +#define HEX_CURE_LIGHT 1 +#define HEX_DEMON_AURA 2 +#define HEX_STINKING_MIST 3 +#define HEX_XTRA_MIGHT 4 +#define HEX_CURSE_WEAPON 5 +#define HEX_DETECT_EVIL 6 +#define HEX_PATIENCE 7 +/* 2nd book */ +#define HEX_ICE_ARMOR 8 +#define HEX_CURE_SERIOUS 9 +#define HEX_INHAIL 10 +#define HEX_VAMP_MIST 11 +#define HEX_RUNESWORD 12 +#define HEX_CONFUSION 13 +#define HEX_BUILDING 14 +#define HEX_ANTI_TELE 15 +/* 3rd book */ +#define HEX_SHOCK_CLOAK 16 +#define HEX_CURE_CRITICAL 17 +#define HEX_RECHARGE 18 +#define HEX_RAISE_DEAD 19 +#define HEX_CURSE_ARMOUR 20 +#define HEX_SHADOW_CLOAK 21 +#define HEX_PAIN_TO_MANA 22 +#define HEX_EYE_FOR_EYE 23 +/* 4th book */ +#define HEX_ANTI_MULTI 24 +#define HEX_RESTORE 25 +#define HEX_DRAIN_CURSE 26 +#define HEX_VAMP_BLADE 27 +#define HEX_STUN_MONSTERS 28 +#define HEX_SHADOW_MOVE 29 +#define HEX_ANTI_MAGIC 30 +#define HEX_REVENGE 31 + +/* + Language selection macro +*/ +#ifdef JP +#define _(JAPANESE,ENGLISH) (JAPANESE) +#else +#define _(JAPANESE,ENGLISH) (ENGLISH) +#endif