mud中,迷宫是一个很重要的课题。
其实这里说的迷宫,并不仅仅指迷宫这个解密形态,指的是非标准移动,动态出口。
有些需要特殊物品/ask npc才能通过的出口,其实也是迷宫的一种。
在我的第三版移动代码里
代码地址
Maze实现的依然有点丑。如果我还有第四版的移动代码的话,应该就是重写这一块了。
每个Maze类需要实现实现以下方法
CheckEnter 检查是否进入了该迷宫
CheckEscaped 检查是否离开了该迷宫
Walk 迷宫的下一步动作
OnStepFinsih 迷宫移动结束后的动作
很明显,在通过CheckEnter和CheckEscaped的组合判定迷宫生效后,通过覆盖Move的Walk和OnStepFinsih方法,来代替move的正常操作。
对于实际移动来说,根本不知道也不会去判断是路线规划返回的移动指令,还是迷宫返回的。
非常非常标准的一个补丁行为。
具体的Maze实现,可以参考
代码地址