Implementing fixed room from v_info.txt.
M:K:672
# Maximum number of vaults in v_info.txt
-M:V:129
+M:V:136
# Maximum number of terrain features in f_info.txt
M:F:255
D:%.#####.#####.%
D:%.............%
D:%%%%%%%%%%%%%%%
+
+N:129:Fixed room
+D:%%%%%%%
+D:%.....%
+D:%.'''.%
+D:%.'.'.%
+D:%.'''.%
+D:%.....%
+D:%%%%%%%
+
+N:130:Fixed room
+D:%%%%%%%
+D:%.....%
+D:%.'''.%
+D:%.'.'.%
+D:%.'''.%
+D:%.....%
+D:%%%%%%%
+
+N:131:Fixed room
+D:%%%%%%%
+D:%.....%
+D:%.'''.%
+D:%.'.'.%
+D:%.'''.%
+D:%.....%
+D:%%%%%%%
+
+N:132:Fixed room
+D: %%%
+D: %%.%%
+D: %%...%%
+D:%%.....%%
+D:%.......%
+D:%%.....%%
+D: %%...%%
+D: %%.%%
+D: %%%
+
+N:133:Fixed room
+D: %%%
+D: %%.%%
+D: %%...%%
+D:%%.....%%
+D:%.......%
+D:%%.....%%
+D: %%...%%
+D: %%.%%
+D: %%%
+
+N:134:Fixed room
+D: %%%
+D: %%.%%
+D: %%...%%
+D:%%.....%%
+D:%.......%
+D:%%.....%%
+D: %%...%%
+D: %%.%%
+D: %%%
+
+N:135:Fixed room
+D: %%%
+D: %%.%%
+D: %%...%%
+D:%%.....%%
+D:%.......%
+D:%%.....%%
+D: %%...%%
+D: %%.%%
+D: %%%
return TRUE;\r
}\r
\r
+\r
+/*!\r
+* @brief \83^\83C\83v16\82Ì\95\94\89®\81cv_info.txt\82æ\82è\8cÅ\92è\93Á\8eê\95\94\89®\82ð\90¶\90¬\82·\82é / Type 16 -- fixed special room (see "v_info.txt")\r
+* @return \82È\82µ\r
+*/\r
+bool build_type17(void)\r
+{\r
+ vault_type *v_ptr = NULL;\r
+ int dummy;\r
+ POSITION x, y;\r
+ POSITION xval, yval;\r
+ POSITION xoffset, yoffset;\r
+ int transno;\r
+\r
+ /* Pick a lesser vault */\r
+ for (dummy = 0; dummy < SAFE_MAX_ATTEMPTS; dummy++)\r
+ {\r
+ /* Access a random vault record */\r
+ v_ptr = &v_info[randint0(max_v_idx)];\r
+\r
+ /* Accept the first lesser vault */\r
+ if (v_ptr->typ == 16) break;\r
+ }\r
+\r
+ /* No lesser vault found */\r
+ if (dummy >= SAFE_MAX_ATTEMPTS)\r
+ {\r
+ msg_print_wizard(CHEAT_DUNGEON, _("\8cÅ\92è\93Á\8eê\95\94\89®\82ð\94z\92u\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B", "Could not place fixed special room."));\r
+ return FALSE;\r
+ }\r
+\r
+ /* pick type of transformation (0-7) */\r
+ transno = randint0(8);\r
+\r
+ /* calculate offsets */\r
+ x = v_ptr->wid;\r
+ y = v_ptr->hgt;\r
+\r
+ /* Some huge vault cannot be ratated to fit in the dungeon */\r
+ if (x + 2 > cur_hgt - 2)\r
+ {\r
+ /* Forbid 90 or 270 degree ratation */\r
+ transno &= ~1;\r
+ }\r
+\r
+ coord_trans(&x, &y, 0, 0, transno);\r
+\r
+ if (x < 0)\r
+ {\r
+ xoffset = -x - 1;\r
+ }\r
+ else\r
+ {\r
+ xoffset = 0;\r
+ }\r
+\r
+ if (y < 0)\r
+ {\r
+ yoffset = -y - 1;\r
+ }\r
+ else\r
+ {\r
+ yoffset = 0;\r
+ }\r
+\r
+ /* Find and reserve some space in the dungeon. Get center of room. */\r
+ if (!find_space(&yval, &xval, abs(y), abs(x))) return FALSE;\r
+\r
+#ifdef FORCE_V_IDX\r
+ v_ptr = &v_info[2];\r
+#endif\r
+\r
+ /* Message */\r
+ msg_format_wizard(CHEAT_DUNGEON, _("\8f¬\8c^Vault(%s)\82ð\90¶\90¬\82µ\82Ü\82µ\82½\81B", "Lesser vault (%s)."), v_name + v_ptr->name);\r
+\r
+ /* Hack -- Build the vault */\r
+ build_vault(yval, xval, v_ptr->hgt, v_ptr->wid,\r
+ v_text + v_ptr->text, xoffset, yoffset, transno);\r
+\r
+ return TRUE;\r
+}\r
+\r
extern bool build_type7(void);\r
extern bool build_type8(void);\r
extern bool build_type10(void);\r
+extern bool build_type17(void);\r
\r
{{ 0, 0, 1, 1, 1, 2, 3, 4, 5, 6, 8}, 20}, /*TRAP */
{{ 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2}, 40}, /*GLASS */
{{ 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3}, 1}, /*ARCADE */
+ {{ 20, 40, 60, 80,100,100,100,100,100,100,100}, 1}, /*FIX */
};
ROOM_T_OVERLAP,
ROOM_T_CROSS,
ROOM_T_FRACAVE,
+ ROOM_T_FIXED,
ROOM_T_NORMAL,
};
case ROOM_T_TRAP: return build_type14();
case ROOM_T_GLASS: return build_type15();
case ROOM_T_ARCADE: return build_type16();
+ case ROOM_T_FIXED: return build_type17();
}
/* Paranoia */
#define ROOM_T_TRAP 13 /*!<部屋型ID:トラップ部屋 / Piranha/Armageddon trap room */
#define ROOM_T_GLASS 14 /*!<部屋型ID:ガラス部屋 / Glass room */
#define ROOM_T_ARCADE 15 /*!<部屋型ID:商店 / Arcade */
+#define ROOM_T_FIXED 16 /*!<部屋型ID:固定部屋 / Fixed room */
-#define ROOM_T_MAX 16 /*!<部屋型ID最大数 */
+#define ROOM_T_MAX 17 /*!<部屋型ID最大数 */
/*