为补全npc生成机制(地表敌怪→地下敌怪→其他npc),最后来到了小动物这一部分。同时也是为了减少重复工作,在此记录,方便以后使用(更新版本之前)。
1.小动物生成总览(使用表格)
说明一个npc的生成机制,可以说什么条件下生成什么,也可以说什么npc在一定条件下生成。在这里我们围绕[生成物块]来说明小动物的生成机制。
表1 普通草皮部分
表2 类普通草皮部分(神圣草皮和普通草皮的区别仅在于萤火虫/荧光虫、龟,其他一样,表中为节省空间只有列举了该物块的特别生成)
表3 一般生成类(主要为非地表部分)
表4 其他
2.表中部分名词的解释
①"仅侧向生成"
这是一条针对于部分液体类npc(各种鸭、龟、水黾、液体生成的海鸥、鳉鱼)的生成条件,它的意思是使这个npc只能在玩家两侧生成:
其中,白框是安全区域,绿框是生成区域。
当时测到这个机制的时候,我并不理解为什么会这样,但是也没想太多,直到[鳉鱼]这个特例的出现:
可以看到,它似乎能够直接在屏幕内生成。
但实际上,这是由于它的实际生成位置有概率移动到生成点上方最高水面处,导致水体足够深时,甚至能够直接生成到玩家脸上。
实际生成点在下方沙块上。
因此,本着刷怪过程尽量不被玩家看到的原则,这类能直接刷在水面上的npc就只能在两侧(较远)处生成。[设计成在水面生成是为了效果真实,碍于刷怪区域的形状,大概只能这样做]
所以说鳉鱼生成的这个特例(或许是漏洞)帮助理解了为什么它会这样设计,是很有意义的。
②"不在海洋"
表中的海洋指的是狭义的海洋,即地图左右边界各向中心延伸380格,且坐标≥0 地表的矩形区域
③"气象"、"稳定气象"、"流星雨"(为了"附魔夜行者"的生成所必要的条件)
流星雨:所谓的流星雨,是指某个落星频率显著增加的夜晚。
由于这个"事件"目前在游戏中没有诸如"正在发生流星雨!"这样醒目的提示(不知道会不会加入),所以无法以常规方法得知它是否发生,只能十分粗略地根据背景流星频率来判断?
[注意!这个想法没有任何根据,只是一个假设,绝对不能使用]
图中为一个流星雨夜
气象:可能表中"气象"的说法并不严谨,只是一个代表性词汇,实际上想表达的是游戏中[天气收音机]对于[云量]的描述:即清除、少云(局部多云)、多云、大部多云和阴天。
游戏中的气象系统是一个不断运作的系统(冻结时间也会运作),受时间流速影响,一般来说,一个气象不是处于真稳定期(可以理解为气象函数此时变化率为0),就是在向其他气象过渡(假稳定期,实际上变化率不为0)。
虽然对于天气收音机来说,这两种情况显示为同种气象,但在内部它们是绝对不同的。[可以认为是两者函数值都为正,只不过一者导数为0,一者不为0,而我们只能得知函数值为正这一信息,却不能得知它是否在变化]
这也就是说,我们没有办法得知当前气象是否稳定,只能在条件大体上合格时去尝试。
然而,灯笼夜是个例外。这是一个整晚锁天气锁气象的强硬事件
如果它和流星雨同时发生,那么结果是一整晚生成[附魔夜行者](参考表1的条件需求);
否则,就只能在一般的夜晚碰运气。
④"地狱高度"、"蒂姆生成高度"
这些高度与之前发的"太空怪生成高度"一样,都是可以准确算得的。
地狱高度:有两种方法,刷怪时可采用定性方法:
有深度计之后,可采取定量方法:
与确定太空刷怪层位的方法类似,获取可到达最底部坐标后+86[本质上就是加上"黑框"的长度],得到真底部坐标;与海洋类似,地狱跨度也是380(190格),所以4016+86-380=3722,这个就是这张地图的地狱怪生成起始高度。
[对应前面图中的绿线]。
蒂姆生成高度:有关这个高度的npc不多,但是恰好涉及了蜗牛这种小动物,因此还是有必要提一下的。(下图wiki给出了计算方法)
回到地图中,找到地下层底部深度,为260 地下:
现在计算蒂姆生成高度:
(4016+86+260)/2=2181;
显然,图格边界都是偶数,同之前太空怪高度计算的处理方法,这个值应该向下舍入到最近的偶数,即2180 洞穴,即蒂姆在上表面高度低于或等于2180 洞穴的图格上生成。
所以,根据表3中对于蜗牛的生成描述,蜗牛最深可在上表面为2178 洞穴的图格上生成。
3.表中部分具有多变/复杂生成条件/生成条件宽泛的小动物归纳
①兔兔:
如果≥0 地表 则{普通草皮/神圣草皮+不下雨+不在邪恶/陨石环境+不在海洋+非液体刷怪+不在墓地环境};
如果2 地下~洞穴顶部 则{任意非丛林草皮物块+不下雨+不下雨+不在邪恶/陨石环境+非液体刷怪+不在墓地环境};
②金鱼(非行走金鱼/雨天金鱼):
如果不在下雨 则{液体刷怪条件+非沙块[指海洋内的沙块](1.4.0.5)+任意物块+任意高度[包括地狱;太空则需要npc压制敌怪生成,否则基本不生成]};
③瓢虫:
如果≥0 地表 则{风速≥20+普通草皮/神圣草皮+白天+[某日能生成蝴蝶]+不下雨+不在邪恶/陨石环境+不在墓地环境};
④海鸥:
如果非液体刷怪条件 则{在海洋+任意物块};
如果液体刷怪条件 则{在海洋+任意物块+仅侧向刷怪};
4.总结
①在地表,小动物刷怪依赖特定的物块,而非某种环境;
②液体刷怪优先级非常高;
③区分地层要看小地图,而不是画面,且即便是小地图,在说明刷怪问题时,还是要动手去测具体高度,而不能完全相信它给出的(高度)。
5.补充信息
①玩家在地狱范围内时,npc对敌怪生成的抑制会失效,但同时又不影响对小动物生成的促进;
②刷地狱小动物/地狱怪时,如果想要高效率/生成速度,那么玩家一定要处于洞穴层底部,而不是在地狱范围内;
*本篇篇幅有限,且测试时间较短,缺乏完备的验证。所以出现错误、纰漏也是不可避免的,因此内容仅供参考,至于到底对不对还是要上手去测去验证。
最后,这是我所认知/理解到的刷怪范围的最终版本:
可以有效理解刷怪范围的边界问题。
没了,就这么多。