技术:精确数据

这是本词条的历史版本!该页面包含旧版本的快捷文本。
是否自动将快捷文本同步至最新版本?是 


本条目部分或全部内容搬运自外部资源。

遵守CC BY-SA 4.0协议,部分内容可能有所改动。

本条目的部分内容不一定真实或已经过期,仍有待核查。

以下内容涉及较多精确数据,除非确信某处有误,否则请谨慎修改。

精确数据

本条目收录了由高精度测量或反汇编得到的精确游戏内时间、空间数据,包括但不限于植物、僵尸、子弹、场地等的机制与特性。

不要强行认字

本词条的内容不是为初学者设计的。想要学习植物与僵尸的基础知识,请跳转至植物图鉴僵尸图鉴

1)

本条目使用PVZ圈最常用的数据体系,即:

  • 植物/僵尸坐标:以游戏内存值为准,单位px
    • 坐标轴原点为1-1格左上角,↓→为正方向
  • 判定:以游戏内调试模式为准
    • 坐标轴原点为可视区左上角2),↓→为正方向
  • 时间:以游戏最小时间单位,单位cs
  • 战场可见区左端为x=-40,上端为y=-80
  • 前院1-1豌豆射手x=40, y=80
  • 前院1路进家普僵x=-100, y=50
游戏内圆的实际判定范围

内存值中存在16位浮点数,但几乎所有判定计算时都会向零取整(即抹去小数部分)。圆的判定是(Δx)^2+(Δy)^2<=R^2,其中(Δx)(Δy)均以此法取整,因此相应的圆不是一般画图软件出来的圆,判定圆图形如右。

以僵尸为例,可从内存中读取下列判定相关信息:

内存地址3) 意义
[+8C]=36 防御范围横向偏移
[+90]=0 防御范围纵向偏移
[+94]=42 防御范围横向宽度
[+98]=115 防御范围纵向高度
[+9C]=20 攻击范围横向偏移
[+A0]=0 攻击范围纵向偏移
[+A4]=50 攻击范围横向宽度
[+A8]=115 攻击范围纵向高度

左行僵尸的判定范围:

  • 左边界=横坐标+横向偏移,右边界=左边界+横向宽度
  • 上边界=纵坐标+纵向偏移,下边界=上边界+纵向高度

右行僵尸的判定范围:

  • 右边界=横坐标+120-横向偏移
  • 左边界=右边界-横向宽度

例如,x=650,y=135的普通僵尸,防御范围x:686~728,y:135~250,攻击范围x:670~720

4)

  • 伤害区 -50 ~ 800
  • 触车 -20 ~ 28
  • 警戒区 0 ~ 800
  • 屋外区 -21 ~ +
场合行号僵尸y植物y
前院 1 50 80
2 150 180
3 250 280
4 350 380
5 450 480
后院 1 50 80
2 135 165
3 220 250
4 305 335
5 390 420
6 475 505
屋顶 1 40 见下
2 125
3 210
4 295
5 380

屋顶植物:

(x,y)1(列)23456789
1(行)40,170120,150200,130280,110360,90440,70520,70600,70680,70
240,255120,235200,215280,195360,175440,155520,155600,155680,155
340,340120,320200,300280,280360,260440,240520,240600,240680,240
440,425120,405200,385280,365360,345440,325520,325600,325680,325
540,510120,490200,470280,450360,430440,410520,410600,410680,410
前院地形图
后院地形图
屋顶地形图

注:

  • 两种线有重合时,重合段用两者颜色相间的线表示
  • 白线为坐标轴,x轴向右为正,y轴向下为正
  • 紫色和暗品红色为各控制格的边框
  • 绿线为可见区的边界
  • 右红线为伤害区和警戒区的右界——若僵尸防御域都在其右方则无敌且不被当作目标
  • 蓝线为警戒区的左界——若僵尸防御域都在其左方则不被当作目标
  • 黄竖线为碰车区的边界
  • 左红线为屋外区的左界——若僵尸防御域都在其左方则其进屋
  • 黄横线或斜线为僵尸基准轨迹,没有纵向偏移且正常前进的僵尸坐标在其上
  • 绿十字为植物基准点,通常植物坐标在那些位置

5)

植物 x偏移 y偏移
小喷菇/海蘑菇 -5~+4 -3~+2
阳光菇 -5~+4 -5~+4

