OSDN Git Service

Upgrade Arena. Stronger the monsters, and rewards.
[hengband/hengband.git] / src / defines.h
index f7c3e01..d6bba84 100644 (file)
@@ -55,8 +55,8 @@
  *   "(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_MAJOR 12
+#define FAKE_VER_MINOR 1
 #define FAKE_VER_PATCH 0
 
 
  *
  * Upper compatibility is always guaranteed.
  */
-#define H_VER_MAJOR 1
-#define H_VER_MINOR 7
+#define H_VER_MAJOR 2
+#define H_VER_MINOR 1
 #define H_VER_PATCH 0
-#define H_VER_EXTRA 5
+#define H_VER_EXTRA 0
 
 
 #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 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 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)
 #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 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 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 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 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 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 */
 
 
 /*
         (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?
@@ -4571,13 +4604,14 @@ extern int PlayerUID;
 /*
  * 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
@@ -4589,6 +4623,7 @@ 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
@@ -4605,6 +4640,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
@@ -4708,6 +4744,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
@@ -4828,6 +4880,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
@@ -4852,6 +4905,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
@@ -4863,9 +4917,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
@@ -4885,6 +4943,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
@@ -4894,6 +4953,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
@@ -4920,11 +4980,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
@@ -4934,12 +4997,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
@@ -4961,6 +5026,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
@@ -5015,8 +5081,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
@@ -5062,13 +5130,17 @@ 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
 
 /* Maximum "Nazguls" number */
 #define MAX_NAZGUL_NUM 5
@@ -5198,7 +5270,7 @@ extern int PlayerUID;
 #define DF1_WATER_RIVER         0x00000040L
 #define DF1_LAVA_RIVER          0x00000080L
 #define DF1_CURTAIN             0x00000100L
-#define DF1_XXX09               0x00000200L
+#define DF1_GLASS_DOOR          0x00000200L
 #define DF1_CAVE                0x00000400L
 #define DF1_CAVERN              0x00000800L
 #define DF1_XXX12               0x00001000L
@@ -5213,7 +5285,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
@@ -5350,15 +5422,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 || \
@@ -5430,3 +5505,71 @@ extern int PlayerUID;
  */
 #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