X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Ftypes.h;h=c92f065593aa903b79abadf6ae86274d31cdd3b4;hb=ad951098494c9de50a330832bbd93a3e508989a8;hp=adeb5497a538cfdfabbe311d8961a91fb8f5c96d;hpb=a31cf32c55912f16dc1677f7c968fcbee782980c;p=hengband%2Fhengband.git diff --git a/src/types.h b/src/types.h index adeb5497a..c92f06559 100644 --- a/src/types.h +++ b/src/types.h @@ -37,7 +37,7 @@ * * 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. * @@ -427,13 +427,13 @@ struct skill_table /* * 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 @@ -450,17 +450,17 @@ struct skill_table * 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、 * @@ -503,7 +503,7 @@ struct coord * 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. @@ -620,7 +620,40 @@ struct monster_type 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; }; @@ -987,12 +1020,13 @@ struct player_type 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; @@ -1071,6 +1105,9 @@ struct player_type 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_* */ @@ -1514,31 +1551,31 @@ typedef struct martial_arts martial_arts; 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; @@ -1572,7 +1609,7 @@ struct building_type { 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 */ @@ -1610,7 +1647,7 @@ typedef struct wilderness_type wilderness_type; struct wilderness_type { int terrain; - int town; + TOWN_IDX town; int road; u32b seed; DEPTH level; @@ -1631,15 +1668,6 @@ struct town_type 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 */ @@ -1705,8 +1733,8 @@ feat_prob; /* 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 */ @@ -1813,19 +1841,6 @@ typedef struct } 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 @@ -1858,3 +1873,11 @@ typedef struct { 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