伸与缩

伸:指“延伸”,例如“左伸X”代表左限向左延伸X。

缩:指“收缩”,例如“右缩X”代表右限向左收缩X。

植物 触发 触发特判 命中 命中特判
樱桃炸弹 圆心(x+40,y+40),半径115
土豆地雷 x~+55 对正在啃的左右各伸30
对跳后撑杆左缩40*(1+N),N为比该撑杆编号小的跳后撑杆数
圆心(x+20,y+40),半径60
大嘴花 x+80~+120 对正在啃的左右各伸60
对反向矿左缩20
范围内编号最小的僵尸
窝瓜 x+20~+135 对正在啃的右伸40
对跳后撑杆、海豚、橄榄、小鬼左伸60
对反向矿、雪人左伸70,正在啃再左伸40
窝瓜x-118≤奔跑撑杆x≤窝瓜x-17时触发窝瓜
压区跨度43 对橄榄左右各伸20
缠绕海草 x~+80 范围内编号最小的僵尸
普通植物向右 x+60 (取整后)坐标相同取小编号,否则取左坐标
裂荚射手向左 x+16
杨桃向左 x-3
反向双发 x
小喷菇 x+60~+290 x+40~+323
海蘑菇 同上 x+45~+328
大喷菇 x+60~+400 x+61~+399
忧郁蘑菇 x-80~+160 x-79~+159
地刺(王) x+20~+50 x+21~+49
胆小菇害怕 圆心(x,y+20),半径120
磁力菇 圆心(x,y+20),半径270 对正在啃食的半径3206)
玉米加农炮 圆心为爆炸中心(见下文),半径115

命中范围

直线攻击类植物的命中范围

紫色竖线及右侧是触发区域,豌豆类的红色区域是必定击中范围,黄色区域是可能击中范围(越左击中可能越小),三线射手对三行的击中范围相同,仙人掌的黄色区域是飞行气球的击中范围。7)

短程攻击类植物的命中范围

紫色竖线是触发范围边界,红色竖线是击中范围边界,大喷菇的击中范围是触发范围左右各缩1。 如果小喷菇和海蘑菇的横坐标有偏移,触发范围和击中范围也会随着偏移。

投掷攻击类植物的命中范围

玉米投手左侧的黄色区域表示黄油能击中、玉米粒不能击中。

攻击种类 植物种类 判定范围
啃碾砸 普通植物 x+30~+50
高坚果 x+30~+70
南瓜 x+20~+80
玉米加农炮(炮尾) x+20~+120
玉米加农炮(炮头) x-60~+40
小丑爆炸 所有 x左右各伸20, y=0~+80

不同植物晃动时间不同,同一个植物晃动时间固定,状态改变可能会改变晃动时间。晃动时间指完成整个动作的时间,例如从最左到最右再到最左8)

以下是晃动时间统计(单位:秒),数字中小数部分有四五位的是循环小数。

植物 最小晃动间隔 最大晃动间隔 备注
豌豆射手、寒冰射手、双发射手、三线射手
裂荚射手、金盏花、机枪射手
1.25 1.6667
向日葵、毁灭菇、双子向日葵 1.6667 2.5
樱桃炸弹 0.9333 1.4
坚果、高坚果 1.13333 1.7 被啃后重置
土豆地雷 0.73333 0.91667
大嘴花 1.6667 2.5 消化中晃动1.06667;吞后固定2.08333
小喷菇、大喷菇、杨桃 1.1333 1.7 攻击后固定1.41667
阳光菇 0.8 1.29) 睡觉时0.66667~1;长大后重置为0.8~1
墓碑吞噬者(一阶段) 不晃动 吞噬共两个阶段,一阶段持续0.47~0.70
墓碑吞噬者(二阶段) 2.3333 2.3333 吞噬分两个阶段,二阶段持续4
魅惑菇、路灯花 1.3333 2
胆小菇 1.0667 1.6 攻击后固定1.3333秒;害怕时1.1秒;僵尸离开再重置为1.0667~1.6
寒冰菇 1.13333 1.7
荷叶 不晃动 随水面浮动,水面浮动周期2
窝瓜 1.2667 1.9
缠绕海草 1.4667 2.2
火爆辣椒 0.86667 1.3
地刺 1.4 2.1 攻击后重置
火炬树桩、南瓜 1.4 2.1
海蘑菇 1.6667 2.5 攻击后固定2.08333
仙人掌 1 1.5 攻击后固定1.25
三叶草 3.3 3.310) 转一圈0.5
磁力菇 1.9333 2.9 睡觉时1.2~1.8;吸附铁器后重置
卷心菜投手、西瓜投手、冰瓜 2.0667 3.1 攻击后固定2.58333
花盆 0.86667 1.3 上面种植植物后不晃动;植物消失后重置
玉米投手、忧郁菇、香蒲 1.2667 1.9 攻击后固定1.58333
咖啡豆 0.6 0.9
大蒜 1 1.5
叶子保护伞 1 1.5 弹起后固定0.6818
吸金磁 3.1333 4.7 吸附钱币后固定3.35714
地刺王 1 1.5 攻击或被砸被碾后重置
玉米加农炮 1.2667 1.9 炮弹装填完成后固定1.58333
植物 眨眼间隔11)
坚果、高坚果、爆炸坚果、巨大坚果 1000~1999
其余会眨眼植物 400~799

