经OP鉴定,本词条内容清晰,排版优美,是值得参考的优秀范例。
本条目部分或全部内容搬运自外部资源。
遵守CC BY-SA 4.0协议,部分内容可能有所改动。
以下内容涉及较多精确数据,除非确信某处有误,否则请勿修改。
精确数据
本条目收录了由高精度测量或反汇编得到的精确游戏内时间、空间数据,包括但不限于植物、僵尸、子弹、场地等的机制与特性。
基础说明
数据体系
本条目使用PVZ圈最常用的数据体系,即:
- 植物/僵尸坐标:以游戏内存值为准,单位px
- 坐标轴原点为1-1格左上角,↓→为正方向
- 绘制判定区域时,需将坐标轴原点平移至可见画面左上角,以大致符合游戏内调试模式的视觉逻辑。若仅进行判定计算,无需考虑这一点
- 时间:以游戏最小时间单位,单位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)
均以此法取整,因此相应的圆不是一般画图软件出来的圆,判定圆图形如右。
以僵尸为例,可从内存中读取下列判定相关信息:
内存地址1) | 意义 |
---|---|
[+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
。
场地
场景边界
- 僵尸可伤:
- 防御域左端
≤800
- 僵尸进家:
- 橄榄、冰车、投篮:
x≤-175
- 撑杆、巨人:
x≤-150
- 舞王、伴舞、潜水:
x≤-130
- 其它:
x≤-100
植僵坐标
场合 | 行号 | 僵尸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(列) | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
1(行) | 40,170 | 120,150 | 200,130 | 280,110 | 360,90 | 440,70 | 520,70 | 600,70 | 680,70 |
2 | 40,255 | 120,235 | 200,215 | 280,195 | 360,175 | 440,155 | 520,155 | 600,155 | 680,155 |
3 | 40,340 | 120,320 | 200,300 | 280,280 | 360,260 | 440,240 | 520,240 | 600,240 | 680,240 |
4 | 40,425 | 120,405 | 200,385 | 280,365 | 360,345 | 440,325 | 520,325 | 600,325 | 680,325 |
5 | 40,510 | 120,490 | 200,470 | 280,450 | 360,430 | 440,410 | 520,410 | 600,410 | 680,410 |
植物概览
坐标
植物 | x偏移 | y偏移 |
---|---|---|
小喷菇/海蘑菇 | -5~+4 | -3~+2 |
阳光菇 | -5~+4 | -5~+4 |
攻击判定
伸与缩
伸:指“延伸”,例如“左伸X”代表左限向左延伸X。缩:指“收缩”,例如“右缩X”代表右限向左收缩X。
植物 | 触发 | 触发特判 | 命中 | 命中特判 |
---|---|---|---|---|
樱桃炸弹 | 圆心(x+40,y+40) ,半径115 | |||
土豆地雷 | x~+55 | 对正在啃的左右各伸30 对所有僵尸 左缩40*N ,N为编号小于等于该僵尸的跳后撑杆数 | 圆心(x+20,y+40) ,半径60 | |
大嘴花 | x+80~+120 | 对正在啃的左右各伸60 对所有僵尸 左缩20*N ,N为编号小于等于该僵尸的反向矿工数 | 范围内编号最小的僵尸 | |
毁灭菇 | 圆心(x+40,y+40) ,半径250 | |||
窝瓜 | x+20~+135 | 对正在啃的右伸40 对跳后撑杆、海豚、橄榄、小鬼 左伸60 对反向矿、雪人 左伸70 ,正在啃再左伸40 窝瓜x-118≤奔跑撑杆x≤窝瓜x-17 时触发窝瓜 | 压区跨度43 | 对橄榄左右各伸20 |
缠绕海草 | x~+80 | 范围内编号最小的僵尸 | ||
普通植物向右 | x+60 | (取整后)坐标相同取小编号,否则取左坐标 | ||
裂荚射手向左 | x+16 | |||
杨桃向左 | x+40 (判定僵尸防御域右界) | |||
反向双发 | x | |||
火炬树桩 | 右向非三线豌豆x-20 过火;三线中间豌豆 x-22 过火;左向豌豆 x+45 过火;三线上下豌豆 x-22 过火;过火前后子弹坐标无变化(上面数据均在静态环境 下测定,豌豆植物摇头以及子弹以3.33为最小单位 位移会使过火实际为一个范围) | 豌豆、冰豆命中x+25~+80 火豆命中 x+40~+70 | 火炬在豌豆右列时,豌豆与火炬距离(坐标差)小于56 时在过火前将不命中僵尸(卡火炬“特性”的由来);火炬在同列或者左列时,火炬编号大则优先过火,豌豆编号大则优先命中僵尸。 |
|
小喷菇 | x+60~+290 | x+40~+323 | ||
大喷菇 | x+60~+400 | x+61~+399 | ||
胆小菇害怕 | 圆心(x,y+20) ,半径120 | |||
海蘑菇 | 同上 | x+45~+328 | ||
磁力菇 | 圆心(x,y+20) ,半径270 | 对正在啃食的半径320 2) | ||
忧郁菇 | x-80~+160 | x-79~+159 | ||
地刺(王) | x+20~+50 | x+21~+49 | ||
玉米加农炮 | 圆心为爆炸中心(见下文),半径115 |
命中范围
紫色竖线及右侧是触发区域,豌豆类的红色区域是必定击中范围,黄色区域是可能击中范围(越左击中可能越小),三线射手对三行的击中范围相同,仙人掌的黄色区域是飞行气球的击中范围。 3)
紫色竖线是触发范围边界,红色竖线是击中范围边界,大喷菇的击中范围是触发范围左右各缩1。 如果小喷菇和海蘑菇的横坐标有偏移,触发范围和击中范围也会随着偏移。
玉米投手左侧的黄色区域表示黄油能击中、玉米粒不能击中。
投掷类子弹
子弹初始速度
投手植物在发出子弹时,再查找范围内最近的僵尸,来确定子弹的初始速度,飞行路径在发出时就确定了。4)
- 水平方向初始速度:
( 僵尸防御左边界横坐标 - 9 - 僵尸速度参数5) * 50 - 子弹初始横坐标 ) / 120
- 竖直方向初始速度:
-7 + ( 僵尸防御上边界纵坐标 - 子弹初始纵坐标 ) / 120
其中,僵尸边界坐标只取整数部分,僵尸的“速度参数”是僵尸内存[+34]
数据。如果僵尸被寒冰菇冻结或者被黄油定身,计算时去掉“速度参数”部分。如果僵尸只是被减速或者在啃食,计算方法不变。
如果子弹发出时,范围内没有僵尸:
- 水平初速 =
( 705 - 子弹初始横坐标 ) / 120
- 竖直初速 =
-7
水平初速下限是1/3
,如果水平初速的计算结果小于1/3
,水平初速设为1/3
。
在平地场合,投手子弹的纵坐标不变,竖直速度影响的是高度,高度向上为负,向下为正。
高度>-30时
,有僵尸就击中;如果没有僵尸,高度>80
时拍地。
飞行用时
防御判定
攻击种类 | 植物种类 | 判定范围 |
---|---|---|
啃碾砸 | 普通植物 | x+30~+50 |
高坚果 | x+30~+70 |
|
南瓜 | x+20~+80 |
|
玉米加农炮(炮尾) | x+20~+120 |
|
玉米加农炮(炮头) | x-60~+40 |
|
小丑爆炸 | 所有 | x左右各伸20, y=0~+80 |
攻击机制
植物攻击间隔准确数据:6)
- 大部分植物攻击间隔是1.36s~1.50s
- 投掷类植物攻击间隔是2.86s~3.00s
- 忧郁菇的攻击间隔是1.86s~2.00s
- 地刺和地刺王的攻击间隔是1.01s
- 僵尸进入大嘴花的触发范围后,下一厘秒开咬(因为同一厘秒内先计算范围内有没有僵尸,后计算僵尸的运动),再延迟0.70秒咬中,整个咬动作1.05秒,所以咬间隔1.06秒。消化40.00秒,咽2.34秒,所以吞间隔43.40秒
命中延迟:7)
植物 | 命中延迟(cs) |
---|---|
豌豆射手、寒冰射手、仙人掌、裂荚射手(右向) | 34 |
双发射手、裂荚射手(左向)、反向双发射手 | 25、50 |
小喷菇、海蘑菇 | 28 |
大喷菇 | 49 |
胆小菇 | 25 |
地刺 | 25 |
杨桃 | 39 |
卷心菜投手 | 31 |
玉米投手 | 29 |
西瓜投手、冰瓜 | 35 |
机枪射手 | 32、49、65、82 |
忧郁菇 | 74、102、130、158 |
猫尾草 | 31、81 |
地刺王 | 30、68 |
子弹类的击中判定:
- 击中行是当前所在行,击中的横向范围是上一厘秒的范围,可以理解为先改变纵坐标,确定所在行,根据横坐标伤害僵尸,再改变横坐标。
- 豌豆(包括左向)击中范围左15像素,右40像素,共56像素;
- 孢子、星星、卷心菜、玉米粒、黄油 击中右40像素,共41像素;
- 刺击中左25像素,右40像素,共66像素;
- 西瓜、冰瓜的击中范围和溅射范围都是右20像素至右80像素,共61像素;溅射伤害值是 574/溅射僵尸数量,再取整数部分,大于26伤害26,小于1伤害1。
大喷菇和忧郁菇都是对范围内僵尸同时伤害,发出的孢子只是动画效果。
如图,绿色加号中心是豌豆当前坐标点,红色加号中心是豌豆上一厘秒坐标点,红色矩形是当前伤害范围,绿色矩形是下一厘秒伤害范围。
豌豆射手刚种下时,内存[+58]
是范围在0~150的一个随机数,每厘秒减一,减到0时,重置为136~150中的一个随机数,如果触发范围内有僵尸,把内存[+90]
值设为35,每厘秒减1,在减到1的那一厘秒,先判断这个值等于2发出豌豆,再把值减到1。
如图,白色矩形是所在格范围,绿色加号中心是植物坐标点,绿色矩形是受小丑炸的判定范围,也是调试模式显示的范围,蓝色矩形是受啃碾砸的判定范围,橙色是触发范围。
豌豆射手发出豌豆的初始点很可能与头部晃动有关,图上的豌豆射手嘴上方的红线是发出豌豆的初始坐标点,有20个点。因为豌豆初始点有波动,击中范围也有波动,浅紫色是必定击中范围,黄色矩形是可能击中范围,越往左击中可能越小。(击中范围上下边界随便画的,因为已经画过了当前行的上下边界)
红色字表示直接伤害。子弹初始点是相对于植物坐标基点的偏移,未标xy的是x偏移,因为y偏移不影响击中范围,只影响显示位置。
香蒲
飞行速度
直线类子弹的飞行速度是每厘秒3.33像素,这个3.33只有两位小数,不是10/3。
星星的斜前方向与水平方向成30度角,横坐标每厘秒加2.883865,纵坐标每厘秒减或加1.665。
香蒲的刺飞行速度是每厘秒2像素。
同一厘秒的计算顺序
同一厘秒内的执行顺序是:发出子弹或范围伤害、植物触发、僵尸移动、子弹伤害。
僵尸进入地刺(王)的触发范围后,下一厘秒地刺(王)触发。倒计时到0后,下一厘秒再变为100,所以地刺(王)的攻击间隔是1.01s。
子弹发出的同一厘秒,就会移动,存在时间为1,击中初始范围(移动前的范围)。
子弹在内存中的坐标是以界面左上角为起点的。
仙人掌
地面状态的仙人掌对气球是实时检测的,气球进入范围的下一厘秒,仙人掌开始伸长,伸长过程中[+58]
正常倒计时,到0时不改[+90]
,伸长过程1.25s,伸长结束时,[+58]
重置,[+90]=23
,当[+90]=1
时,发出尖刺,x偏移+53
。发刺动作结束时,如果范围内没有飞行的气球,仙人掌开始缩短,持续1.09s,过程中不触发([+58]
到0时不改[+90]
)。
仙人掌打气球经常是这样的:第2发刺是空中的,到达时气球僵尸已落地,打不中,下一个倒计时结束时仙人掌正在缩短,不发刺。击中气球与本体的间隔超过了4秒。
晃动间隔
不同植物晃动时间不同,同一个植物晃动时间固定,状态改变可能会改变晃动时间。晃动时间指完成整个动作的时间,例如从最左到最右再到最左10)。
以下是晃动时间统计(单位:秒),数字中小数部分有四五位的是循环小数。
植物 | 最小晃动间隔 | 最大晃动间隔 | 备注 |
---|---|---|---|
豌豆射手、寒冰射手、双发射手、三线射手 裂荚射手、金盏花、机枪射手 | 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.211) | 睡觉时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.312) | 转一圈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 |
眨眼间隔
植物 | 眨眼间隔13) |
---|---|
坚果、高坚果、爆炸坚果、巨大坚果 | 1000~1999 |
其余会眨眼植物 | 400~799 |
植物详解
向日葵
向日葵首次生产阳光的时间是3~12.5秒,在这个范围内概率均匀分布。14)
阳光菇生产阳光的时间相同,向日葵升级为双子向日葵生产阳光时间重置为3~12.5秒。
金盏花首次生产的时间是0~25秒,范围内概率均匀。
修改器v1.8.7种出的向日葵首次生产阳光的时间是0~12秒,偶尔超出范围,小于2秒和大于10秒的概率偏小。
磁力菇
- 正常情况下,磁力菇作用范围为半径270像素,但是对于正在啃食的僵尸,作用范围半径会增大到320像素15)
玉米加农炮
- “准星”即红叉的中心,单位为整数像素,除以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
- 闪烁亮度由游戏计时除以75的余数决定,余数是0和1时最亮,余数是38时最暗16)
僵尸概览
坐标
攻防判定
攻击范围纵坐标与防御范围的相同,且没有实际作用,所以不列出。19)
灰色表示与普通僵尸相同,浅红色表示与橄榄小鬼等僵尸相同。
订正:
- 表中跳跳防御域y仅适用于跳跃跳跳,行走跳跳防御域y为
+17~+132
.
飞跃行为
僵尸 | 落地时坐标 | 备注 |
---|---|---|
撑杆 | 目标植物x-70 | |
海豚 | 起跳时自身x-150 | |
跳跳 | 下次到达最低点时位于目标植物x-60 | 以速度实现,从而受减速影响 |
濒死减血
僵尸血量小于临界点时:
- 如果僵尸本体血量上限小于500,每cs有20%概率减少1点血量,每秒大约减少2020)
- 如果僵尸本体血量上限大于等于500,每cs有60%概率减少1点血量,每秒大约减少60
僵尸详解
巨人坐标与小鬼落点坐标的对应关系
图表中的横轴表示巨人扔小鬼时巨人的横坐标,纵轴表示小鬼落点横坐标。绿色表示平地落点,红色表示屋顶落点。21)
僵尸水族馆中的潜水僵尸
迷你游戏的“僵尸水族馆”关卡中,潜水僵尸初始生命值是200,生命值每秒减10,生命值一定是10的整数倍。22)
生命值小于100(小于等于90)颜色变化(饥饿状态),生命值小于等于100时可以吃脑子,吃脑子后生命值增加200,生命值最多是300。
植僵互动
最早地刺扎车
9列全扎 | 8列全扎 | 7列全扎 | |
---|---|---|---|
冰车 | 292 | 622 | 1014 |
篮球 | 428 | - | - |
初次攻击分布
一个放置充分长时间的发射子弹植物,面对一个早已存在于场上的僵尸,于任何一个时间点,距离其下一次触发子弹发射倒计时的时间点(不包含当前时间点)的时长x,服从一个固定的分布律。该分布律只与植物自身的攻击间隔有关,也被称为初次攻击分布。
该分布常常被误认为 [1,最大攻击间隔]
的均匀分布。
射击类植物(攻击间隔1.36s~1.50s)的初次攻击分布:
$$P\{X=x\}=\begin{cases}\frac{1}{143}&,1\le x\le 136\\ \frac{151-x}{2145}&,137\le x\le 150\end{cases}$$
以射击类植物为例,有时候初次攻击分布表述为“于0cs放置的僵尸最早触发子弹发射倒计时的时长(2cs~151cs)”对应的概率分布,在这个表述下原分布横坐标1~150改为2~151。
有时候初次攻击分布表述为“距离其下一次触发子弹发射倒计时的时间点(包含当前时间点)的时长(0cs~149cs)”对应的概率分布,在这个表述下原分布横坐标1~150改为0~149。
投掷类植物(攻击间隔2.86s~3.00s)的初次攻击分布:
$$P\{X=x\}=\begin{cases}\frac{1}{293}&,1\le x\le 286\\ \frac{301-x}{4395}&,287\le x\le 300\end{cases}$$
忧郁菇(攻击间隔1.86s~2.00s)的初次攻击分布:
$$P\{X=x\}=\begin{cases}\frac{1}{193}&,1\le x\le 186\\ \frac{201-x}{2895}&,187\le x\le 200\end{cases}$$
蹦极偷曾概率
基础数据
忧郁菇相关:23)
- 忧郁菇攻击间隔186cs~200cs,15种情况概率相等,第一发击中延迟74cs,二三四发击中间隔28cs
蹦极相关:
- 蹦极僵尸停留300cs,抓取63cs
实测现象:
- 忧郁菇触发与蹦极僵尸落下在同一厘秒,忧郁菇不触发
- 忧郁菇击中与蹦极僵尸开始抓取在同一厘秒,击中有效
- 没被抓的忧郁菇击中与蹦极僵尸离开在同一厘秒,击中有效
寒冰菇对蹦极僵尸的作用:
- 下落状态,不受冰冻,只有减速状态,没有减速效果
- 停留状态,受冰冻,有减速状态,没有减速效果
- 抓取状态,不受冰冻,如果全程减速,抓取持续1.25秒
计算忧郁菇击中次数概率:
仅一个蹦极僵尸的情况
- 没曾被抓,3曾被偷99.8%,4曾被偷77.6%,5曾被偷15%,6曾不被偷;
- 有曾被抓,3曾必被偷,4曾被偷89.9%,5曾被偷27.7%,6曾被偷0.38%。
这只是一个蹦极僵尸的情况,如果有多个蹦极僵尸,以上击中次数概率不适用。
蹦极僵尸初始高度3000~3150,每厘秒减8,减到0时落下。例如初始高度3001,第375cs高度1,第376cs减到0。蹦极僵尸下落用时3.75~3.94秒,先落下的蹦极僵尸可能先触发忧郁菇,先抓取。
双曾冰杀且被抓一曾时的被偷概率
最极限的情况,触发与落地同时,忧郁菇三次触发都间隔2.00秒,寒冰菇冰冻4.00秒。
蹦极在7.00s抓取,忧郁菇第10次击中应该在7.02s,只击中9次。
除了最极限的情况,蹦极僵尸迟0.01s落地,忧郁菇某次触发间隔1.99s,寒冰菇冰冻4.01秒,这5种情况忧郁菇也击中9次,总共6种情况。
没有被抓的忧郁菇最少击中12次,加上寒冰菇的一次伤害,总共22次,没打死蹦极僵尸。
没被抓的忧郁菇击中12次的概率,冰冻4.00秒10.3%、冰冻4.01秒9.8%。
假设寒冰菇冰冻4~6秒均匀分布,冰冻4.00秒概率是1/201。
根据初始攻击分布,触发与蹦极落地同时概率是1/193,蹦极迟0.01s落地相当于蹦极落地前0.01s忧郁菇触发,概率同样是1/193。
被偷概率
1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 + 1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 + 1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 + 1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 + 1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.103 + 1/193 * 1/15 * 1/15 * 1/15 * 1/201 * 0.098
结果大约十亿分之4.7,小到可以忽略不计。
地刺王对巨人的伤害
巨人砸地刺王的条件是巨人的攻击范围与地刺王的防御范围重叠。24)
如图,红色矩形是巨人的攻击范围,绿色矩形是巨人的防御范围,蓝色矩形是地刺王的防御范围,浅紫色矩形是地刺王的触发范围,白色矩形是地刺王的击中范围。
巨人砸地刺王时,地刺王的击中范围与巨人的防御范围没重叠,地刺王不能击中巨人,但是巨人受到20点伤害,同时触发地刺王。
这是某次测试的数据,地刺王在属性倒计时70和32时伤害击中范围内的僵尸,没有伤害巨人。
2列曾的小鬼盲点
仅在2列设曾且不给南瓜搭梯,则会出现如右图所示的小鬼盲点。25)
图中,绿色矩形是小鬼的防御范围,黄色竖线是触发区域边界,红色竖线是击中区域边界,小鬼盲点有3像素,其中左边1像素能构建永动曾。
另外有15像素区域,小鬼在冰瓜的击中范围,但不在冰瓜的触发范围。在这15像素内,冰瓜右侧有僵尸触发冰瓜,冰瓜才能击中小鬼。
寒冰菇取消投掷小鬼
现象
巨人投掷小鬼时,若投掷小鬼的一瞬间受冰,则投掷会被取消,解冻后收手并重新投掷小鬼。该bug也被称作“ICE3”。
巨人扔出小鬼由投掷动画播放进度决定,修改内存数据,测出的现象是26):
- 在扔出小鬼前,把动画进度改到大于0.74,本次投掷动作不扔小鬼;
- 在扔出小鬼后,把动画进度改到小于0.74,巨人再扔出一个小鬼,扔出后再改就再扔,虽然之前扔出小鬼时巨人已经记录自己没小鬼了,但是扔小鬼时不判断有没有小鬼,只看动画进度。
原因分析
因为动画进度不会正好等于0.74,巨人扔出小鬼的判定大约是:投掷动画前一帧进度≤0.74,当前进度>0.74。
右图是某次测试的内存数据,据此推测,同一帧内执行顺序是:寒冰菇生效,僵尸减倒计时,判断动画进度,改变动画进度。
寒冰菇生效那一帧,动画进度符合扔小鬼的条件,因为已冻结,不扔小鬼(可能不判断动画进度),之后的动画进度都不符合扔小鬼的条件了。
推论
同一帧内的执行顺序中,黄油生效相对靠后,所以黄油在扔出小鬼的前一帧生效取消扔小鬼。
巨人砸植物,在动画进度0.64时砸中,也可以被寒冰菇或黄油取消(也被称作“ICE4”)。
投篮僵尸在投篮开始时生成3秒倒计时,动画进度0.545时扔出篮球,动画结束时减少篮球数量,倒计时到0再投且重置倒计时为3秒。所以减速的投篮僵尸的投篮间隔还是3秒,只是投篮动画变慢,延迟扔出篮球。用寒冰菇或黄油取消投篮,篮球数量就真的减少了,因为不管有没有扔出篮球,都在动画结束时减少篮球数量。
各种僵尸啃大蒜伤害值不同
与巨人扔小鬼类似,僵尸啃大蒜结束也由动画进度决定,也能被寒冰菇或黄油取消27)。
- 大部分僵尸在啃食动画进度0.14和0.68时完成啃大蒜,如果在进度0.14时被寒冰菇取消,在进度0.68时完成啃食
- 撑杆为0.38和0.8
- 读报和梯子为0.42
- 雪橇为0.33和0.83
- 小丑为0.53
- 小鬼为0.33和0.79
僵尸啃食伤害值由啃食时间决定,不同种类的僵尸啃食动画播放速度不同,完成进度的时间不同,所以啃食伤害值不同。
潜水僵尸啃大蒜的完成进度与普通僵尸一样,啃食伤害值最多是因为有0.5秒出水过程,出水的同时也在啃植物,出水完成后才播放啃食动画。
计算方式
啃大蒜时间:1+ceil(帧数/帧速*进度*100)啃食伤害:
- 正常 ceil(啃食时间/4)*4
- 减速 ceil(啃食时间/8)*4
普通僵尸啃完大蒜的最后20点生命值后是不换行的。用修改器重叠放置两个大蒜测试,普通僵尸啃完一个大蒜的最后20点生命值后换行,不啃另一个大蒜。如果用撑杆僵尸把一个大蒜啃的只剩8点生命值,再来一个撑杆僵尸,啃掉这8点生命值后,对另一个大蒜只啃掉48点,总共啃56点。28)
对于窝瓜僵尸,大蒜和一般植物没区别,窝瓜僵尸会在死前啃掉植物4点生命值。窝瓜僵尸在啃唤醒的魅惑菇时可能有啃食音效,但魅惑菇生命值不减。当窝瓜僵尸走到某一格正中间时,在这一格种植物,窝瓜僵尸会砸左边的一格,不管左边这一格有没有植物。如果左边这一格是地刺,地刺会被砸扁;如果左边这一格是地刺王,地刺王不会受到伤害。
底线大嘴花吃反向矿的概率
普通僵尸啃食杨桃时受伤分析
时间体系
植物时间
植物 | 行为 | 耗时32) |
---|---|---|
樱桃炸弹/火爆辣椒/(夜间)寒冰菇、毁灭菇 | 放置到生效 | 100 |
土豆地雷 | 放置到破土 | 1500 |
破土到生效 | 106 | |
大嘴花 | 开咬到命中 | 70 |
空开咬间隔 | 107 | |
吃到再次开咬间隔 | 4340 | |
墓碑吞噬者 | 吞碑 | 448~47133) |
寒冰菇 | 冰冻+减速总时长 | 200034) |
冻结水面和云朵 | 300 | |
一次冰冻35) | 400~60036) | |
二次冰冻37) | 300~40038) | |
窝瓜 | 触发到起跳39) | 126 |
触发到命中 | 182 | |
咖啡豆 | 放下到开始唤醒40) | 100 |
放下到完成唤醒 | 19941) | |
玉米炮 | 释放到分离 | 205 |
释放到爆炸(非屋顶水路) | 378 | |
释放到爆炸(非屋顶陆路) | 373~37642) | |
释放到爆炸(屋顶) | 359~392,见上界之风 | |
释放到完成装填 | 3475 | |
模仿者 | 放置到完成模仿 | 32043) |
僵尸时间
僵尸 | 行为 | 耗时45) |
---|---|---|
小丑 | 开盒到爆炸 | 110 |
跳跳 | 一个跳跃周期 | 80 |
矿工 | 开始出土到晕 | 130 |
晕眩 | 350(减速×2) | |
投篮 | 攻击间隔 | 300 |
普僵啃食数据补充
普通僵尸共有四种行走方式46):
- 两手前后摆动
- 两手在前
- 开启dance指令
- 反复开启/关闭dance指令(该方式行走速度最快)
实际游戏中,前两种行走方式出现的概率各为50%。
上面的“僵尸时间表”中,“普僵啃食”数据均对应“两手前后摆动”,右下角“dc快”对应“反复开启/关闭dance指令”。
以下为前三种行走方式啃食数据的补充。
评论
建议补充说明一下火树豌豆bug()