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...