def special_atk(self, screen): """ Spawns players at one side of map and himself at the other then creates waves of fire missles that must be dodged by the players. """ if not self.special_casting: engine.spawn_players(self.unit_roster.get("Players")) self.xpos = 750 self.ypos = 450 self.special_casting = 1 self.special_cast_time = pygame.time.get_ticks() self.special_missles_box = [] for j in range(len(self.temp_wave)): for i in range(len(self.temp_wave[j])): self.special_missles_box.append(self.FireMissle(self.unit_roster, 900+(j*300), self.temp_wave[j][i])) else: Animation(screen, self, 0,0, self.anim_standing, 1).animate() for missle in self.special_missles_box: Animation(screen, missle , 0,0, self.special_atk1, 10).animate() missle.move_left() #check for dmgs. for unit in self.unit_roster.get("Players"): if engine.detect_collision(unit, self.special_missles_box, 0, 0): unit.lose_health(self.special_dmg) if pygame.time.get_ticks() > self.special_cast_time + 20000: self.special_casting = 0 self.special_offset = 0 self.attack_status = "none"
def move_down(self): self.is_walking = 1 #Assign Grid Data for Readability grid_graph = self.maps.map_grids.get(self.maps.map_list[self.maps.current_map])[self.maps.current_grid][0] grid_get_vert = self.maps.map_grids.get(self.maps.map_list[self.maps.current_map])[self.maps.current_grid][2] #If next step is on the grid and It does not collide with another player or enemy if engine.is_grid(grid_graph, grid_get_vert, self.generate_unit_grid_frame(0, self.step_vert)): if not engine.detect_collision(self, self.unit_roster.get("Players")+self.unit_roster.get("Enemies"), 0, self.step_vert): self.ypos += self.step_vert
def move_up(self): self.is_walking = 1 #Assign Grid Data for Readability grid_graph = self.maps.map_grids.get(self.maps.map_list[ self.maps.current_map])[self.maps.current_grid][0] grid_get_vert = self.maps.map_grids.get(self.maps.map_list[ self.maps.current_map])[self.maps.current_grid][2] #If next step is on the grid and It does not collide with another player or enemy if engine.is_grid(grid_graph, grid_get_vert, self.generate_unit_grid_frame(0, -self.step_vert)): if not engine.detect_collision( self, self.unit_roster.get("Players") + self.unit_roster.get("Enemies"), 0, -self.step_vert): self.ypos -= self.step_vert