Code Golfinator-3000
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