修复撑杆跳被同一行的寒冰菇冻结后丢失杆的bug

This commit is contained in:
星外之神 2022-05-15 13:17:45 +08:00
parent 6f6594db9c
commit 25bf28e4f4

View File

@ -1072,23 +1072,47 @@ class Level(tool.State):
if zombie.canSwim and (not zombie.swimming): if zombie.canSwim and (not zombie.swimming):
continue continue
# 以下代码为了实现各个功能,极其凌乱,尚未优化性能 # 以下代码为了实现各个功能,较为凌乱
attackableCommonPlants = [] attackableCommonPlants = []
attackableBackupPlant = [] attackableBackupPlant = []
# 利用更加精细的循环判断啃咬优先顺序 # 利用更加精细的循环判断啃咬优先顺序
for plant in self.plant_groups[i]: for plant in self.plant_groups[i]:
if collided_func(plant, zombie): if collided_func(plant, zombie):
if plant.name in {"南瓜头(未实现)"}: # 优先攻击南瓜头
if plant.name == "南瓜头(未实现)":
targetPlant = plant targetPlant = plant
break break
# 衬底植物情形
elif plant.name in {c.LILYPAD, "花盆(未实现)"}: elif plant.name in {c.LILYPAD, "花盆(未实现)"}:
attackableBackupPlant.append(plant) attackableBackupPlant.append(plant)
# 注意要剔除掉两个“假植物”,以及不能被啃的地刺 # 一般植物情形
elif plant.name == c.SQUASH: # 同时也忽略了不可啃食对象
# 跳起后不得被啃食 elif plant.name not in {# 不可啃食对象
# 非植物对象
c.HOLE, c.ICE_FROZEN_PLOT,
c.GRAVE,
# 对一般僵尸无条件不可啃食植物:地刺
c.SPIKEWEED,
# 对一般僵尸有条件不可啃食植物:跳起的倭瓜、释放效果后的爆炸类植物
# 这类在后面还需要判断
c.SQUASH, c.ICESHROOM,
c.REDWALLNUTBOWLING, c.CHERRYBOMB,
c.JALAPENO, c.DOOMSHROOM,
c.POTATOMINE
}:
attackableCommonPlants.append(plant)
# 在某些状态下忽略啃食碰撞但某些状况下不能忽略的情形
elif plant.name in {# 注意爆炸坚果的触发也是啃食类碰撞,因此这里不能省略
c.SQUASH, c.ICESHROOM,
c.REDWALLNUTBOWLING, c.CHERRYBOMB,
c.JALAPENO, c.DOOMSHROOM,
c.POTATOMINE,
}:
if plant.name == c.SQUASH:
if not plant.squashing: if not plant.squashing:
attackableCommonPlants.append(plant) attackableCommonPlants.append(plant)
elif plant.name not in {c.HOLE, c.ICE_FROZEN_PLOT, c.GRAVE, c.SPIKEWEED}: else:
if not plant.start_boom:
attackableCommonPlants.append(plant) attackableCommonPlants.append(plant)
else: else:
if attackableCommonPlants: if attackableCommonPlants: