public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, id_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, tech_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, whatUses_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(5, damageAmount_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(6, damageBonus_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeInt32(7, damageCooldown_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeInt32(8, damageFactor_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeMessage(9, upgradeType_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeEnum(10, damageType_.getNumber());
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeEnum(11, explosionType_.getNumber());
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeInt32(12, minRange_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        output.writeInt32(13, maxRange_);
      }
      if (((bitField0_ & 0x00002000) == 0x00002000)) {
        output.writeInt32(14, innerSplashRadius_);
      }
      if (((bitField0_ & 0x00004000) == 0x00004000)) {
        output.writeInt32(15, medianSplashRadius_);
      }
      if (((bitField0_ & 0x00008000) == 0x00008000)) {
        output.writeInt32(16, outerSplashRadius_);
      }
      if (((bitField0_ & 0x00010000) == 0x00010000)) {
        output.writeBool(17, targetsAir_);
      }
      if (((bitField0_ & 0x00020000) == 0x00020000)) {
        output.writeBool(18, targetsGround_);
      }
      if (((bitField0_ & 0x00040000) == 0x00040000)) {
        output.writeBool(19, targetsMechanical_);
      }
      if (((bitField0_ & 0x00080000) == 0x00080000)) {
        output.writeBool(20, targetsOrganic_);
      }
      if (((bitField0_ & 0x00100000) == 0x00100000)) {
        output.writeBool(21, targetsNonBuilding_);
      }
      if (((bitField0_ & 0x00200000) == 0x00200000)) {
        output.writeBool(22, targetsNonRobotic_);
      }
      if (((bitField0_ & 0x00400000) == 0x00400000)) {
        output.writeBool(23, targetsTerrain_);
      }
      if (((bitField0_ & 0x00800000) == 0x00800000)) {
        output.writeBool(24, targetsOrgOrMech_);
      }
      if (((bitField0_ & 0x01000000) == 0x01000000)) {
        output.writeBool(25, targetsOwn_);
      }
      getUnknownFields().writeTo(output);
    }