* "(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 2
/*
*
* Upper compatibility is always guaranteed.
*/
-#define H_VER_MAJOR 1
-#define H_VER_MINOR 7
-#define H_VER_PATCH 0
-#define H_VER_EXTRA 3
+#define H_VER_MAJOR 2
+#define H_VER_MINOR 1
+#define H_VER_PATCH 2
+#define H_VER_EXTRA 1
#define ANGBAND_2_8_1
/* 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))
/*
* Maximum number of player "class" types (see "table.c", etc)
*/
-#define MAX_CLASS 27
+#define MAX_CLASS 28
#define MAX_SEIKAKU 12
/*
* Random energy
*/
-#define ENERGY_NEED() (randnor(100, 31))
+#define ENERGY_NEED() (randnor(100, 25))
/*
*/
#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 */
#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))
/*
#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
#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
/*
#define REALM_DEATH 5
#define REALM_TRUMP 6
#define REALM_ARCANE 7
-#define REALM_ENCHANT 8
+#define REALM_CRAFT 8
#define REALM_DAEMON 9
#define REALM_CRUSADE 10
#define MAX_MAGIC 10
#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)
/*
+ * Mode constant for do_spell()
+ */
+#define SPELL_NAME 0
+#define SPELL_DESC 1
+#define SPELL_INFO 2
+#define SPELL_CAST 3
+#define SPELL_FAIL 4
+#define SPELL_STOP 5
+#define SPELL_CONT 6
+
+
+/*
* Maximum number of "normal" pack slots, and the index of the "overflow"
* slot, which can hold an item, but only temporarily, since it causes the
* pack to "overflow", dropping the "last" item onto the ground. Since this
#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
/*
#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
#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
*/
#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 */
/*
* 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
-/* Type of pattern tiles */
+/* 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
+
+
+/* Types of pattern tiles */
#define NOT_PATTERN_TILE -1
#define PATTERN_TILE_START 0
#define PATTERN_TILE_1 1
#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
#define ART_LUTHIEN 49
#define ART_TUOR 50
#define ART_MOOK 205
+#define ART_HEAVENLY_MAIDEN 233
/* Gloves */
#define ART_CAMBELEG 52
#define ART_GOTHMOG 212
#define ART_JIZO 213
#define ART_FUNDIN 214
+#define ART_AESCULAPIUS 225
/* Bows */
#define ART_BELTHRONDING 124
#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
#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
#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
+/* 33 - 50 unused */
#define ACT_CONFUSE 51
#define ACT_SLEEP 52
#define ACT_QUAKE 53
#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
#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
#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
#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
#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_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 ***/
#define TV_DEATH_BOOK 94
#define TV_TRUMP_BOOK 95
#define TV_ARCANE_BOOK 96
-#define TV_ENCHANT_BOOK 97
+#define TV_CRAFT_BOOK 97
#define TV_DAEMON_BOOK 98
#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
#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
#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
#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. */
#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
*/
#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 */
#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 */
#define PM_IGNORE_TERRAIN 0x00000080
#define PM_HASTE 0x00000100
#define PM_KAGE 0x00000200
+#define PM_MULTIPLY 0x00000400
/* Bit flags for monster_desc() */
#define OD_NO_PLURAL 0x00000010 /* Don't use plural */
#define OD_STORE 0x00000020 /* Assume to be aware and known */
#define OD_NO_FLAVOR 0x00000040 /* Allow to hidden flavor */
+#define OD_FORCE_FLAVOR 0x00000080 /* Get un-shuffled flavor name */
/*
#define ACTION_KATA 6
#define ACTION_SING 7
#define ACTION_HAYAGAKE 8
+#define ACTION_SPELL 9
/* Empty hand status */
#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 */
/*
#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 */
#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
#define TR_ESP_NONLIVING 114
#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_FLAG_MAX 117
+#define TR_FLAG_MAX 120
#define TR_FLAG_SIZE 4
#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 MAX_CURSE 17
#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) ***/
#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)
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)
#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
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 | \
#define is_original_ap(A) \
(bool)(((A)->ap_r_idx == (A)->r_idx) ? TRUE : FALSE)
+#define is_original_ap_and_seen(A) \
+ (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 ***/
*/
#define object_attr(T) \
((k_info[(T)->k_idx].flavor) ? \
- (misc_to_attr[k_info[(T)->k_idx].flavor]) : \
- (k_info[(T)->k_idx].x_attr))
+ (k_info[k_info[(T)->k_idx].flavor].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.
*/
#define object_char(T) \
((k_info[(T)->k_idx].flavor) ? \
- (misc_to_char[k_info[(T)->k_idx].flavor]) : \
+ (k_info[k_info[(T)->k_idx].flavor].x_char) : \
(k_info[(T)->k_idx].x_char))
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
/* Maximum "Nazguls" number */
#define MAX_NAZGUL_NUM 5
#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
#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
#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
#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 || \
#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