#JavaScript (E6) 542 (572 - bonus 30) <s>553 564 576</s>

3 kinds of shapes: 

 1. Back and Joker: more or less literal
 2. JQK: mark at topleft and rightbottom, inner frame and 3 kind of rows inside, always the same structure
 3. A...10: mark at topleft and rightbottom, inner frame with 3 kind of rows inside, variable with the numeric value. Taken care of with lookup using array and q variable

The `z` string (compressed) contains the basic building blocks for 

 - numeric cards - 3 blocks, 7 chars each
 - joker - 11 blocks, 13 char each, used simply in sequence

*Bonus note* The code for winning the 30 points bonus is 29 chars. 

<!-- language: lang-javascript -->

    F=c=>(
      p='|',b=' ',d=b+b,t=d+b,
      S='substr',
      z="9J2J4J55O102K |6|1E | J4|1R |1O3|3|2K2|3|3E1| J1|4R | O1|6| K201E55R".replace(/\d/g,n=>n++?b.repeat(n):l='-------'),
      i=7,
      console.log([c.split(b).map(c=>
        m<d
          ?b+l+l[S](1)+b 
          :p+(c=='B'
            ?'* '.repeat(i)[S](i,13)
            :c=='R'
              ?z[S](i,13)
              :(
                 [,h,k]=c.match(/(.+)(.)/),
                 k='♣♦♥♠'['CDHS'.search(k)], //comment to avoid the unicode symbols 
                 n=h-1|0,
                 s=t+t+t+(n>8?b:d),
                 m-7
                  ?m-8
                    ?m-9
                      ?d+p+(h>'A'
                         ?-m?m-6?m-3?t+b+t:t+h+t:t+t+k:k+t+t
                         :z[S](([64,1028,1092,8194,8258,8322,8326,9350,8802,9766][n]>>m*2&3)*7,7).replace(/J/g,k)
                       )+p+d
                      :t+l+t
                    :s+k+h
                  :h+k+s
                )
           )+p
        ).join(b,i+=13)
      for(m of ' 79012345698 ')].join('\n'))
    )


**Test** In FireFox/FireBug console

    F('10C JD QH KS AC B R')

    F('2C 3D 4H 5S 6C 7D 8H 9S')

*Output*

     -------------   -------------   -------------   -------------   -------------   -------------   ------------- 
    |10♣          | |J♦           | |Q♥           | |K♠           | |A♣           | |* * * * * * *| |J            |
    |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | | * * * * * * | |O  -------   |
    |  |♣     ♣|  | |  |♦      |  | |  |♥      |  | |  |♠      |  | |  |       |  | |* * * * * * *| |K |       |  |
    |  |   ♣   |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | | * * * * * * | |E | J     |  |
    |  |♣     ♣|  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |* * * * * * *| |R |  O    |  |
    |  |       |  | |  |   J   |  | |  |   Q   |  | |  |   K   |  | |  |   ♣   |  | | * * * * * * | |  |   K   |  |
    |  |♣     ♣|  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |* * * * * * *| |  |    E  | J|
    |  |   ♣   |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | | * * * * * * | |  |     R | O|
    |  |♣     ♣|  | |  |      ♦|  | |  |      ♥|  | |  |      ♠|  | |  |       |  | |* * * * * * *| |  |       | K|
    |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | | * * * * * * | |   -------  E|
    |          ♣10| |           ♦J| |           ♥Q| |           ♠K| |           ♣A| |* * * * * * *| |            R|
     -------------   -------------   -------------   -------------   -------------   -------------   ------------- 

     -------------   -------------   -------------   -------------   -------------   -------------   -------------   ------------- 
    |2♣           | |3♦           | |4♥           | |5♠           | |6♣           | |7♦           | |8♥           | |9♠           |
    |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   |
    |  |       |  | |  |       |  | |  |♥     ♥|  | |  |♠     ♠|  | |  |♣     ♣|  | |  |♦     ♦|  | |  |♥     ♥|  | |  |♠     ♠|  |
    |  |   ♣   |  | |  |   ♦   |  | |  |       |  | |  |       |  | |  |       |  | |  |   ♦   |  | |  |   ♥   |  | |  |       |  |
    |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |♠     ♠|  |
    |  |       |  | |  |   ♦   |  | |  |       |  | |  |   ♠   |  | |  |♣     ♣|  | |  |♦     ♦|  | |  |♥     ♥|  | |  |   ♠   |  |
    |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |♠     ♠|  |
    |  |   ♣   |  | |  |   ♦   |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |   ♥   |  | |  |       |  |
    |  |       |  | |  |       |  | |  |♥     ♥|  | |  |♠     ♠|  | |  |♣     ♣|  | |  |♦     ♦|  | |  |♥     ♥|  | |  |♠     ♠|  |
    |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   |
    |           ♣2| |           ♦3| |           ♥4| |           ♠5| |           ♣6| |           ♦7| |           ♥8| |           ♠9|
     -------------   -------------   -------------   -------------   -------------   -------------   -------------   ------------- 

**Not golfed code**

<!-- language: lang-javascript -->

    F=c=>
    {
      p='|',b=' ',d=b+b,t=d+b;
      l='------';
      z="9X2X4XJ55O10-2K |6|1E | J4|1R |1O3|3|2K2|3|3E1| J1|4R | O1|6| K20-1E55R".replace(/\d/g,n=>-n?b.repeat(-~n):l);
      c=c.split(b);
      for(o=i=''; c[0]&&i<13; i++)
      {
        o+=c.map(c => {
          if (i==0 || i==12) r=' -'+l+l+b;
          else
          {
            if (c=='B') r=' *'.repeat(7).substr(i&1,13);
            else if (c=='R') r=z.substr(i*13+8,13);
            else {
              [,h,k]=c.match(/(.+)(.)/),n=h-1|0,
              k='♣♦♥♠'[{C:0,D:1,H:2,S:3}[k]],
              r=t+t+t+(n>8?b:d);
              if(i==1)r=h+k+r;
              else if(i==11)r+=k+h;
              else if(i==2||i==10)r=t+'-'+l+t;
              else {
                if (h>'A')
                {
                  if(i==3)r=k+t+t;
                  else if(i==9)r=t+t+k;
                  else if(i==6)r=t+h+t;
                  else r=t+b+t
                }
                else 
                { 
                  q=[64,1028,1092,8194,8258,8322,8326,9350,8802,9766][n]>>(i+i-6)&3,
                  r=z.substr(q*7,7).replace(/X/g,k)
                }
                r=d+p+r+p+d
              }
            }
            r=p+r+p
          }
          return r
        }).join(' ')+'\n'
      }  
      console.log(o);
    }