JSFiddle - React, Tailwind, and code Playground

by Naning

HTML

<label>HP of your Character at max level</label>
</br>
<input id="startHP" type="number" placeholder="Start HP"></input>
</br>
<label>The amount of card points you want to distribute</label>
</br>
<input id="cardPoints" type="number" placeholder="Card Points"></input>
</br>
<label>The percentage of armor you want in your main armor stat (ie Physical Armor). If you want 50%, enter 0.5</label>
</br>
<input id="percentageMain" type="number" placeholder="Physical Armor(ie 0.5)"></input>
</br>
<label>The amount of penetration your enemy likely has to your main armor stat (ie Physical Penetration)</label>
</br>
<input id="enemyPen" type="number" placeholder="Enemy Penetration"></input>
</br>
<button id="submitButton">Calculate
</button>
<br/>
<div id="resultDiv">
</div>

JavaScript

$('#submitButton').click(function() {
   var BestAmountOfArmorCardPoints = 0;
   var HighestEffectiveHP = 0;
   for (i = 0; i <= $('#cardPoints').val(); i++) {
      var EffectiveHP = CalculateEffectiveHP($('#startHP').val(), $('#cardPoints').val(), $('#percentageMain').val(), $('#enemyPen').val(), i);
      if (EffectiveHP > HighestEffectiveHP) {
         HighestEffectiveHP = EffectiveHP;
         BestAmountOfArmorCardPoints = i;
      }
   }
   $('#resultDiv').html("----------- Result -----------</br>The highest amount of Effective HP you can achieve is " + parseFloat(HighestEffectiveHP) + ". </br> You achieve this by spending " + BestAmountOfArmorCardPoints + " points on armor");
});

function CalculateEffectiveHP(startHP, cardPoints, percentMain, enemyPen, cardPointsSpentOnArmor) {
   var amountOfArmorPerPoint = parseFloat(percentMain) * 22;
   var FRR = parseFloat(cardPointsSpentOnArmor) * parseFloat(amountOfArmorPerPoint) - enemyPen;
   var reduction = parseFloat(FRR) / (parseFloat(FRR) + 290);
   var bonusHP = 100 * (parseFloat(cardPoints) - parseFloat(cardPointsSpentOnArmor));
   var EffectiveHP = (parseFloat(startHP) + parseFloat(bonusHP)) / (1 - parseFloat(reduction));
   return EffectiveHP;
}