12)

未啃食时x<389吸铁桶,啃食时x<447吸铁桶
  • 正常情况下,磁力菇作用范围为半径270像素,但是对于正在啃食的僵尸,作用范围半径会增大到320像素13)
  • “准星”即红叉的中心,单位为整数像素,除以80后得到列数
    • 例如准星x=721的炮,等价于炸9.0125列的炮,等价于AvZ::pao_operator.pao(x, 9.0125)
  • 爆炸中心”即实际爆炸的圆心
    • 非天台场景爆炸中心x=准星x-7, 爆炸中心y=准星同行植物y+40
  • 对于r行c列的梯子南瓜,梯子被炮炸飞的条件是r-1≤准星行数≤r+1,且80*c-113≤准星x≤80*c+126

14)

僵尸 特殊y 纵向偏移h15)
空中的气球 -30 +25
刚召出的伴舞 -200
150cs内匀增至016)
鸭子 -40
水中的潜水 +10
跳跳 +16
跳跃中再+9~+49
雪橇推行 -10
雪橇乘坐中 +18

攻击范围纵坐标与防御范围的相同,且没有实际作用,所以不列出。17)

灰色表示与普通僵尸相同,浅红色表示与橄榄小鬼等僵尸相同。

僵尸攻防判定偏移与尺寸

18)

  • 如果僵尸本体血量上限小于500,每cs有20%概率减少1点血量,每秒大约减少20
  • 如果僵尸本体血量上限大于等于500,每cs有60%概率减少1点血量,每秒大约减少60

迷你游戏的“僵尸水族馆”关卡中,潜水僵尸初始生命值是200,生命值每秒减10,生命值一定是10的整数倍。19)

生命值小于100(小于等于90)颜色变化(饥饿状态),生命值小于等于100时可以吃脑子,吃脑子后生命值增加200,生命值最多是300。

部分不搭梯阵型的小鬼盲点

仅在2列设曾且不给南瓜搭梯,则会出现如右图所示的小鬼盲点。20)

图中,绿色矩形是小鬼的防御范围,黄色竖线是触发区域边界,红色竖线是击中区域边界,小鬼盲点有3像素,其中左边1像素能构建永动曾。

另外有15像素区域,小鬼在冰瓜的击中范围,但不在冰瓜的触发范围。在这15像素内,冰瓜右侧有僵尸触发冰瓜,冰瓜才能击中小鬼。

21)

出怪类型指本次选卡准许生成的僵尸种类。

准许

即使准许生成某僵尸,也不代表该僵尸一定会出现。例如,即便出怪类型中含有蹦极僵尸,也可能不生成蹦极,取决于生成时的随机结果。

另有一部分僵尸无需准许亦能生成,如固定出现的旗帜僵尸、小概率随机出现的雪人僵尸。

出怪类型位于[[[6a9ec0]+768]+54d4]开始的连续33个bool类型的地址,true代表准许,false代表不准许。

