植物大战僵尸吧 关注:341,556贴子:3,979,483
  • 21回复贴,共1

【火星向】分析冒险6-49为什么有豌豆射手僵尸

只看楼主收藏回复

一楼喂度,求此贴不被吞


回复
1楼2019-05-17 20:41
    前言:本贴中结论均是通过反汇编读Mac版PvZ的代码得到,对Windows版也适用,但其他版本中不保证正确
    分析可能有误,欢迎指出


    回复
    2楼2019-05-17 20:42
      如果用修改器跳到冒险模式6-49(即冒险第99关),会发现出怪中有豌豆射手僵尸,而其他关却没有。接下来分析原因。


      回复
      3楼2019-05-17 20:43
        首先,PvZ每一关的出怪分以下两步完成:
        (1)根据当前关卡(EL中还有选卡次数和出怪种子)确定出怪种类;
        (2)确定总波数,并根据出怪种类填充每一波的出怪列表。
        而查看游戏内存可以发现,冒险6-49中的出怪种类中并不包含豌豆射手僵尸,因此问题必定出在第(2)步中。


        回复
        4楼2019-05-17 20:43
          众所周知,冒险模式中除x-5和x-10外每两关出一种新僵尸,且每种僵尸首次出现时数量较少,但至少出现两只(一周目通常是第一旗后和关末)。
          游戏中所有33种僵尸均有一个地址存放其相关属性,其中包含这种僵尸在冒险中首次出现的关卡(Windows英文1.0版中为[0x69DA8C]+i*0x1C,i为僵尸编号)。
          查看填充出怪列表的函数可以发现,游戏首先会寻找编号最小的首次在这一关卡出现的僵尸(找不到则返回-1),这里称其为“特殊僵尸”。
          填充列表时,如果当前所在波为总波数的一半加一(若“特殊僵尸”为矿工或气球则为第7波)或者最后一波,就会将一只“特殊僵尸”添加入列表。问题在于,此时游戏并没有检查“特殊僵尸”是否在本关的出怪种类中。而所有植物僵尸首次出现关卡的值均为99,因此在冒险6-49,其中编号最小的豌豆射手僵尸就会刷出,且只有两只。


          回复
          5楼2019-05-17 20:43
            因此,冒险6-49会出现豌豆射手僵尸只是当初宝开的一个疏漏(虽然正常情况下没有影响)。这个bug只会在6-49这一关出现。


            注:1.“特殊僵尸”的独特出怪方式有其意义所在。由于普通的出怪方式随机性很强,强制出现两只“特殊僵尸”可以保证玩家在冒险中见到新僵尸。
            2.若“特殊僵尸”为雪人僵尸,游戏还会检查[0x6A9EC0]+0x88C是否为0,貌似会使4-10杀死雪人后重来时不出现雪人...
            3.之所以说是“火星向”,因为这个现象好像早就有人发现了,原因也很容易猜到...


            收起回复
            6楼2019-05-17 20:44
              综上,全贴完


              回复
              7楼2019-05-17 20:45
                一小时惨案


                回复
                来自Android客户端8楼2019-05-17 21:45


                  回复
                  来自Android客户端9楼2019-05-17 22:24

                    4-10杀死雪人后关卡结束前重开的话雪人不会再出来好像有人讲过原理(现在考证不了),6-49的豌豆射手僵尸的分析以前倒是没见


                    回复
                    10楼2019-05-17 22:52


                      回复
                      来自Android客户端11楼2019-05-17 22:54
                        技术贴,顶顶


                        回复
                        来自Android客户端12楼2019-05-17 23:17
                          顶顶


                          回复
                          来自Android客户端14楼2019-05-18 01:23
                            🐮🍺


                            回复
                            来自Android客户端15楼2019-05-18 01:56


                              回复
                              来自Android客户端16楼2019-05-18 20:21
                                涨姿势了,感谢科普


                                回复
                                来自Android客户端17楼2019-05-18 22:13


                                  回复
                                  来自Android客户端18楼2019-05-18 22:14
                                    orz


                                    回复
                                    来自手机贴吧19楼2019-06-09 16:54