指南针不再需要, 完全按照出口判断走
原来的变量 cstep(走的方向) 还有用, bstep(返回路径, 不再需要使用)
alias stepGo #IF (@leave<>0) {golist=%additem(@cstep,@golist);golist=%remove(|n|s,@golist);golist=%remove(|s|n,@golist);golist=%remove(|w|e,@golist);golist=%remove(|e|w,@golist)}
是找到从入口到出口的最短距离, 也没必要用了
增加触发
^ 这里{唯一|明显}的出口是 (*)。
maze_exits=%1
alias stepNow
原来:#IF (@temp=w) {cstep=n;bstep=s};#IF (@temp=n) {cstep=e;bstep=w};#IF (@temp=e) {cstep=s;bstep=n};#IF (@temp=s) {cstep=w;bstep=e}
改成: cstep=0;#if (@temp=w) {#forall (north|west|south|east) {#if (%pos(%i,@maze_exits)>0 and @cstep=0) {cstep=%left(%i,1)}}};#if (@temp=n) {#forall (east|north|west|south) {#if (%pos(%i,@maze_exits)>0 and @cstep=0) {cstep=%left(%i,1)}}};#if (@temp=e) {#forall (south|east|north|west) {#if (%pos(%i,@maze_exits)>0 and @cstep=0) {cstep=%left(%i,1)}}};#if (@temp=s) {#forall (west|south|east|north) {#if (%pos(%i,@maze_exits)>0 and @cstep=0) {cstep=%left(%i,1)}}}
调整触发
^你找不到 move 这样东西。
原来: ddmove;ppp;#IF (%len(@target)>2) {#T+ PFM;ttt;er;kill @target;pfm;nact1="fight"} {#IF (@mark_tag=0) {stepGo;dropMark;temp=@cstep} {temp=@bstep};stepNow;@cstep};get x from @nact1
改成:ddmove;ppp;#IF (%len(@target)>2) {#T+ PFM;ttt;er;kill @target;pfm;nact1="fight"} {temp=@cstep;stepNow;@cstep};get x from @nact1
^战斗中还是好好的凝神对敌吧。
这种因为战斗拦路的继续走路处理也跟上面触发命令一样处理
迷宫出口 触发删掉, 因为一般会强行设置cstep=xx, 默认从入口出去
因为迷宫只有s,e,n,w 4个方向, 所以上面判断走的路径就比较简单, 如果有southup啦,northwest啦, 上面的判断就需要更换一下 |