def construct(units, template, x, z, angle=0, autorepair=True, autocontinue=True, queued=False): unit_ids = [unit.id() for unit in units] return { "type": "construct", "entities": unit_ids, "template": template, "x": x, "z": z, "angle": angle, "autorepair": autorepair, "autocontinue": autocontinue, "queued": queued, } def gather(units, target, queued=False): unit_ids = [unit.id() for unit in units] return { "type": "gather", "entities": unit_ids, "target": target.id(), "queued": queued, } def train(entities, unit_type, count=1): entity_ids = [unit.id() for unit in entities] return { "type": "train", "entities": entity_ids, "template": unit_type, "count": count, } def chat(message): return {"type": "aichat", "message": message} def reveal_map(): return {"type": "reveal-map", "enable": True} def walk(units, x, z, queued=False): ids = [unit.id() for unit in units] return {"type": "walk", "entities": ids, "x": x, "z": z, "queued": queued} def attack(units, target, queued=False, allow_capture=True): unit_ids = [unit.id() for unit in units] return { "type": "attack", "entities": unit_ids, "target": target.id(), "allowCapture": allow_capture, "queued": queued, }