Beispiel #1
0
 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)
Beispiel #2
0
    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
Beispiel #3
0
 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)
Beispiel #4
0
 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)
Beispiel #5
0
 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
Beispiel #6
0
 def create_heal_task(self, injured):
     task = Task(self.team, TaskType.HEAL_SELF, target=injured)
     return task, self.personality.prioritize_task(task)
Beispiel #7
0
 def create_research_task(self, upgrade_type):
     task = Task(self.team, TaskType.RESEARCH_UPGRADE, target=upgrade_type)
     return task, self.personality.prioritize_task(task)
Beispiel #8
0
 def create_build_techlab_task(self):
     task = Task(self.team, TaskType.BUILD_PIECE, target=PieceType.TECHLAB)
     return task, self.personality.prioritize_task(task)
Beispiel #9
0
 def create_build_barracks_task(self):
     task = Task(self.team, TaskType.BUILD_PIECE, target=PieceType.BARRACKS)
     return task, self.personality.prioritize_task(task)
Beispiel #10
0
 def create_build_colonist_task(self):
     task = Task(self.team, TaskType.BUILD_PIECE, target=PieceType.COLONIST)
     return task, self.personality.prioritize_task(task)
Beispiel #11
0
 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)