女仆试图耕种不可抵达的农田
lone-wolf-akela opened this issue · 6 comments
对于种地的女仆,如果其范围内有一块待收获的农田,但因为寻路障碍(比如被玻璃墙/门挡住了)导致其无法抵达这块农田,则女仆会一直傻乎乎的望着自己想去的那块田。更重要的是,此时女仆会忽略自己身边的交互面板,不进行任何合成、也不把背包里的东西放进箱子。
我给女仆分的一小块地就在我自己亲自种的一大块地旁边,中间是用玻璃墙和MalisisDoors MOD中的木框玻璃门隔开的,结果女仆就一直盯着我亲自种的那块地……
建议:种植模式的女仆应当忽略寻路算法无法抵达的田地;女仆操作交互面板的优先级应当高于她们种地/收获的欲望……
- 针对这个问题,我能想到两个可能的解决思路:
- 若女仆尝试前往某个目的地,但是中途发现过了一段时间坐标却没有改变,则认为这个目的地不可抵达并放弃前往该位置;女仆记下所有被认为不可抵达的坐标,在之后的寻路中将这些坐标视为“低优先级目标”,即优先查看其它位置有没有可以种植/收获的土地或者可操作的交互面板,如果实在没有别的可做的事情,再重新尝试前往低优先级目标,这样如果玩家之后把路上的障碍给去除掉了女仆也有机会重新学习到“这个目标现在已经可以抵达了”。这是我认为从玩家角度来看比较自然的一种方法,但是代码上可能比较复杂,也说不定会有别的什么坑。
- 另一个更简单的办法是允许玩家使用罗盘或别的道具,为女仆指定一个矩形的坐标范围(而不是现在这样只指定一个中心的home点),女仆寻找目标时只在该范围内寻找。这个方案应该相对来讲更好做一些。
- 这一点我又仔细想了想,如果 寻路/指定工作范围 的问题可以解决的话,那么面板交互的优先级低一点问题也不太大。我之前提出这一点是因为我的女仆在尝试前往不能抵达的田地的时候,就一直堵在墙角里,然后那个墙角就刚好是给她的交互面板,然而这时候的她既不移动、也完全不理会就在自己面前的面板……
1.1. 如果寻路算法找到了一条路,那么理应能走到目的地。如果走不到说明寻路算法有问题(这个问题可能是寻路算法造成的,也可能是其他模组的作者造成的),这时候应该修正错误而不是想个其他办法把错误补上。
1.2. Home 点也划定了一个范围,如果超出范围则不会开始寻路。至于你说的划定区域本来就在我的计划中,但我觉得现在还不是时候。
2. 这个问题和优先级无关,交互面板的优先级本来就是最低的。
如您所言,那么现在这个issue的核心就是女仆的寻路算法有问题了。
2019_08_03_16_55_50.zip
上面是一个展示该问题的视频,可以看到当女仆附近出现不可抵达的耕地时,她补种身边能抵达的空耕地的等待时间明显变长。
测试环境仅安装了forge-1.12.2-14.23.5.2838、replaymod-1.12.2-2.2.0-b7和touhoulittlemaid-1.12.2-1.1.2-hotfix-alpha,因此应该可以排除是其他MOD造成问题这一可能性。