觸發需要的敘述如下:
迷宮房間:
≡≡≡≡≡≡雲道天關≡≡≡≡≡≡
目的房間:
────── 雲道天關‧問情天 ──────
鬼打牆中:
霧鎖雲埋不辨方位......
利用 hmml 大大提供的"路西法", 再加上以上三個敘述做觸發,
以下為 alias:
#alias goCold {
#var pathCmdIndex 0
#var pathCmdCnt 0
#var lastDir w
#t+ findCold
w
}
1)初始化變數 pathCmdIndex 為 0
2)初始化變數 pathCmdCnt 為 0
3)初始化變數 lastDir 為 w
4)啟用 class findCold
5)"路西法"開始
#alias goPath {#case (@pathCmdIndex) {#ala +1 {w}} {l e} {l n} {l s}}
檢查變數 pathCmdIndex, 為 1 時, 繼續往西走, 2, 3, 4 則往其他三個方向看
為避免跑太快, 所以每一輪等一秒, 設在第一個 command (即向西走)
以下為觸發:
#tr {≡雲道天關≡} {
#add pathCmdIndex 1
#if (@pathCmdIndex > 4) {#var pathCmdIndex 1}
goPath
} "findCold"
1)遞增變數 pathCmdIndex
2)檢查變數 pathCmdIndex 是否已經一輪, 要改回 1 繼續下一輪
3)呼叫 goPath alias
#tr {霧鎖雲埋不辨方位} {
#add pathCmdCnt 1
#if (@pathCmdCnt >= 5) {
#var pathCmdCnt 0
#ala +2 {#send @lastDir}
} {#send @lastDir}
} "findCold"
1)遞增變數 pathCmdCnt
2)檢查變數 pathCmdCnt 是否累加到 5 以上,
是: 歸零, 等候兩秒後送出 lastDir,
否: 直接送出 lastDir
(此動作也是避免跑太快)
#tr {雲道天關‧問情天} {
#ala +1 {
#case (@pathCmdIndex) {
#t- findCold
#show -------- OK --------
#abort 1
} {#var lastDir e
} {#var lastDir n
} {#var lastDir s
}
#var pathCmdIndex 1
#send @lastDir
}
} "findCold"
1) 延遲 1 秒
2) 判斷 pathCmdIndex 的值:
1: 即之前走 w, 也就是現在已經處在目的地,
a)關閉 findCold class, 即關閉相關觸發
b)不執行後面的任何指令
2,3,4: 即上次看的方向,
a)將 lastDir 設定上次看的方向
b)將 pathCmdIndex 設為 1, 讓這個觸發下次判斷時,
認為是走進目的地, 便會停止
(非必要, 即時 case 1 的部份沒執行到, 進到時寒那格沒出口,
自然會收到"什麼?"就停掉了)
c)送出 lastDir