implemented lizard hurt animation

This commit is contained in:
frank 2022-03-10 01:06:53 -05:00
parent 7d1e049614
commit fa360ebb40
1 changed files with 28 additions and 11 deletions

39
NS.py
View File

@ -1727,6 +1727,10 @@ class Chemtrails(Sprite):
for directory in sorted(iglob(join(self.get_resource("littleSlimeGoop"), "[0-9]_*/"))):
self.add_frameset(switch=True)
self.load_from_path(directory, True)
self.add_frameset(name="hurt", switch=True)
self.load_from_path("littleSlimeGoop/Hurt", True)
self.set_frameset(NS.N)
self.register(self.cancel_hurt)
self.life = Life(self)
self.boys = Boys(self)
self.timer = Timer(self)
@ -1739,6 +1743,7 @@ class Chemtrails(Sprite):
self.life.reset()
self.boys.reset()
self.timer.reset()
self.set_frameset(NS.N)
def deactivate(self):
self.active = False
@ -1753,6 +1758,20 @@ class Chemtrails(Sprite):
self.timer.reset()
self.queue_index = 0
def display_hurt(self):
"""
Show hurt animation and trigger it to end after a delay
"""
self.set_frameset("hurt")
self.play(self.cancel_hurt, delay=1000, play_once=True)
def cancel_hurt(self):
"""
Reset to a non-hurt frameset
"""
self.set_frameset(NS.N)
self.orient()
def update(self):
if self.active:
self.orient()
@ -1808,7 +1827,8 @@ class Chemtrails(Sprite):
edge = self.get_game().platform.get_edge_pressed()
dy = -Light.TITLE_OFFSET if self.get_game().title.active else 0
if edge is not None:
self.set_frameset(edge + 1)
if self.get_current_frameset().name != "hurt":
self.set_frameset(edge + 1)
self.unhide()
else:
self.hide()
@ -1816,24 +1836,19 @@ class Chemtrails(Sprite):
self.location.center = ds.get_width() / 2, NS.FRONT + dy - 10
self.orientation = NS.N
elif edge == NS.E:
self.location.center = ds.get_width() / 2 + NS.FRONT_WIDTH / 2 - 85, \
NS.FRONT + NS.LENGTH * NS.STEP - 40 + dy
self.location.center = ds.get_width() / 2 + NS.FRONT_WIDTH / 2 - 85, NS.FRONT + NS.LENGTH * NS.STEP - 40 + dy
self.orientation = NS.E
elif edge == NS.S:
self.location.center = ds.get_width() / 2, \
NS.FRONT + NS.LENGTH - NS.LENGTH * NS.STEP - 65 + dy
self.location.center = ds.get_width() / 2, NS.FRONT + NS.LENGTH - NS.LENGTH * NS.STEP - 65 + dy
self.orientation = NS.S
elif edge == NS.W:
self.location.center = ds.get_width() / 2 - NS.FRONT_WIDTH / 2 + 85, \
NS.FRONT + NS.LENGTH * NS.STEP - 40 + dy
self.location.center = ds.get_width() / 2 - NS.FRONT_WIDTH / 2 + 85, NS.FRONT + NS.LENGTH * NS.STEP - 40 + dy
self.orientation = NS.W
elif edge == NS.NW:
self.location.center = ds.get_width() / 2, \
NS.FRONT + NS.LENGTH * NS.STEP + dy - 45
self.location.center = ds.get_width() / 2, NS.FRONT + NS.LENGTH * NS.STEP + dy - 45
self.orientation = NS.NW
elif edge == NS.NE:
self.location.center = ds.get_width() / 2 - 5, \
NS.FRONT + NS.LENGTH * NS.STEP - 45 + dy
self.location.center = ds.get_width() / 2 - 5, NS.FRONT + NS.LENGTH * NS.STEP - 45 + dy
self.orientation = NS.NE
else:
self.orientation = None
@ -2330,6 +2345,7 @@ class Boss(Animation):
else:
self.level_sprite().set_frameset("normal")
self.play(self.flash_player_damage)
self.get_game().chemtrails.set_frameset("hurt")
self.player_defeated = not win
self.kills += not win
self.play(self.show_end_dialogue, delay=3000, play_once=True)
@ -2813,6 +2829,7 @@ class Sword(Animation):
sprite.hide()
self.get_game().boss.start_player_damage()
self.get_audio().play_sfx("damage", x=sprite.location.centerx)
self.get_game().chemtrails.display_hurt()
else:
center_save = sprite.location.center
sprite.set_frameset("explode")