def fox_attack_loop(self): g = self.g if self.health <= 0: self.feeling = 'sad' self.health = 0 if self.attacking == 3: self.feeling = 'dead' self.rect.y += 3 else: self.attacking = 0 self.walking = 0 self.jumping = 0 self.walktopos = (self.rect.x, self.rect.y) return self.timer += 1 if self.jumping == 1: self.rect.y += self.jumpvec self.jumpvec += 1 # if timer is in the minus, you're firing for a while if self.timer < 0: self.walking = 0 if self.timer < -10: self.feeling = 'shooting' if self.attacking == 1:# first battle if self.timer % 2 == 0: s = Shot(g, self.direction, (self.rect.x + 44, self.rect.y + 35), 'shot3', 'enemy') elif self.attacking == 2: # second battle if self.timer % 4 == 0: s = Shot(g, self.direction, (self.rect.x + 44, self.rect.y + 35), 'shot3', 'enemy') s.keep_alive = 6 elif self.attacking == 3: # last if self.timer % 10 == 0: s = Shot(g, self.direction, (self.rect.x + 44, self.rect.y + 35), 'shot8', 'enemy') else: self.feeling = 'normal' speed = 4 if self.attacking == 2: speed = 5 self.rect.x += (1 - (self.direction * 2)) * speed self.rect.y += 2 # gravity if self.walktopos == (self.rect.x, self.rect.y) : # walking into something self.jumping = 1 self.jumpvec = -10 if self.attacking == 1: # first battle with fox if self.timer == 2: self.jumping = 1 self.jumpvec = -10 # shooting every random interval if random.randint(0, 70) == 0 and self.framecount > 10: self.timer = -30 if self.attacking == 2 or self.attacking == 3: # second battle with Fox dv = self.rect.x - self.g.player.rect.x if dv > 200: self.direction = 1 if dv < -200: self.direction = 0 if self.jumping == 0: # jumping every 30 frames if self.framecount % 40 == 0 and self.jumping == 0: self.jumping = 1 self.jumpvec = -10 if self.attacking == 3: self.jumpvec = -15 # shooting every random interval elif random.randint(0, 15) == 0 and self.framecount > 10: self.timer = -30 self.framecount += 1 self.walking = 1 self.walktopos = (self.rect.x, self.rect.y) # hitting the bullets and player s = Rect(self.rect) if s.colliderect (g.player.rect): g.player.touch(self) for b in g.bullets: if b.owner == 'player': drect = (b.rect.x + 30, b.rect.y ) if s.collidepoint(drect): b.destroy() self.health -= b.get_damage() e = Effect(self.g, 'health', (self.rect.x, self.rect.y)) e.healthchange = -b.get_damage() if self.feeling != 'sad': self.hitme.play() self.feeling = 'sad' self.image = g.make_image_white(self.image, (96, 64))