出怪类型的决定方式如下22)

  1. 设定要出普僵
  2. 产生一个0~4的伪随机整数(后文详解),若等于0则设定要出读报,否则设定要出路障23)
  3. 轮数24)<8,则设定剩余出怪类型数为轮数+1,否则设定剩余出怪类型数为9
  4. 产生一个0~33的伪随机整数,若未设定要出此类僵尸且没有禁止出此类僵尸25),则设定要出此类僵尸并进入第5步,否则重复第4步
  5. 若第4步中已设定要出的僵尸类型数等于第3步的剩余出怪类型数,则进入第6步,否则重复第4步
  6. 忽略摇旗、僵博,即强制设为false26)

轮数

轮数即选卡时已完成flag数/2-1

随机数生成器算法为MT19937,种子由以下几个数值相加:

[[[6a9ec0] +82c] +20]              // 用户序号
[[[6a9ec0] +768] +561c]            // 出怪种子
[[[[6a9ec0] +768] +160] +6c] * 65  // 完成选卡次数 * 101
[[6a9ec0] +7f8]                    // [[教程:名词大全#序号-2|游戏模式]]

以下表格列出了不同轮数下,各僵尸出现在出怪类型中的概率,以及出怪类型中僵尸总数27)各取值的概率。28)

轮数=1

路障 读报 其他 2种 3种 4种
前院 82.67% 30.67% 13.33% 0.95% 24.76% 74.29%
后院 82.35% 29.41% 11.76% 0.74% 22.06% 77.21%
屋顶 83.08% 32.31% 15.38% 1.28% 28.21% 70.51%

轮数=2

路障 读报 其他 3种 4种 5种
白昼 83.53% 34.12% 17.65% 2.21% 30.88% 66.91%
黑夜 83.75% 35.00% 18.75% 2.50% 32.50% 65.00%
后院 83.16% 32.63% 15.79% 1.75% 28.07% 70.18%
屋顶 84.00% 36.00% 20.00% 2.86% 34.29% 62.86%

轮数=3

路障 读报 其他 4种 5种 6种
白昼 84.71% 38.82% 23.53% 4.41% 38.24% 57.35%
黑夜 85.00% 40.00% 25.00% 5.00% 40.00% 55.00%
后院 84.21% 36.84% 21.05% 3.51% 35.09% 61.40%
屋顶 85.33% 41.33% 26.67% 5.71% 41.90% 52.38%

轮数=4

路障 读报 其他 5种 6种 7种
白昼 85.88% 43.53% 29.41% 7.35% 44.12% 48.53%
黑夜 86.25% 45.00% 31.25% 8.33% 45.83% 45.83%
后院 85.26% 41.05% 26.32% 5.85% 40.94% 53.22%
屋顶 86.67% 46.67% 33.33% 9.52% 47.62% 42.86%

轮数=5

路障 读报 其他 6种 7种 8种
白昼 86.67% 46.67% 33.33% 9.80% 47.06% 43.14%
黑夜 87.06% 48.24% 35.29% 11.03% 48.53% 40.44%
后院 86.00% 44.00% 30.00% 7.89% 44.21% 47.89%
屋顶 87.50% 50.00% 37.50% 12.50% 50.00% 37.50%

轮数=6

路障 读报 其他 7种 8种 9种
白昼 87.78% 51.11% 38.89% 13.73% 50.33% 35.95%
黑夜 88.24% 52.94% 41.18% 15.44% 51.47% 33.09%
后院 87.00% 48.00% 35.00% 11.05% 47.89% 41.05%
屋顶 88.75% 55.00% 43.75% 17.50% 52.50% 30.00%

轮数=7

路障 读报 其他 8种 9种 10种
白昼 88.89% 55.56% 44.44% 18.30% 52.29% 29.41%
黑夜 89.41% 57.65% 47.06% 20.59% 52.94% 26.47%
后院 88.00% 52.00% 40.00% 14.74% 50.53% 34.74%
屋顶 90.00% 60.00% 50.00% 23.33% 53.33% 23.33%

轮数≥8

路障 读报 其他 9种 10种 11种
白天 90.00% 60.00% 50.00% 23.53% 52.94% 23.53%
黑夜 90.59% 62.35% 52.94% 26.47% 52.94% 20.59%
后院 89.00% 56.00% 45.00% 18.95% 52.11% 28.95%
屋顶 91.25% 65.00% 56.25% 30.00% 52.50% 17.50%

计算公式

