def create_mining_task(self, tile): task = Task(self.team, TaskType.MINE, tx=tile[0], ty=tile[1], target=self.map.get_tile_type_at(tile[0], tile[1])) return task, self.personality.prioritize_task(task)
def create_build_military_tasks(self): tasks = [] counts_map = {} # Weight counts by personality for archetype, count in self.my_archetype_counts: counts_map[archetype] = count / self.personality.unit_preference[ archetype] for archetype, count in self.enemy_archetype_counts: if count > 0 and len(self.enemy_pieces) > 0: # If the enemy has mainly one archetype, act like we have less of the counter unit than we do our_archetype = counter_archetype[archetype] counts_map[our_archetype] /= count / len(self.enemy_pieces) target_archetype = PieceArchetype.GROUND if len(counts_map.keys()) > 0: # Find the lowest count target_archetype, amount = min(counts_map.items(), key=lambda pair: pair[1]) for piece_type in self.get_buildable_pieces(PieceType.BARRACKS, target_archetype): task = Task(self.team, TaskType.BUILD_PIECE, target=piece_type) tasks.append((task, self.personality.prioritize_task(task))) return tasks
def create_harvest_task(self, coord): task = Task(self.team, TaskType.HARVEST_RESOURCE, tx=coord[0], ty=coord[1], target=PieceType.GENERATOR) return task, self.personality.prioritize_task(task)
def create_attack_enemy_task(self, target): anticipated_x, anticipated_y = self.get_anticipated_movement(target) task = Task(self.team, TaskType.ATTACK_ENEMY, tx=anticipated_x, ty=anticipated_y, target=target) return task, self.personality.prioritize_task(task)
def create_retreat_task(self, piece): bases = self.get_manager(Manager.PIECE).get_all_pieces_for_team( self.team, piece_type=PieceType.BASE) if len(bases) > 0: task = Task(self.team, TaskType.RETREAT, bases[0].gx, bases[0].gy, target=piece) return task, self.personality.prioritize_task(task) else: return None
def create_heal_task(self, injured): task = Task(self.team, TaskType.HEAL_SELF, target=injured) return task, self.personality.prioritize_task(task)
def create_research_task(self, upgrade_type): task = Task(self.team, TaskType.RESEARCH_UPGRADE, target=upgrade_type) return task, self.personality.prioritize_task(task)
def create_build_techlab_task(self): task = Task(self.team, TaskType.BUILD_PIECE, target=PieceType.TECHLAB) return task, self.personality.prioritize_task(task)
def create_build_barracks_task(self): task = Task(self.team, TaskType.BUILD_PIECE, target=PieceType.BARRACKS) return task, self.personality.prioritize_task(task)
def create_build_colonist_task(self): task = Task(self.team, TaskType.BUILD_PIECE, target=PieceType.COLONIST) return task, self.personality.prioritize_task(task)
def create_moveto_harvest_task(self, coord): task = Task(self.team, TaskType.MOVE_TO_RESOURCE, tx=coord[0], ty=coord[1]) return task, self.personality.prioritize_task(task)