code: def weapon_cooldown(self) -> Union[int, float]:
          
          if self.can_attack:
              return self._proto.weapon_cooldown
          return -1
docs: Returns some time (more than game loops) until the unit can fire again,
          returns -1 for units that can't attack.
          Usage:
          if unit.weapon_cooldown == 0:
              await self.do(unit.attack(target))
          elif unit.weapon_cooldown < 0:
              await self.do(unit.move(closest_allied_unit_because_cant_attack))
          else:
              await self.do(unit.move(retreatPosition))