设可出怪类型数是a,剩余出怪类型数是b,则:
  • 路障出现概率0.8+0.2*b/a
  • 读报出现概率0.2+0.8*b/a
  • 其他出现概率b/a

僵尸种类数的三种情况概率分别为:

  • b*(b-1)/(a*(a-1))
  • b*(a-b)*2/(a*(a-1))
  • (a-b)*(a-b-1)/(a*(a-1))

六大场地的a值分别为18/17/20/20/16/16,b值在轮数≥8时取值为9。

出怪列表决定了实际生成的僵尸的具体种类与个数,在选卡页面就已经确定。退出重进选卡页面会刷新出怪列表。

完整的出怪列表长度200029),位于[[[6a9ec0]+768]+6b4]开始的连续2000个int_32类型的地址,每50个为1波,总共记录40波。因此,每波至多生成50只僵尸。若出怪列表中留空,则对应波次会生成少于50只。

生存无尽模式中每轮仅20波,故只使用前1000个值。老虎机、宝石迷阵等无限出怪的模式中,第41波起会重复循环第40波的出怪。

每波僵尸刷新时,游戏会严格按照出怪列表预先设定的顺序依次生成对应僵尸。

生存无尽中,出怪列表根据以下规律随机生成:

  • 旗帜波30)固定先出8只普僵和1只旗帜
  • 出完50只红眼后,非旗帜波不再出红眼,立刻生效
    • “50只”包含先前旗帜波次的红眼
    • 该规律也被称作“变速”
  • 每波所出僵尸的级别总和不超过该波级别上限
  • 满足以上条件的情况下,从出怪类型准许生成的僵尸以及雪人中,根据各僵尸权重加权随机得到要生成的僵尸

级别上限

每波级别上限 = int(int((当前波数 + 已完成选卡数 * 每轮总波数) * 0.8) / 2) + 1,旗帜波再* 2.5并向零取整。

各僵尸级别与权重一览

序号 简称 级别 权重 备注
0 普僵 1 4000
1 旗帜 1 0 在旗帜波固定出现,不参与随机过程
2 路障 2 4000
3 撑杆 2 2000
4 铁桶 4 3000
5 读报 2 1000
6 铁门 4 3500
7 橄榄 7 2000
8 舞王 5 1000
9 伴舞 1 0 衍生于舞王
10 鸭子 1 0 实际出现的鸭子僵尸为出现在水路的普僵/路障/铁桶自动转换而来
11 潜水 3 2000
12 冰车 7 2000
13 雪橇 3 2000
14 海豚 3 1500
15 小丑 3 1000
16 气球 2 2000
17 矿工 4 1000
18 跳跳 4 1000
19 雪人 4 1 无需出怪类型准许亦可生成,需已在冒险二周目4-10见到雪人
20 蹦极 3 1000 仅在旗帜波生成
21 梯子 4 1000
22 投篮 5 1500
23 白眼 10 1500
24 小鬼 10 0 衍生于巨人
25 僵博 10 0
26 豌豆 1 4000
27 坚果 4 3000
28 辣椒 3 1000
29 机枪 3 2000
30 窝瓜 3 2000
31 高坚果 4 2000
32 红眼 10 6000

2)
该坐标系最先由不在宝前【补充贴】部分判定范围的计算方法中正式提出,优点在于可以直接通过内存值加减得到判定范围
3)
与僵尸基址的偏移,为16进制数,后同
9)
唤醒的小阳光菇
10)
禅境花园中的三叶草
15)
也称“高度”,纵向偏移越大,僵尸y越小。僵尸的实际y可以理解为:y-h
23)
此处读报和路障中未被选中者,仍有可能在后面的步骤中被选中,因而“读报路障不同出”系谣言
25)
伴舞/鸭子/雪橇/雪人/小鬼、植物僵尸、黑夜的冰车、非后院的潜水/海豚、屋顶的舞王/矿工、轮数<2时的冰车/白眼、轮数<5时的红眼
26)
若均未选中,为常规“11怪”;若选中其一,为“10怪”;若均选中,为“9怪”
27)
普僵与鸭子计一种,不计旗帜(固定生成)、雪人(极小概率随机生存)
30)
w10与w20
双子叶植物, 2024/04/23 17:59

建议补充说明一下火树豌豆bug()

请先登录后发表评论 (・ω・)
  • 最后更改: 23月前
  • OTZzzz 修改