修复坚果保龄球闪退bug

This commit is contained in:
星外之神 2022-08-02 18:19:35 +08:00
parent 8cd22a1140
commit 7240c61765
3 changed files with 12 additions and 8 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1818,6 +1818,7 @@ class PumpkinHead(Plant):
self.changeFrames(self.cracked2_frames) self.changeFrames(self.cracked2_frames)
self.cracked2 = True self.cracked2 = True
class GiantWallNut(Plant): class GiantWallNut(Plant):
def __init__(self, x, y): def __init__(self, x, y):
Plant.__init__(self, x, y, c.GIANTWALLNUT, 1, None) Plant.__init__(self, x, y, c.GIANTWALLNUT, 1, None)
@ -1826,7 +1827,7 @@ class GiantWallNut(Plant):
self.animate_interval = 200 self.animate_interval = 200
self.move_timer = 0 self.move_timer = 0
self.move_interval = 70 self.move_interval = 70
self.vel_x = random.randint(12, 15) self.vel_x = random.randint(15, 18)
def idling(self): def idling(self):
if self.move_timer == 0: if self.move_timer == 0:

View File

@ -1082,13 +1082,14 @@ class Level(tool.State):
# 默认为最右侧的一个植物 # 默认为最右侧的一个植物
target_plant = max(attackable_common_plants, key=lambda i: i.rect.x) target_plant = max(attackable_common_plants, key=lambda i: i.rect.x)
map_x, map_y = self.map.getMapIndex(target_plant.rect.centerx, target_plant.rect.centery) map_x, map_y = self.map.getMapIndex(target_plant.rect.centerx, target_plant.rect.centery)
if c.PUMPKINHEAD in self.map.map[map_y][map_x][c.MAP_PLANT]: if not (map_x >= self.map.width or map_y >= self.map.height):
for actual_target_plant in self.plant_groups[i]: if c.PUMPKINHEAD in self.map.map[map_y][map_x][c.MAP_PLANT]:
# 检测同一格的其他植物 for actual_target_plant in self.plant_groups[i]:
if self.map.getMapIndex(actual_target_plant.rect.centerx, actual_target_plant.rect.bottom) == (map_x, map_y): # 检测同一格的其他植物
if actual_target_plant.name == c.PUMPKINHEAD: if self.map.getMapIndex(actual_target_plant.rect.centerx, actual_target_plant.rect.bottom) == (map_x, map_y):
target_plant = actual_target_plant if actual_target_plant.name == c.PUMPKINHEAD:
break target_plant = actual_target_plant
break
elif attackable_backup_plants: elif attackable_backup_plants:
target_plant = max(attackable_backup_plants, key=lambda i: i.rect.x) target_plant = max(attackable_backup_plants, key=lambda i: i.rect.x)
map_x, map_y = self.map.getMapIndex(target_plant.rect.centerx, target_plant.rect.centery) map_x, map_y = self.map.getMapIndex(target_plant.rect.centerx, target_plant.rect.centery)
@ -1113,6 +1114,7 @@ class Level(tool.State):
if zombie.name in {c.POLE_VAULTING_ZOMBIE} and (not zombie.jumped): if zombie.name in {c.POLE_VAULTING_ZOMBIE} and (not zombie.jumped):
if target_plant.name == c.GIANTWALLNUT: if target_plant.name == c.GIANTWALLNUT:
zombie.health = 0 zombie.health = 0
c.SOUND_BOWLING_IMPACT.play()
elif not zombie.jumping: elif not zombie.jumping:
zombie.jump_map_x, zombie.jump_map_y = min(c.GRID_X_LEN - 1, zombie.prey_map_x), min(self.map_y_len - 1, zombie.prey_map_y) zombie.jump_map_x, zombie.jump_map_y = min(c.GRID_X_LEN - 1, zombie.prey_map_x), min(self.map_y_len - 1, zombie.prey_map_y)
jump_x = target_plant.rect.x - c.GRID_X_SIZE * 0.6 jump_x = target_plant.rect.x - c.GRID_X_SIZE * 0.6
@ -1142,6 +1144,7 @@ class Level(tool.State):
target_plant.setAttack() target_plant.setAttack()
elif target_plant.name == c.GIANTWALLNUT: elif target_plant.name == c.GIANTWALLNUT:
zombie.health = 0 zombie.health = 0
c.SOUND_BOWLING_IMPACT.play()
elif zombie.target_y_change: elif zombie.target_y_change:
# 大蒜作用正在生效的僵尸不进行传递 # 大蒜作用正在生效的僵尸不进行传递
continue continue