def take_damage(self, damage): newProj = [] if damage < 0: #spawn new things if self.split == 0: newProj.append(WhiteCellProj(self.rect.x + 52, self.rect.y, self.xvel, self.yvel, 1)) newProj.append(WhiteCellProj(self.rect.x + 52, self.rect.y + 16, self.xvel/2, self.xvel/2, 2)) newProj.append(WhiteCellProj(self.rect.x + 52, self.rect.y - 16, self.xvel/2, -self.xvel/2, 2)) elif self.split == 1: newProj.append(WhiteCellProj(self.rect.x + 52, self.rect.y + 16, self.xvel/2, self.xvel/2, 2)) newProj.append(WhiteCellProj(self.rect.x + 52, self.rect.y - 16, self.xvel/2, -self.xvel/2, 2)) Actor.take_damage(self, damage) return newProj
def take_damage(self, damage): if self.immortal > 0: pass else: if self.shield: thp = self.health self.health = -1 Actor.take_damage(self, damage) if self.health != 0: self.health = thp else: Actor.take_damage(self, damage) #if self.health <= 0: # print "died" #elif self.buzzcount == 0: if self.health > 0 and self.buzzcount == 0: self.buzzcount = self.buzzcountmax self.buzz.play()
def collide(self, a): if isinstance(a, Player): if self.phase == 1: for i in self.arms: for j in i: radius1 = a.rect.width // 2 radius2 = j.rect.width // 2 if sqrt(((a.rect.x + radius1)-(j.rect.x + radius2))**2 + ((a.rect.y + radius1)-(j.rect.y + radius2))**2) < (radius1 + radius2): a.take_damage(j.damage) radius1 = a.rect.width // 2 radius2 = self.rect.width // 2 if sqrt(((a.rect.x + radius1)-(self.rect.x + radius2))**2 + ((a.rect.y + radius1)-(self.rect.y + radius2))**2) < (radius1 + radius2): a.take_damage(self.damage) else: if self.phase == 1: for i in self.arms: for j in i: radius1 = a.rect.width // 2 radius2 = j.rect.width // 2 if sqrt(((a.rect.x + radius1)-(j.rect.x + radius2))**2 + ((a.rect.y + radius1)-(j.rect.y + radius2))**2) < (radius1 + radius2): j.take_damage(a.damage) proj = a.take_damage(-1) if proj: return proj if self.phase == 0: radius1 = a.rect.width // 2 radius2 = self.eyerect.width // 2 if sqrt(((a.rect.x + radius1)-(self.eyerect.x + radius2))**2 + ((a.rect.y + radius1)-(self.eyerect.y + radius2))**2) < (radius1 + radius2): a.take_damage(-1) Actor.take_damage(self, a.damage) radius1 = a.rect.width // 2 radius2 = self.rect.width if sqrt(((a.rect.x + radius1)-(self.rect.x + radius2))**2 + ((a.rect.y + radius1)-(self.rect.y + radius2))**2) < (radius1 + radius2): a.take_damage(-1) if self.phase == 2: Actor.take_damage(self, a.damage)
def take_damage(self, damage=0): Actor.take_damage(self, damage)