    < 關於 room 的函數 >

    ( 文件內容以後仍然會有修正, 請留意. )

原始定義檔案: /cmds/std/look.c

string short			房間的短名, 字數請盡量精簡. ( 必要 )

string long			房間的普通長敘述. ( 必要 )

string night_long		房間晚上的普通長敘述. ( 非必要 )

string spring_long		關於四季的長敘述, 可以任意使用. ( 非必要 )
string spring_night_long	例子: 一個房間設有 long, 
string summer_long		autumn_night_long.
string summer_night_long	注意: 房間顯示長敘述的優先順序為 --
string winter_long		各季節的晚上 > 各季節的白天 >
string winter_night_long	普通晚上 > 普通百天
string autumn_long		沒有各季節的晚上敘述時, 找各季節的白天敘述
string autumn_night_long	. 沒有各季節的白天敘述時, 找普通的敘述.

int outdoors			不予設定即為 0. 如果設定不為零, 就可以看到
				自然景物的室外變化. ( 非必要 )

mapping detail/			房間進一步可以仔細看的敘述. ( 非必要 )
				格式:
				set("detail/", ([
					"細部敘述名稱 ( 字串 )":
				"敘述 ( 字串 )",
					"細部敘述名稱 2 ( 字串 )":
				"敘述 2 ( 字串 )",
				]));
				別忘了每個敘述後面要加上 \n 以做換行.

string note			給予注意力 (not) 較高的人進房間的提示.

原始定義檔案: /cmds/std/go.c

int mov_cost			在此房間的移動點數消耗量, 預設為 5.
				概念上大概是橫越整個房間時, 一般人所花費
				的時間值, 以分鐘計. ( 非必要 )

string terrain			房間的地形種類. ( 非必要 )
				目前有的種類:
				plain		平地
						一般能在陸地上移動的載具
						或生物都能進入.

				hill    	丘陵 ( 或山坡 )
						同上, 但是一般車輛無法進入.

				mountain	高山 ( 或陡坡 )
						坦克車也無法進入的崎嶇地形.

				river		河流 ( 或淺水域 )
						一般小船及會游泳的生物可進入,
						但是大型船因吃水過深無法進入.

				ocean		海洋 ( 深水域或大湖 )
						只有遠洋船隻可以進入.

				atmosphere	大氣圈 ( 或空中 )
						只有會飛的生物或飛行物可進入.

				space		宇宙 ( 外太空 )
						只有宇宙船艦或穿著宇宙服的生
						物可以進入.

原始定義檔案: /feature/clean_up.c

int no_clean_up			不予設定則為 0. 如果設定不為零, 此房間就不會
				清除房間裡的任何物件. ( 非必要 )

原始定義檔案: /std/room.c

mapping exits			房間的出口. ( 一般來說, 必要 )
				格式:
				set("exits", ([
					"方向 1 ( 字串 )": 
				"房間的檔案名稱 1 ( 字串 )",
					"方向 2 ( 字串 )": 
				"房間的檔案名稱 2 ( 字串 )",
				]));
				如果想使用同一個目錄中的檔案, 可以使用 __DIR__
				代替目前工作目錄的名字.
				例子:
				以一個位於 /d/test 目錄下的房間 room_1.c 為例.
				如果想通往同樣在 /d/test 下的 room_2.c
				可以在檔案名稱上使用 __DIR__"room_2", 也可以
				乖乖地用 "/d/test/room_2.c"

mapping objects			房間裡要載入的物件. ( 非必要 )
				格式:
				set("objects", ([
					"物件的檔案名稱 1 ( 字串 )": 
				"此物件要載入的數目 ( 整數 )",
					"物件的檔案名稱 2 ( 字串 )": 
				"此物件要載入的數目 ( 整數 )",
				]));

關於 create_door 函數:

如果這個房間要設定門, 請確定在房間程式的開頭寫上 #include <room.h> 一行.

格式:
	varargs void create_door( string dir, mixed data, 
		string other_side_dir, int status, string key_id )

	不定參數數目  無傳回值  製造門的函數( 字串  門的方向, 混合  門的名稱,
		字串  在門另一邊的進門方向, 整數  門的狀態, 字串  鑰匙 )

	  這個函數可以在房間裡製造出門. 要注意的是: 不定參數數目可以
	容許你不指定全部的五個參數, 但是指定的參數不可以中間跳過.
	  例子:
		只指定 dir, data, other_side_dir 兩個參數, 不指定後三個參數.
		但是不可以指定成: dir, data, other_side_dir, key_id
		( 跳過 status ).

	  一定要指定的參數是前三個. 如果你在房間裡製造的一個門, 別忘了
	在門另一頭的房間也要製造一個相反方向的門, 這是規定.

	  關於門的狀態設定在 /include/room.h 裡, 請自行參考.

	  有設定鑰匙的門一開始不一定要設定為鎖上 ( 即 DOOR_LOCKED ).

關於 replace_program( ROOM )

	  這個命令會把目前這個房間替換成 /std/room.c ( 即 /include/globals.h
	裡定義的 ROOM ). 但是保留這個房間自己持有的變數, 即 set 和 set_temp
	等函式所指定的變數. 大概可以節省記憶體吧? 我以前試過, 記憶體用量似乎
	沒啥改變. 理論上是可以的.

	  注意 !! 如果房間有處理到自有變數以外的函式, 例如使用了 init(),
	add_action() 等函式, 用 /std/room.c 替換這個房間的下場應該可以想見.
	因此, 有用到這種函式的房間請千萬別加上這行啊, 撰寫 ES2 mudlib 的
	安老大已經說過, 下場是造成整個 MUD 程式癱瘓...

	  至於 create_door() 等已經定義在 /std/room.c 裡頭的函式, 到底會不會
	因為這種替換受到影響呢? 目前我還沒試過...

By Spock @ FF   96.Dec.18.
