植物大战僵尸吧 关注:555,872贴子:5,049,940

有关僵王的一些机制(上)

只看楼主收藏回复

这只是个半成品,但是半成品为什么就发呢……因为我现在不想搞下去了,反正最重要的部分解决掉了,剩下的等到暑假再说吧……
等完整版出来后再一起发到bilibili吧,如果没有人替我弄掉后半段的话。


IP属地:江苏1楼2024-02-05 20:35回复
    僵王的坐标位于(0,0),也就是左上方,属于一路。
    防御域偏移(700,80),大小(90,430),也就是(700,80)-(790,510)的方框。


    IP属地:江苏2楼2024-02-05 20:35
    收起回复
      有关僵王的一些指针。其实指针表里已经全了,稍微做一点补充说明。
      +F4、+F8、+FC:指针表中描述为“雪橇队第二~四只僵尸/舞王第一~三只伴舞编号”,同时也是僵王手中的蹦极编号,按从左到右的顺序。
      +12C:指针表中描述为“僵王是否砸车”,“是否”这个词用的不太好,其实这个位置有0、1、2三种可能,后文详述。
      +130:指针表中描述为“僵王放僵尸的行数”,同时也是砸车和跺脚的行数。
      +134:指针表中描述为“僵王放招数倒计时”,“放招数”这个词不太好,实际上是僵王放蹦极&砸车倒计时。
      +80:指针表中描述为“蹦极僵尸所在列”,更准确地说是最左边的蹦极僵尸所在列;同时也是砸车的列数。
      砸车的范围是2*3,内存中的行和列是左上角的那一个格子。
      跺脚的范围是相邻两行,内存中的行是靠上的那一行。


      IP属地:江苏3楼2024-02-05 20:36
      回复
        僵王一共有五个技能:放僵尸、探头(吐球)、砸车、放蹦极、跺脚。
        与技能有关的倒计时有五个:

        (闲置倒计时就是每个僵尸都有的那个属性倒计时)
        僵王每次开始动作时,都会取消冻结和减速状态。(减速我能理解,但是冻结状态下倒计时都停了啊?)
        只有在闲置倒计时归零时,才会进行其他倒计时的判定,已归零的倒计时可以开始特殊动作。
        其他倒计时归零时,先保持为0等待。
        多个倒计时同时归零时,优先级为跺脚>放蹦极/砸车>低头>放僵尸,未启动的倒计时保持为0,等待下一轮闲置倒计时归零。
        当一个特殊动作开始时,该动作对应的倒计时重置,闲置倒计时保持为0;动作结束后,闲置倒计时重置。
        砸车行为比较特殊,当车落下时(不是动作开始时)会重置所有特殊动作的倒计时(闲置倒计时除外,动作还没结束它就不能重置)。


        IP属地:江苏4楼2024-02-05 20:36
        收起回复
          关于损伤度先说一下:
          两个临界值分别是50%和80%,小于临界值则进入下一损伤度。


          IP属地:江苏5楼2024-02-05 20:36
          回复
            放僵尸(我喜欢称之为刷新):
            僵王先选择放僵尸的行数,选择方案与常规关卡一致。
            然后选择僵尸种类,与僵王的存在时间直接有关:
            当存在[0,3500]时,出普僵;
            当存在(3500,8000]时,出路障;
            当存在(8000,12500]时,出铁桶;
            当存在(12500,+∞)时,有以下12种僵尸可选,等概率随机:
            路、杆、桶、报、门、橄、车、丑、跳、梯、篮、巨(若为一路则不出巨人)。
            刚出生的僵尸横坐标600。
            低头、吐球:
            五行等概率随机,冰球/火球等概率随机。
            剩下的动画、速度、判定之类的等以后在看……
            蹦极:
            僵王血量损伤度升到1级时必触发一次,蹦极&砸车倒计时重置并开始启动(刚开始时是-1还记得吗?)。(同样只会在闲置倒计时归零时判定血量。)
            三只蹦极分别位于1~5列中相邻的三列,三种情况等概率,不论有没有植物。出生顺序从左到右。
            蹦极的选行疑似和常规关卡一致。(常规关卡啥样的我也不知道,改天看看。)
            砸车:
            僵王血量损伤度升到2级时必触发一次。
            1~5列等概率随机挑选2*3的格子,不论有没有植物。
            关于放蹦极和砸车的概率:冒险75%蹦极25%砸车,小游戏均为50%。
            关于+12C的“僵王是否砸车”解释一下,它是和当前的损伤度连在一起用的,游戏开始时为0,通过比较两者是否相等来判断损伤度是否出现了新的变化。若两者不同,则将损伤度写入+12C,再判断损伤度是否是1,是则放蹦极,否则砸车。
            跺脚:
            僵王血量损伤度升到2级时重置并开始启动。
            范围为相邻两行的6~8列,僵王关9列不可种植物,若用修改器调出则9列植物也会被踩扁。
            与砸车不同,跺脚要先挑出可以踩到植物的地方,再在其中等概率随机。


            IP属地:江苏6楼2024-02-05 20:37
            回复
              僵王+28处的“状态”有以下几种情况:

              动画的那部分是我用AvZ逐帧printf当前时间和僵尸状态然后减出来的,其中砸车一共有15种情况,我就随便挑几个做了个不完全统计,其他数据也不好保证没有看岔。
              绝大多数动画的时间与动画进度有关,蹦极的停留时间是个例外,与蹦极的停留时间有关,一旦有蹦极返回或全部死亡僵王就会回收。
              疑似87~89期间(就是头完全伸出来时候)可受伤,86、90不能。


              IP属地:江苏7楼2024-02-05 20:37
              收起回复
                (因为过于疲惫本文写得十分懒散,现在终于结束了我精神了我又想话痨了……)
                最后统计一下剩下的东西:
                动画方面一点也不懂(这个倒还不重要);
                冰火球的时空数据全没有;
                蹦极方面的细节,到时候先把蹦极僵尸本身的机制搞清楚;
                倒计时的细节,主要是衔接时候(我连控制各倒计时-1的函数在哪都没找到)。


                IP属地:江苏8楼2024-02-05 20:37
                回复
                  前排膜(


                  IP属地:上海9楼2024-02-05 21:17
                  回复
                    前排膜(


                    IP属地:美国10楼2024-02-05 21:32
                    回复
                      各种倒计时重置那一栏的中括号是啥意思,是一定范围内的随机数吗,如果是的话最大值取得到吗?


                      IP属地:澳大利亚11楼2024-02-05 21:44
                      收起回复
                        说到动画,我刚刚整理文件,发现我三四年前整过一个读取reanim文件的Python脚本。
                        链接: https://pan.baidu.com/s/1we2sBtLS55tEwGbzIJVYXg?pwd=u8m9 提取码: u8m9
                        总之这玩意能读取reanim文件并拆解出各种字段。不过各字段有什么意义我就不知道了


                        IP属地:美国12楼2024-02-05 22:16
                        收起回复
                          支持小氦


                          IP属地:湖南来自iPhone客户端13楼2024-02-05 22:55
                          回复
                            前排膜(


                            IP属地:安徽来自Android客户端14楼2024-02-05 23:15
                            回复
                              能否同时存在多名正常活动的僵王?


                              IP属地:上海来自iPhone客户端15楼2024-02-06 00:51
                              收起回复