noita吧 关注:22,734贴子:83,563

【法杖机制探究】如何让法杖成为法术机枪?

只看楼主收藏回复


“哒哒哒哒哒哒哒哒哒哒”


IP属地:浙江1楼2019-12-19 12:28回复
    1基础机制
    想要知道这个问题的答案,我们就得了解法杖施法间隔的构成,
    施法间隔分为:施放延迟和充能时间两个部分,
    施放延迟指的是法杖每次施法后所需要等待的时间,相当于攻击后摇
    充能时间指的是法杖所有格子里的法术施放完成后下一轮施放需要等待的时间,相当于打枪时打完一弹匣子弹后换弹药的时间


    IP属地:浙江2楼2019-12-19 12:29
    收起回复

      以初始法杖为例,初始法杖本身有0.17秒的施法延迟和0.40秒的充能时间,看起来好像施法间隔等于两者之和,其实不然。因为法术本身也有施放延迟!


      IP属地:浙江3楼2019-12-19 12:31
      回复

        还是以初始法杖为例。初始法杖里带了两个火花弹,每个火花弹有0.05秒的施法延迟。因为这不是乱序杖,所以法杖内的法术按顺序施放
        所以总的施法间隔=(法杖施法延迟0.17秒+火花弹1号施法延迟0.05秒)+(法杖施法延迟0.17秒+火花弹2号施法延迟0.05秒)+法杖的充能时间0.40秒= 0.84秒,很显然这远不能达到我们法术机枪的标准。


        IP属地:浙江4楼2019-12-19 12:32
        回复
          2方法探究和代码分析
          那么有没有什么办法能减小这个数值呢?
          此时就要介绍一下noita中bug般的存在:链锯


          IP属地:浙江5楼2019-12-19 12:52
          回复

            看起来似乎很不起眼,只不过让充能时间减少0.17秒罢了,似乎还比不上水滴,不光减充能0.17秒还减施放延迟0.25,更何况链锯还有散射+3度的负面属性。


            IP属地:浙江6楼2019-12-19 12:53
            回复
              那为什么说链锯是bug呢?先来看个例子

              按理说这是把垃圾的不能再垃圾的杖,虽然别的属性还不错,但是充能时间达到了惊人的6.67秒,我想你要是捡到也会毫不犹豫的丢掉,但是法术配好的效果却令人意外。


              IP属地:浙江7楼2019-12-19 12:55
              收起回复

                可以看到火花弹密集的射出形成了光柱,这正是我们想要的法术机枪!!
                为什么会这样呢?


                IP属地:浙江8楼2019-12-19 12:56
                回复

                  (水滴的相关代码,将当前施放延迟减少15单位,1单位时间≈0.017秒)
                  也就是说”合理使用”链锯的话,就能达到让施放延迟为0的目的!!!!
                  这可比水滴强了不知道多少倍。


                  IP属地:浙江10楼2019-12-19 13:01
                  收起回复
                    3 实验分析
                    接着我们来看如何”合理使用”链锯。

                    由于实验数据过多(大约70组),其余不再展示,多组对照实验目的是为了排除干扰项


                    IP属地:浙江11楼2019-12-19 13:06
                    回复
                      4初步结论和公式
                      1.法杖的技能搭配需要以链锯结尾以使法杖的本身的施放延迟被忽略
                      2.只有当充能时间被减至0的时候,总施放延迟才会被忽略
                      3.法杖的施法间隔与空格子数量和无充能时间说明的投射物修正无关
                      4.链锯的数量会影响攻速,即使已达成法术机枪
                      5.由于法术本身的施放延迟会导致法杖无法实现法术机枪,所以法术需要和链锯组成多重施法且以链锯结尾。
                      由于还未挖掘到官方ACTION_DRAW_RELOAD_TIME_INCREASE的函数实现,所以目前还不能下最终结论,如有新发现会继续更新。

                      (链锯的充能时间缩减相关代码)


                      IP属地:浙江12楼2019-12-19 13:11
                      回复
                        目前得到的法术机枪公式:
                        多重施法(投射物+链锯)+ N个链锯 + 链锯结尾

                        其中链锯数量由法杖和法术的总充能时间决定:每个链锯-0.17s充能时间,直接进行加法计算,需要将总充能时间减至0或者0以下


                        IP属地:浙江14楼2019-12-19 13:18
                        收起回复
                          5鸣谢
                          感谢Nolla官方制作了这款游戏并开放mod接口
                          特别感谢ZJoep提供的代码数据挖掘
                          感谢ZJoep和Kid在贴吧交流群里提出的建议和指导
                          感谢Tanimodori提供的文档格式
                          6 版权声明
                          “没⼈关⼼的部分”
                          Nolla Games 拥有Noita 和本⽂中的游戏截图内容的版权。⽂中使⽤这些内容属于合理使⽤。
                          本作品采⽤知识共享署名-⾮商业性使⽤-相同⽅式共享4.0国际许可协议进⾏许可。


                          IP属地:浙江15楼2019-12-19 13:18
                          回复
                            nb


                            IP属地:北京来自Android客户端17楼2019-12-19 13:50
                            回复
                              我用几句话给你概括下:使用多重触发后,触发的法术所携带的延迟不会被计算,只会计算携带的减少延迟效果。当累计减少到0后,可以做到0延迟


                              IP属地:安徽来自Android客户端18楼2019-12-19 15:04
                              收起回复