async def debug_kill_unit(self, unit_tags: Union[Units, List[int], Set[int]]): if isinstance(unit_tags, Units): unit_tags = unit_tags.tags assert unit_tags await self._execute( debug=sc_pb.RequestDebug(debug=[debug_pb.DebugCommand(kill_unit=debug_pb.DebugKillUnit(tag=unit_tags))]) )
def kill_all_units(self): units_alive = [ unit.tag for unit in self.agents.values() if unit.health > 0 ] + [unit.tag for unit in self.enemies.values() if unit.health > 0] debug_command = [ d_pb.DebugCommand(kill_unit=d_pb.DebugKillUnit(tag=units_alive)) ] self.controller.debug(debug_command)
def kill_unit(self, unit_tags): if not isinstance(unit_tags, (list, tuple)): unit_tags = [unit_tags] return self.debug(kill_unit=sc_debug.DebugKillUnit(tag=unit_tags))
def test_multi_player(self): run_config = run_configs.get() map_inst = maps.get("Simple64") with run_config.start(want_rgb=False) as controller: create = sc_pb.RequestCreateGame(local_map=sc_pb.LocalMap( map_path=map_inst.path, map_data=map_inst.data(run_config))) create.player_setup.add(type=sc_pb.Participant) create.player_setup.add(type=sc_pb.Computer, race=sc_common.Terran, difficulty=sc_pb.VeryEasy) join = sc_pb.RequestJoinGame( race=sc_common.Terran, options=sc_pb.InterfaceOptions(raw=True)) controller.create_game(create) controller.join_game(join) info = controller.game_info() map_size = info.start_raw.map_size controller.step(2) obs = controller.observe() def get_marines(obs): return { u.tag: u for u in obs.observation.raw_data.units if u.unit_type == units.Terran.Marine } self.assertEmpty(get_marines(obs)) controller.debug( sc_debug.DebugCommand(create_unit=sc_debug.DebugCreateUnit( unit_type=units.Terran.Marine, owner=1, pos=sc_common.Point2D(x=map_size.x // 2, y=map_size.y // 2), quantity=5))) controller.step(2) obs = controller.observe() marines = get_marines(obs) self.assertEqual(5, len(marines)) tags = sorted(marines.keys()) controller.debug([ sc_debug.DebugCommand(kill_unit=sc_debug.DebugKillUnit( tag=[tags[0]])), sc_debug.DebugCommand(unit_value=sc_debug.DebugSetUnitValue( unit_value=sc_debug.DebugSetUnitValue.Life, value=5, unit_tag=tags[1])), ]) controller.step(2) obs = controller.observe() marines = get_marines(obs) self.assertEqual(4, len(marines)) self.assertNotIn(tags[0], marines) self.assertEqual(marines[tags[1]].health, 5)