Code Golfinator-3000 As everyone knows, adding inator-3000 to the end of any noun makes it way cooler. But what else can make a word cooler?

Given an ASCII string as input, output the coolness of the word.

Calculating the coolness

There are 4 elements to calculating the coolness of a word.


The word itself. The base score is the number of capital letters multiplied by 1000
The end number. A number at the end of the word (such as burninator-3000) is added to the base score, but if the number is more than 4 digits, they're being too greedy and the number should be ignored.
The connector. A space before the end number adds 1000, while a hyphen adds 2000, any other symbol, or no symbol at all, has no effect.
The suffix. If the word ends in ator, double the final score. If it ends in inator, triple the score. These are case insensitive.


So for example Burninator-3000 can be calculated as follows:

1 Capital letter - Base Score: 1000
(1000(base) + 3000(number) + 2000(hyphen)) * 3(suffix) = 18000


Testcases

Burninator-3000 -&gt; 18000
Burnator3000 -&gt; 8000
BurNinator 100 -&gt; 9300
BuRnInAtOr-7253 -&gt; 42759
burn -&gt; 0
burn- -&gt; 0
bUrn-1 -&gt; 3001
inator-7 -&gt; 6021
ator 56 -&gt; 2112
burninators 1000 -&gt; 2000
burn_1000 -&gt; 1000
BURNINATOR-9999 -&gt; 65997
burninator 99999 -&gt; 3000
burninator_99999 -&gt; 0
Code Golfinator-3000 -&gt; 21000
inator ator hello world-1000 -&gt; 3000
javaiscool_99999 -&gt; 0
hypen-ated -&gt; 0
1000 -&gt; 1000
-1000 -&gt; 3000
10000 -&gt; 0
-10000 -&gt; 2000
BURN1N470R-3000 -&gt; 11000


Scoring

This is code-golf, so fewest bytes in each language wins!
JavaScript (ES6), 138 133 128 bytes

s=&gt;(([,a,b,,c,d]=s.match(/((in)?ator)?((\D?)(\d+))?$/i),s.split(/[A-Z]/).length-1+(c=='-'?2:c==' '))*1e3+(d&lt;1e4&amp;&amp;+d))*(b?3:2-!a)


How?

The number of capital letters is given by:

s.split(/[A-Z]/).length - 1


All other criteria are deduced from the result of the following regular expression, which is split into 4 variables:

/((in)?ator)?((\D?)(\d+))?$/i     criterion  | code                    | outcome
 \_________/  \___/\___/          -----------+-------------------------+----------
      a         c    d            end number | d &lt; 1e4 &amp;&amp; +d           | 0 or +d
  \___/                           connector  | c == '-' ? 2 : c == ' ' | 0, 1 or 2
    b                             suffix     | * (b ? 3 : 2 - !a)      | 1, 2 or 3


Test cases



let f =

s=&gt;(([,a,b,,c,d]=s.match(/((in)?ator)?((\D?)(\d+))?$/i),s.split(/[A-Z]/).length-1+(c=='-'?2:c==' '))*1e3+(d&lt;1e4&amp;&amp;+d))*(b?3:2-!a)

let test = s =&gt; console.log((s + ' '.repeat(32)).slice(0, 32), f(s));

test("Burninator-3000")               // -&gt; 18000
test("Burnator3000")                  // -&gt; 8000
test("BurNinator 100")                // -&gt; 9300
test("BuRnInAtOr-7253")               // -&gt; 42759
test("burn")                          // -&gt; 0
test("burn-")                         // -&gt; 0
test("bUrn-1")                        // -&gt; 3001
test("inator-7")                      // -&gt; 6021
test("ator 56")                       // -&gt; 2112
test("burninators 1000")              // -&gt; 2000
test("burn_1000")                     // -&gt; 1000
test("BURNINATOR-9999")               // -&gt; 65997
test("burninator 99999")              // -&gt; 3000
test("burninator_99999")              // -&gt; 0
test("Code Golfinator-3000")          // -&gt; 21000
test("inator ator hello world-1000")  // -&gt; 3000
test("javaiscool_99999")              // -&gt; 0
test("hypen-ated")                    // -&gt; 0
test("1000")                          // -&gt; 1000
test("-1000")                         // -&gt; 3000
test("10000")                         // -&gt; 0
test("-10000")                        // -&gt; 2000
test("BURN1N470R-3000")               // -&gt; 11000