两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 |
技术:栈位理论 [2024/02/01 23:37] – 完善蹦极部分 echochrome | 技术:栈位理论 [2025/02/25 08:53] (当前版本) – [植物栈位相关] OTZzzz |
---|
</callout> | </callout> |
===== 前言 ===== | ===== 前言 ===== |
pvz中并<wrap hi>没有真正的栈,有的只是类似栈的结构</wrap>。底层逻辑介绍参见[[攻略:dataarray|DataArray]],以下为叙述方便可能仍用到“栈/栈位”的表述。 | 栈位,也称编号、序号。pvz中并<wrap hi>没有真正的栈,有的只是类似栈的结构</wrap>。底层逻辑介绍参见[[攻略:dataarray|DataArray]],以下为叙述方便可能仍用到“栈/栈位”的表述。 |
| |
栈位显示相关工具和展示视频可见[[https://www.bilibili.com/video/BV1oE41157SY/|PvZ 栈位理论]]。 | 栈位显示相关工具和展示视频可见[[https://www.bilibili.com/video/BV1oE41157SY/|PvZ 栈位理论]]。 |
<wrap hi>此概念仅在蹦极和舞王的相关现象中用到,了解它并不是必要的。</wrap> | <wrap hi>此概念仅在蹦极和舞王的相关现象中用到,了解它并不是必要的。</wrap> |
| |
事实上,游戏通过栈位和序列号共同确定一植物或僵尸(只不过大部分现象仅依赖栈位)。序列号有时也被称为<fc #008080>mRank计数</fc>,但在内存中被称为<fc #008080>mNextKey</fc>。游戏内部存在初值为0的计数器,植物、僵尸、子弹等各有一个,植物/僵尸/子弹/…生成时将被给予计数器当前值,即为序列号,之后对应计数器自增1((简化的表述,实际情况请参阅[[攻略:dataarray|DataArray]]))。 | 事实上,游戏通过栈位和序列号共同确定一植物或僵尸(只不过大部分现象仅依赖栈位)。序列号有时也被称为<fc #008080>mRank计数</fc>,但在内存中被称为<fc #008080>mNextKey</fc>。游戏内部存在初值为0的计数器,植物、僵尸、子弹等各有一个,植物/僵尸/子弹/…生成时将被给予计数器当前值,即为序列号,之后对应计数器自增1。((此段初值与自增为经过简化的表述,实际情况请参阅[[攻略:dataarray|DataArray]])) |
| |
重进游戏时,计数器将被重置为0,这将可能使蹦极抓取植物、舞王区分伴舞过程产生错误。 | 重进关卡时,计数器将被重置为初值,这将可能使蹦极抓取植物、舞王区分伴舞过程产生错误。 |
| |
对于让植物/僵尸拥有特定序列号以达成的操作是否应该归入“栈位理论”范畴,存在些许争议。 | 对于让植物/僵尸拥有特定序列号以达成的操作是否应该归入“栈位理论”范畴,存在些许争议。 |
海豚因植物间栈位高低有可能发生越过高坚果的现象。 | 海豚因植物间栈位高低有可能发生越过高坚果的现象。 |
| |
{{:攻略:230116115446.png?nolink&200}} | {{:攻略:230116115446.png?nolink&100}} |
== 静态(全过程无操作) == | == 静态(全过程无操作) == |
请注意,此现象只发生在下水即跳跃的海豚中(也就是八列有植物)。<wrap lo>经典十炮高坚果带套会被海豚跳可认为是谣传了</wrap> | 请注意,此现象只发生在下水即跳跃的海豚中(也就是八列有植物)。<wrap lo>经典十炮高坚果带套会被海豚跳可认为是谣传了</wrap> |
发生的条件是: | 发生的条件是: |
| |
- 八列有高坚果,是否带套不影响; | * 1、八列有高坚果,是否带套不影响; |
- a.七列有空南瓜(b.或高坚果或高坚果套南瓜); | * 2、a.七列有空南瓜(b.或高坚果或高坚果套南瓜); |
- a.七列空南瓜(b.或高坚果或高坚果套南瓜)栈位低于八列高坚果。 | * 3、a.七列空南瓜(b.或高坚果或高坚果套南瓜)栈位低于八列高坚果。 |
| |
对应的情况是:同时满足1,2.a,3.a,海豚跳过八列,落在七列更左的位置;同时满足1,2.b,3.b,海豚跳过八列,被七列高坚果阻挡而落在七列较右的位置;除此二种皆会被八列高坚果阻拦。 | 对应的情况是:同时满足1,2.a,3.a,海豚跳过八列,落在七列更左的位置;同时满足1,2.b,3.b,海豚跳过八列,被七列高坚果阻挡而落在七列较右的位置;除此二种皆会被八列高坚果阻拦。 |
对于n(1≤n≤7)列高坚果,只需在一小段时间内于n+1列种植一栈位低于<fc #008000>__此高坚果__</fc>的非高坚果植物,那么海豚将会越过高坚果。而这段时间,上界不晚于跳跃后123(124触发碰撞判定),下界约为海豚半个头处在n+1列与n+2列交界时((早于此下界海豚落水后仍会不断啃食高坚果,只是不会因被拦而落在高坚果前面))。 | 对于n(1≤n≤7)列高坚果,只需在一小段时间内于n+1列种植一栈位低于<fc #008000>__此高坚果__</fc>的非高坚果植物,那么海豚将会越过高坚果。而这段时间,上界不晚于跳跃后123(124触发碰撞判定),下界约为海豚半个头处在n+1列与n+2列交界时((早于此下界海豚落水后仍会不断啃食高坚果,只是不会因被拦而落在高坚果前面))。 |
| |
类似地,其实还可以令海豚做出越过n列高坚果(或南瓜)的动作,却被n+1列高坚果阻挡。仅需在海豚做出跳跃动作后、跃后124之前于n+1列迅速种植荷叶与低栈高坚果,海豚就会被拦在n+1列高坚果前。注意,此操作对n列普通植物无法复现。 | 类似地,还可以令海豚做出越过n列高坚果(或南瓜)的动作,却被n+1列高坚果阻挡。仅需在海豚做出跳跃动作后、跃后124之前于n+1列迅速种植荷叶与低栈高坚果,海豚就会被拦在n+1列高坚果前。注意,此操作对n列普通植物无法复现。 |
| |
=== 对植物判定顺序 === | === 对植物判定顺序 === |
| |
=== 蹦极 === | === 蹦极 === |
蹦极依靠栈位和序列号来确定将要偷的植物,若设法将目标植物拥有与蹦极选定的植物相同的栈位和序列号,则目标植物会被偷取。利用此原理可以做到一些神奇的事情:蹦极偷炮、炮后轮悬空、植物下方无花盆荷叶而悬空((悬空植物也可以通过投篮僵尸实现,示例视频www.bilibili.com/video/BV16v411w7Mh))。 <del>用于满足日益发展的审美观</del> | 蹦极依靠栈位和序列号来确定将要偷的植物,若设法将目标植物拥有与蹦极选定的植物相同的栈位和序列号,则目标植物会被偷取。此原理又名栈位偷,尽管这并未完全体现背后的机制。利用此原理可以做到一些神奇的事情:蹦极偷炮、炮后轮悬空、植物下方无花盆荷叶而悬空((悬空植物也可以通过投篮僵尸实现,示例视频www.bilibili.com/video/BV16v411w7Mh))。 <del>用于满足日益发展的审美观</del> |
| |
复现方法: | 复现方法: |
* 4、蹦极手完全收拢(视觉上碰到了植物)后,计划被偷植物将从所种格子消失并且贴图随蹦极上升,此阶段对于被偷的荷叶、花盆也不再能于其上种植植物。 | * 4、蹦极手完全收拢(视觉上碰到了植物)后,计划被偷植物将从所种格子消失并且贴图随蹦极上升,此阶段对于被偷的荷叶、花盆也不再能于其上种植植物。 |
| |
| <callout type="primary" title="解释" icon="true"> |
<callout type="default" title='解释' color="green"> | |
* 步骤1时间内,蹦极未锁定植物序号与序列号,第一次退出重进使得蹦极所在格内种植的第一株植物序列号为0,第二次退出重进为种植下一株0序列号的植物作准备; | * 步骤1时间内,蹦极未锁定植物序号与序列号,第一次退出重进使得蹦极所在格内种植的第一株植物序列号为0,第二次退出重进为种植下一株0序列号的植物作准备; |
* 步骤2所在时间,蹦极锁定了本格植物的序号和序列号(为0),铲除该格植物让序号回归栈顶,则新种植的植物便拥有了被铲除植物的栈位和值为0的序列号,被蹦极误认成被偷植物; | * 步骤2所在时间,蹦极锁定了本格植物的序号和序列号(为0),铲除该格植物让序号回归栈顶,则新种植的植物便拥有了被铲除植物的栈位和值为0的序列号,被蹦极误认成被偷植物; |
一个使炮后轮悬空的实例是[[https://www.bilibili.com/video/BV1Rq4y1N72a|水母十四炮]]。 | 一个使炮后轮悬空的实例是[[https://www.bilibili.com/video/BV1Rq4y1N72a|水母十四炮]]。 |
[{{:技术:抱得玉米归.png?nolink&200|偷炮演示}}][{{:技术:水母14炮.jpg?nolink&273|水母十四炮}}] | [{{:技术:抱得玉米归.png?nolink&200|偷炮演示}}][{{:技术:水母14炮.jpg?nolink&273|水母十四炮}}] |
| |
| == 陆地荷叶/陆地猫 == |
| [{{ :技术:陆地荷叶.png?nolink&100|偷取猫留下荷叶演示}}] |
| |
| 在有水路的地形中,使蹦极选定一株陆地上被套在南瓜中的植物,并用上述方法更换为猫尾草,则蹦极偷取猫后会在南瓜下放置荷叶,则实现了陆地荷叶,在荷叶上种植猫尾草就实现了陆地猫。 |
| |
| 也称作飞贼荷叶skip、蹦极荷叶skip、Bungee Lilypad Skip(BLS)。 |
| |
| 除陆地放荷叶和猫外,利用此特性可以做到: |
| |
| * 陆地或水上无限叠种荷叶; |
| * 给海蘑菇和缠绕海草套南瓜; |
| * 在同一格叠种任意数量荷叶与至多一个海蘑菇/猫; |
| * 在同一格叠种一个荷叶与一个缠绕海草; |
| * 浮空南瓜套; |
| * 荷叶与花盆、地刺、土豆地雷等叠种; |
| * …… |
| |
| <callout type="warning" title="注意" icon="true"> |
| 制造陆地猫的条件不仅仅是蹦极靠栈位和序列号判断植物,它还包含了至少以下几点: |
| * 1、蹦极依靠自身所在格来决定偷猫后补种荷叶的格子,而非猫原来在的格子; |
| * 2、补荷叶的过程不涉及额外的合法性判断; |
| * 3、种猫的过程并没有判断需要水。 |
| </callout> |
| 参考贴:[[http://tieba.baidu.com/p/8961868805|飞贼荷叶skip]],参考视频:[[http://www.bilibili.com/video/av1952695412|原版逆天bug:飞贼荷叶skip]] |
| |
=== Ice3失效 === | === Ice3失效 === |
多个撑杆可以将地雷判定引至足够右的位置使得爆炸不伤僵尸,如[[攻略:解谜模式|IZ]]中常用的四杆引雷。 | 多个撑杆可以将地雷判定引至足够右的位置使得爆炸不伤僵尸,如[[攻略:解谜模式|IZ]]中常用的四杆引雷。 |
| |
单个撑杆也可以触发被南瓜套住的土豆地雷爆炸,这点在[[攻略:萌新向_改版冲关技巧与经验#栈位与判定|改版过关]]中有所应用。 | 单个撑杆也可以触发被南瓜套住的土豆地雷爆炸,这点在[[攻略:改版通略#栈位与判定|改版过关]]中有所应用。 |
| |
关于此bug的演示及解析,参见: | 关于此bug的演示及解析,参见: |