*
* Certain data is saved in multiple places for efficient access, currently,
* this includes the tval/sval/weight fields in "object_type", various fields
- * in "header_type", and the "m_idx" and "o_idx" fields in "cave_type". All
+ * in "header_type", and the "m_idx" and "o_idx" fields in "grid_type". All
* of these could be removed, but this would, in general, slow down the game
* and increase the complexity of the code.
* </pre>
/*
* A single "grid" in a Cave
*
- * Note that several aspects of the code restrict the actual cave
+ * Note that several aspects of the code restrict the actual current_floor_ptr->grid_array
* to a max size of 256 by 256. In partcular, locations are often
* saved as bytes, limiting each coordinate to the 0-255 range.
*
* The "o_idx" and "m_idx" fields are very interesting. There are
* many places in the code where we need quick access to the actual
- * monster or object(s) in a given cave grid. The easiest way to
+ * monster or object(s) in a given grid. The easiest way to
* do this is to simply keep the index of the monster and object
* (if any) with the grid, but this takes 198*66*4 bytes of memory.
* Several other methods come to mind, which require only half this
* Note the special fields for the "MONSTER_FLOW" code.
*/
-typedef struct cave_type cave_type;
+typedef struct grid_type grid_type;
-struct cave_type
+struct grid_type
{
- BIT_FLAGS info; /* Hack -- cave flags */
+ BIT_FLAGS info; /* Hack -- current_floor_ptr->grid_array flags */
FEAT_IDX feat; /* Hack -- feature type */
OBJECT_IDX o_idx; /* Object in this grid */
MONSTER_IDX m_idx; /* Monster in this grid */
- /*! 地形の特別な情報を保存する / Special cave info
+ /*! 地形の特別な情報を保存する / Special current_floor_ptr->grid_array info
* 具体的な使用一覧はクエスト行き階段の移行先クエストID、
* 各ダンジョン入口の移行先ダンジョンID、
*
* Note that "object flags" must now be derived from the object kind,
* the artifact and ego-item indexes, and the two "xtra" fields.
*
- * Each cave grid points to one (or zero) objects via the "o_idx"
+ * Each grid points to one (or zero) objects via the "o_idx"
* field (above). Each object then points to one (or zero) objects
* via the "next_o_idx" field, forming a singly linked list, which
* in game terms, represents a "stack" of objects in the same grid.
EXP exp;
- BIT_FLAGS smart; /* Field for "smart_learn" */
+ /* TODO: クローン、ペット、有効化は意義が異なるので別変数に切り離すこと。save/loadのバージョン更新が面倒そうだけど */
+ BIT_FLAGS smart; /*!< Field for "smart_learn" - Some bit-flags for the "smart" field */
+ #define SM_RES_ACID 0x00000001 /*!< モンスターの学習フラグ: プレイヤーに酸耐性あり */
+ #define SM_RES_ELEC 0x00000002 /*!< モンスターの学習フラグ: プレイヤーに電撃耐性あり */
+ #define SM_RES_FIRE 0x00000004 /*!< モンスターの学習フラグ: プレイヤーに火炎耐性あり */
+ #define SM_RES_COLD 0x00000008 /*!< モンスターの学習フラグ: プレイヤーに冷気耐性あり */
+ #define SM_RES_POIS 0x00000010 /*!< モンスターの学習フラグ: プレイヤーに毒耐性あり */
+ #define SM_RES_NETH 0x00000020 /*!< モンスターの学習フラグ: プレイヤーに地獄耐性あり */
+ #define SM_RES_LITE 0x00000040 /*!< モンスターの学習フラグ: プレイヤーに閃光耐性あり */
+ #define SM_RES_DARK 0x00000080 /*!< モンスターの学習フラグ: プレイヤーに暗黒耐性あり */
+ #define SM_RES_FEAR 0x00000100 /*!< モンスターの学習フラグ: プレイヤーに恐怖耐性あり */
+ #define SM_RES_CONF 0x00000200 /*!< モンスターの学習フラグ: プレイヤーに混乱耐性あり */
+ #define SM_RES_CHAOS 0x00000400 /*!< モンスターの学習フラグ: プレイヤーにカオス耐性あり */
+ #define SM_RES_DISEN 0x00000800 /*!< モンスターの学習フラグ: プレイヤーに劣化耐性あり */
+ #define SM_RES_BLIND 0x00001000 /*!< モンスターの学習フラグ: プレイヤーに盲目耐性あり */
+ #define SM_RES_NEXUS 0x00002000 /*!< モンスターの学習フラグ: プレイヤーに因果混乱耐性あり */
+ #define SM_RES_SOUND 0x00004000 /*!< モンスターの学習フラグ: プレイヤーに轟音耐性あり */
+ #define SM_RES_SHARD 0x00008000 /*!< モンスターの学習フラグ: プレイヤーに破片耐性あり */
+ #define SM_OPP_ACID 0x00010000 /*!< モンスターの学習フラグ: プレイヤーに二重酸耐性あり */
+ #define SM_OPP_ELEC 0x00020000 /*!< モンスターの学習フラグ: プレイヤーに二重電撃耐性あり */
+ #define SM_OPP_FIRE 0x00040000 /*!< モンスターの学習フラグ: プレイヤーに二重火炎耐性あり */
+ #define SM_OPP_COLD 0x00080000 /*!< モンスターの学習フラグ: プレイヤーに二重冷気耐性あり */
+ #define SM_OPP_POIS 0x00100000 /*!< モンスターの学習フラグ: プレイヤーに二重毒耐性あり */
+ #define SM_OPP_XXX1 0x00200000 /*!< 未使用 / (unused) */
+ #define SM_CLONED 0x00400000 /*!< クローンである / Cloned */
+ #define SM_PET 0x00800000 /*!< ペットである / Pet */
+ #define SM_IMM_ACID 0x01000000 /*!< モンスターの学習フラグ: プレイヤーに酸免疫あり */
+ #define SM_IMM_ELEC 0x02000000 /*!< モンスターの学習フラグ: プレイヤーに電撃免疫あり */
+ #define SM_IMM_FIRE 0x04000000 /*!< モンスターの学習フラグ: プレイヤーに火炎免疫あり */
+ #define SM_IMM_COLD 0x08000000 /*!< モンスターの学習フラグ: プレイヤーに冷気免疫あり */
+ #define SM_FRIENDLY 0x10000000 /*!< 友好的である / Friendly */
+ #define SM_IMM_REFLECT 0x20000000 /*!< モンスターの学習フラグ: プレイヤーに反射あり */
+ #define SM_IMM_FREE 0x40000000 /*!< モンスターの学習フラグ: プレイヤーに麻痺耐性あり */
+ #define SM_IMM_MANA 0x80000000 /*!< モンスターの学習フラグ: プレイヤーにMPがない */
MONSTER_IDX parent_m_idx;
};
PLAYER_LEVEL lev; /* Level */
- s16b town_num; /* Current town number */
+ TOWN_IDX town_num; /* Current town number */
s16b arena_number; /* monster number in arena -KMW- */
bool inside_arena; /* Is character inside arena? */
QUEST_IDX inside_quest; /* Inside quest level */
bool inside_battle; /* Is character inside tougijou? */
+ DUNGEON_IDX dungeon_idx; /* current dungeon index */
POSITION wilderness_x; /* Coordinates in the wilderness */
POSITION wilderness_y;
bool wild_mode;
TIME_EFFECT multishadow; /* Timed -- Multi-shadow */
TIME_EFFECT dustrobe; /* Timed -- Robe of dust */
+ bool timewalk;
+
+
PATRON_IDX chaos_patron;
BIT_FLAGS muta1; /*!< レイシャル型の変異 / "Activatable" mutations must be in MUT1_* */
struct martial_arts
{
- concptr desc; /* A verbose attack description */
- int min_level; /* Minimum level to use */
- int chance; /* Chance of 'success' */
- int dd; /* Damage dice */
- int ds; /* Damage sides */
- int effect; /* Special effects */
+ concptr desc; /* A verbose attack description */
+ PLAYER_LEVEL min_level; /* Minimum level to use */
+ int chance; /* Chance of 'success' */
+ int dd; /* Damage dice */
+ int ds; /* Damage sides */
+ int effect; /* Special effects */
};
typedef struct kamae kamae;
struct kamae
{
- concptr desc; /* A verbose kamae description */
- int min_level; /* Minimum level to use */
- concptr info;
+ concptr desc; /* A verbose kamae description */
+ PLAYER_LEVEL min_level; /* Minimum level to use */
+ concptr info;
};
/* Mindcrafters */
typedef struct mind_type mind_type;
struct mind_type
{
- int min_lev;
- int mana_cost;
- int fail;
- concptr name;
+ PLAYER_LEVEL min_lev;
+ MANA_POINT mana_cost;
+ PERCENTAGE fail;
+ concptr name;
};
typedef struct mind_power mind_power;
{
GAME_TEXT name[20]; /* proprietor name */
GAME_TEXT owner_name[20]; /* proprietor name */
- char owner_race[20]; /* proprietor race */
+ GAME_TEXT owner_race[20]; /* proprietor race */
GAME_TEXT act_names[8][30]; /* action names */
PRICE member_costs[8]; /* Costs for class members of building */
struct wilderness_type
{
int terrain;
- int town;
+ TOWN_IDX town;
int road;
u32b seed;
DEPTH level;
byte numstores;
};
-/* Dungeons */
-typedef struct dun_type dun_type;
-struct dun_type
-{
- DEPTH min_level; /* Minimum level in the dungeon */
- DEPTH max_level; /* Maximum dungeon level allowed */
- concptr name; /* The name of the dungeon */
-};
-
/*
* Sort-array element
*/
/* A structure for the != dungeon types */
-typedef struct dungeon_info_type dungeon_info_type;
-struct dungeon_info_type {
+typedef struct dungeon_type dungeon_type;
+struct dungeon_type {
STR_OFFSET name; /* Name */
STR_OFFSET text; /* Description */
} arena_type;
-/*
- * A structure type for doors
- */
-typedef struct
-{
- FEAT_IDX open;
- FEAT_IDX broken;
- FEAT_IDX closed;
- FEAT_IDX locked[MAX_LJ_DOORS];
- FEAT_IDX num_locked;
- FEAT_IDX jammed[MAX_LJ_DOORS];
- FEAT_IDX num_jammed;
-} door_type;
#ifdef TRAVEL
int type;
concptr name;
} dragonbreath_type;
+
+typedef struct {
+ grid_type *grid_array[MAX_HGT];
+ DEPTH dun_level; /*!< 現在の実ダンジョン階層base_levelの参照元となる / Current dungeon level */
+ DEPTH base_level;
+ POSITION width; /* Current dungeon width */
+ POSITION height; /* Current dungeon height */
+} floor_type;
\ No newline at end of file