Queslar Battle Sim

by path411

HTML

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<div class="fluid-container">
<div class="row">
    <div class="col">
        <input id="apikey" type="text" placeholder="api key" />
        <br>
        <button id="import">
        import
        </button>
    </div>
     <div class="col">
        <input id="apikeyo" type="text" placeholder="api key" />
        <br>
        <button id="importo">
        import Opponent
        </button>
    </div>
</div>

<br><br>

    <div class="row">
        <div class="col">
            <h2>
            Your stats
            </h2>
            Equipment Damage: <input id="basedamage" type="text" placeholder="equipment damage" value="207289" /><br>
            Equipment Defense: <input id="basedefense" type="text" placeholder="equipment defense" value="226440" />

            <br><br>
            Strength: <input id="strength" type="text" placeholder="strength" value="349507"/><br>
            Health: <input id="health" type="text" placeholder="health" value="347839" /><br>
            Agility: <input id="agility" type="text" placeholder="agility" value="348485"/><br>
            Dexterity: <input id="dexterity" type="text" placeholder="dexterity" value="347220"/><br>

            <br><br>
            Crit Chance %:<input id="critchanceboost" type="text" placeholder="critchance %" value="83"/><br>
            Crit Damage %<input id="critdamageboost" type="text" placeholder="critdamage %" value="18"/><br>
            Multistrike %<input id="multistrikeboost" type="text" placeholder="multistrike %" value="113"/><br>
            Healing %<input id="healingboost" type="text" placeholder="healing %" value="114"/><br>
            Defense %<input id="defenseboost" type="text"...

JavaScript

const statNames = [
	'basedamage',
    'basedefense',
    'strength',
    'health',
    'agility',
    'dexterity',
    'critchanceboost',
    'critdamageboost',
    'multistrikeboost',
    'healingboost',
    'defenseboost'
];

var pstats;
var ostats;
var metastats;
var log;
var settings = {
	simType: 'monster',
    runsPerSim: 100000,
};

function Import(opponent=false) {
    $.ajax({
        dataType: "json",
        url: "https://queslar.com/api/player/full/"+$('#apikey'+(opponent? 'o':'')).val(),
        success: function(data) {
        	ReadImport(data, opponent);
        }
    });
}

function ReadImport(data, opponent) {
	var playerid = data.player.id;
	var stats = {
    	basedamage: 10,
        basedefense: 0,
    	strength: data.stats.strength,
        health: data.stats.health,
        agility: data.stats.agility,
        dexterity: data.stats.dexterity,
        critchanceboost: data.boosts.critChance/10,
        critdamageboost: data.boosts.critDamage/10,
        multistrikeboost: data.boosts.multistrike/10,
        healingboost: data.boosts.healing/10,
        defenseboost: data.boosts.defense/10,
    };
    
    for(var i=0, iL=data.partners.length; i<iL; i++) {
    	stats.strength += data.partners[i].strength;
        stats.health += data.partners[i].health;
        stats.agility += data.partners[i].agility;
        stats.dexterity += data.partners[i].dexterity;
    }
    
    for(var i=0, iL=data.pets.length; i<iL; i++) {
    	let pet = data.pets[i];
        let petEfficiency = pet.efficiency_tier;
        petEfficiency = 0.2 + (0.1 * petEfficiency);
    	stats.basedamage += pet.level * 200 * petEfficiency; // Patch 1.1.1 pet buff
        stats.basedefense += pet.level * 100 * petEfficiency; // Patch 1.1.1 pet buff
    	stats.strength += data.pets[i].strength * petEfficiency;
        stats.health += data.pets[i].health * petEfficiency;
        stats.agility += data.pets[i].agility * petEfficiency;
        stats.dexterity += data.pets[i].dexterity...