ASCII Pumpkin Carving
Add++, 56 bytes

L,"&amp;|\/^.oOv.oO ((("4$Tz£:BF"("+@32C3*$+Bh$2D-1A:1+")"*J


Try it online!

Add++ is not the best at string manipulation challenges

How it works

We create an lambda function that takes a single argument - a list of integers - and outputs the final pumpkin. 

L,                    - Define our function. Takes in a four element list e.g. [0 0 1 1]
                                                       STACK = [[0 0 1 1]]
  "&amp;|\/^.oOv.oO ((("  - Push this string               STACK = [[0 0 1 1] '&amp;|\/^.oOv.oO (((']
  4$T                 - Split it into 4 pieces         STACK = [[0 0 1 1] ['&amp;|\/' '^.oO' 'v.oO' ' (((']
  z                   - Zip the lists together         STACK = [[['&amp;|\\/' 0] ['^.oO' 0] ['v.oO' 1] [' (((' 1]]]
  £:                  - Index into each string         STACK = [['&amp;' '^' '.' '(']]
  BF                  - Flatten the stack              STACK = ['&amp;' '^' '.' '(']
  "("+                - Append a "(" to last element   STACK = ['&amp;' '^' '.' '((']
  @                   - Reverse stack                  STACK = ['((' '.' '^' '&amp;']
  32C3*$+             - Prepend 3 spaces to stalk      STACK = ['((' '.' '^' '   &amp;']
  Bh                  - Output stack with newline      STACK = ['((' '.' '^']
  $2D                 - Push from under                STACK = ['((' '^' '.' '^']
  -1A:1+              - Add one the the last argument  STACK = ['((' '^' '.' '^' 2]
  ")"*                - Repeat ")" that many times     STACK = ['((' '^' '.' '^' '))']
  J                   - Join together                  STACK = ['((^.^))']
                      - Implicitly output