Jewelcrafting
-needs input mode -needs for each nested output loop
by Kiya_Iekret
HTML
<table><tr><th></th><th>Color</th><th>Quality</th></tr>
<tr><td>0</td><td>Blue</td><td>Rough</td></tr>
<tr><td>1</td><td>Yellow</td><td>Good</td></tr>
<tr><td>2</td><td>Red</td><td>Perfect</td></tr>
<tr><td>3</td><td>Green</td><td></td></tr></table>
<h3>Zysk/strata na sztuce:</h3>
<table><tr><th></th><th>Rough</th><th>Good</th><th>Perfect</th></tr>
<tr><td>Blue</td><td></td><td></td><td></td></tr>
<tr><td>Yellow</td><td></td><td></td><td></td></tr>
<tr><td>Red</td><td></td><td></td><td></td></tr>
<tr><td>Green</td><td></td><td></td><td></td></tr></table>
<ul>
<li id="perfect-blue-vs-market"></li>
<li id="good-vs-market"></li>
<li id="rough-vs-market"></li>
</ul>
JavaScript
const color = ["Blue", "Yellow", "Red", "Green"]; //maybe you cant put variables declared later as arrays? <- but you can!
const quality = ["Rough", "Good", "Perfect"]; //in function
var raw_prices = [800000, 800000, 140000, 90000];
var gem_prices = [
[1700000, 2800000, 3000000], //blue
[1400000, 1800000, 3400000], //yellow
[2300000, 400000, 600000], //red
[98000, 155000, 400000] //green
];
const odds_by_quality = [0.45, 0.3, 0.25];
const base_success = 0.4;
function jewelcrafting(quality_string, color_string) {
//mocą kalkulacji podziałowej odjemnej = koszt materiału * szansa że nie pęknie - cena rynkowa innych kolorów * szansa że nie pęknie * szansa że pyknie tn kolor
var index_of_quality = quality
.findIndex(check_for_parser_error = (name) => name === quality_string); //name to index
var index_of_color = color
.findIndex(check_for_parser_error = (name) => name === color_string); //name to index
var jewelcrafting = 0;
var pre_qual_cost_check = raw_prices[index_of_color] / base_success;
var cost_adjusted_for_subodds = odds_by_quality.map((value) => pre_qual_cost_check / value).reduce((total, consecutives) => total + consecutives);
jewelcrafting += cost_adjusted_for_subodds;
function arrayOuroborosLoop(array_name, input_index) {
//with splice
var i = 0, ouroboros_array = [], looping_counter = input_index, arrlen = array_name.length;
if (arrlen === 0) throw "obviously, you can't loop through an empty array";
for (i = 0, looping_counter = input_index; i<arrlen; i++) {
looping_counter++;
if (looping_counter<arrlen) {ouroboros_array.push(array_name[looping_counter]);}
else {looping_counter = 0; ouroboros_array.push(array_name[looping_counter]);}
}
ouroboros_array.splice(arrlen - 1, 1);
return ouroboros_array.reduce((total, consecutives) => total + consecutives);
}
jewelcrafting -= arrayOuroborosLoop(gem_prices[index_of_color], index_of_quality);
jewelcrafting -= gem_prices[index_of_color][index_of_quality];
return...