Commands:
waylist1="north|south|east|west|up|down"
waylist2="south|north|west|east|down|up"
#var way %replace(@way,"out 和 ","")
#var way %replace(@way,", 和 ",|)
#var way %replace(@way," 和 ","|")
#var way %replace(@way,", ",|)
可用#loop簡化為(對電腦而言,還是執行四次):
#loop 1,4 {#var way %replace(@way,%item("out 和 |, 和 | 和 |,
",%i),%word("/|/|/|",%i,"/"))}
#if (%numwords(@way,|)=1) {#alarm +1 {@way
#var wayhistory %item(@waylist2,%ismember(@way,@waylist1))}} {#noop
#alarm +1 {#var way %delitem(@wayhistory,@way)
@way
#var wayhistory %item(@waylist2,%ismember(@way,@waylist1))}}
======================================
01.Pattern:將出口方向存到名為way的欄位裡,可以在樹狀目錄的
Variables裡找到它。
02.暗黃色行是一條名為waylist1的資料表,內含血肉會用到的出口方向,不含out。
03.暗紫色行是一條名為waylist2的資料表,出口位置和waylist1完全相反,做為寫出
倒回方向用。
04.靛色同樣用來整理出口的資料,使它整齊好用,當然out也直接刪去。
05.(%numwords(@way,|)=1):判斷房間出口有幾個的判斷式,一個出口執行亮紅色指令
集,否則執行亮藍色指令集。
06.紅色部分:{#alarm +1 {@way 即房間出口只有一個時,就直接執行@way裡的方向,
時間設定一秒後執行。下一行紅色段則是判斷下個房間的倒走方向用:
假設在某一方間走往west的方向
%ismember(@way,@waylist1):此函式會算出@way的資料在waylist1是第幾筆資料。
@way裡是west,west在waylist1裡是第四筆,得到4的結果。代入上一層式子裡:
%item(@waylist2,4):此函式會應要求抓出waylist2裡資料,依上個式子,要求取
出第四筆資料,即east。最後並放入wayhistory的欄位裡。做為下一格房間比對用。
07.亮藍色部份:當房間出口為複數,即執行這段指令集。沿續06的例子,往西走到新房
間,出口有兩個:east和north。並紀錄在way欄位裡並整理完成。
%delitem(@wayhistory,@way):用來刪去way欄位裡不必要的資料,現在way裡有east
和north兩筆資料,wayhistory有east這筆資料,經比對,刪除掉way裡east這筆資料
後,最後重新放回way裡,現在way裡僅剩north這筆資料。
@way:無須說明,走這道方向就是正確的路。
最後一行同06說明,求出回頭路後放進wayhistory準備下個房間使用。
08.#noop:無意義指令,可以拿來斷行用,主要用來塞#if中沒事做的部份。
09.血肉長城會常常遇到戰鬥,所以要另外搭配其它觸發開閉使用。否則不要下look指令