diff --git a/english.js b/english.js
new file mode 100644
index 0000000..bfa4cb9
--- /dev/null
+++ b/english.js
@@ -0,0 +1,107 @@
+function English(str) {
+ switch (str) {
+ case 1:{ //Tab Title of Webpage
+ return "D4DJ Parkings Calculator | Powered by Muni"
+ }break;
+ case 2:{ //Header Title (Top) of Webpage
+ return "D4DJ Event Parking Calculator"
+ }break;
+ case 3:{ //Set up your options (Category Title)
+ return "Parking Configuration"
+ }break;
+ case 4:{ //Selection for event type: Poker/Raid
+ return "Poker/Raid"
+ }break;
+ case 5:{ //Selection for event type: Bingo
+ return "Bingo"
+ }break;
+ case 6:{ //Selection for event type: Medley
+ return "Medley"
+ }break;
+ case 7:{ //Label for team % selector (Include ":")
+ return "Event Team Bonus:"
+ }break;
+ case 17:{ //Label for whether to enable flexible team options.
+ return "Flexible Team?"
+ }break;
+ case 8:{ //Tooltip for flexible team options (mouseover)
+ return "If turned on, calculates scoring options using lower % teams also."
+ }break;
+ case 18:{ //Label for what the max score in free lives is.
+ return "Max Free Live Score:"
+ }break;
+ case 9:{ //Tooltip for what the max score in free lives is. (Setting it to 0 forces the calculator to use Rehearsal)
+ return "The maximum score you can get from playing a song using Free Live.
(Use 0 for Rehearsals Only)"
+ }break;
+ case 10:{ //Label for Advanced Settings toggle.
+ return "Advanced Options?"
+ }break;
+ case 11:{ //Tooltip for Advanced Settings toggle.
+ return "Enable voltage & EP limits."
+ }break;
+ case 12:{ //Label for setting the lowest EP where voltage is allowed.
+ return "Use voltage until: "
+ }break;
+ case 13:{ //Label for setting the total amount of voltage the calculator may consume.
+ return "Max Voltage to use:"
+ }break;
+ case 14:{ //Label for setting the Starting EP amount.
+ return "Starting EP:"
+ }break;
+ case 15:{ //Label for setting the final EP amount.
+ return "Target EP:"
+ }break;
+ case 16:{ //The text for the button users click to run the calculator.
+ return "Calculate"
+ }break;
+ case 19:{ //Tip: Here's the Light on EX or Synchrogazer on Hard/EX difficulty are some of the highest scoring songs you can pick.
+ return "Here's the Light on EX or Synchrogazer on Hard/EX difficulty are some of the highest scoring songs you can pick."
+ }break;
+ case 20:{ //Tip: When you get close to the score you need in Free Live, purposely fail the song. Notes are worth 10% their normal value when you have 0 health so you can finish easily.
+ return "When you get close to the score you need in Free Live, purposely fail the song. Notes are worth 10% their normal value when you have 0 health so you can finish easily."
+ }break;
+ case 21:{ //Tip: The "Flexible Team" option gives you the fastest park, but at the expense of more voltage.
+ return "The \"Flexible Team\" option gives you the fastest park, but at the expense of more voltage."
+ }break;
+ case "%INITIAL%":{ //This message is the first thing to display for a normal calculation.
+ //Sample message:
+ /*
+ Calculating from 100000 to 104000 for event type Poker/Raid...
+ (All games are done in Free Live)
+
+ Found a park! 9 steps and 13 voltage required!
+ */
+ //Variables for this message:
+ /*
+ Calculating from %START% to %TARGET% for event type %EVENT%...
+ (All games are done in Free Live)
+
+ Found a park! %STEPS% step%PLURAL_STEPS% and %VOLTAGE% voltage required!
+ */
+ return "Calculating from %START% to %TARGET% for event type %EVENT%...\n\t(All games are done in Free Live)\n\nFound a park! %STEPS% step%PLURAL_STEPS% and %VOLTAGE% voltage required!"
+ }break;
+ case "%STEP%":{ //This message is displayed for each normal voltage step in the process.
+ //Sample message:
+ /*
+ Step 1) Using 5 voltage w/160% team, score between 640000~649999 pts. EP +1480. Remaining:2520 EP
+ */
+ //Variables for this message:
+ /*
+ Step %STEP%) Using %VOLTAGE% voltage w/%PERCENT%% team, score between %LOWSCORE%~%HIGHSCORE% pts. EP +%EPGAIN%. Remaining:%REMAINING% EP
+ */
+ return "Step %STEP%) Using %VOLTAGE% voltage w/%PERCENT%% team, score between %LOWSCORE%~%HIGHSCORE% pts. EP +%EPGAIN%. Remaining:%REMAINING% EP"
+ }break;
+ case "%REHEARSAL%":{ //Similar to above, but for a rehearsal step instead.
+ return "Step %STEP%) Use Rehearsal w/%PERCENT%% team. EP +%EPGAIN%. Remaining:%REMAINING% EP"
+ }break;
+ case "%LARGEGAP%":{ //This message is displayed if the Starting EP and Final EP gap is too big for reasonable calculations.
+ return "Get closer to target score before using parking calculator!";
+ }break;
+ case "%FAILED%":{ //This message is displayed if it's impossible to park.
+ return "Impossible to park using this team!"
+ }break;
+ default:{
+ return "???"
+ }
+ }
+ }
\ No newline at end of file
diff --git a/japanese.js b/japanese.js
new file mode 100644
index 0000000..f7228f3
--- /dev/null
+++ b/japanese.js
@@ -0,0 +1,107 @@
+function Japanese(str) {
+ switch (str) {
+ case 1:{ //Tab Title of Webpage
+ return "D4DJ Parking Calculator | Powered by Muni"
+ }break;
+ case 2:{ //Header Title (Top) of Webpage
+ return "D4DJ Event Parking Calculator"
+ }break;
+ case 3:{ //Set up your options (Category Title)
+ return "Parking Configuration"
+ }break;
+ case 4:{ //Selection for event type: Poker/Raid
+ return "Poker/Raid"
+ }break;
+ case 5:{ //Selection for event type: Bingo
+ return "Bingo"
+ }break;
+ case 6:{ //Selection for event type: Medley
+ return "Medley"
+ }break;
+ case 7:{ //Label for team % selector (Include ":")
+ return "Event Team Bonus:"
+ }break;
+ case 17:{ //Label for whether to enable flexible team options.
+ return "Flexible Team?"
+ }break;
+ case 8:{ //Tooltip for flexible team options (mouseover)
+ return "If turned on, calculates scoring options using lower % teams also."
+ }break;
+ case 18:{ //Label for what the max score in free lives is.
+ return "Max Free Live Score:"
+ }break;
+ case 9:{ //Tooltip for what the max score in free lives is. (Setting it to 0 forces the calculator to use Rehearsal)
+ return "The maximum score you can get from playing a song using Free Live.
(Use 0 for Rehearsals Only)"
+ }break;
+ case 10:{ //Label for Advanced Settings toggle.
+ return "Advanced Options?"
+ }break;
+ case 11:{ //Tooltip for Advanced Settings toggle.
+ return "Enable voltage & EP limits."
+ }break;
+ case 12:{ //Label for setting the lowest EP where voltage is allowed.
+ return "Use voltage until: "
+ }break;
+ case 13:{ //Label for setting the total amount of voltage the calculator may consume.
+ return "Max Voltage to use:"
+ }break;
+ case 14:{ //Label for setting the Starting EP amount.
+ return "Starting EP:"
+ }break;
+ case 15:{ //Label for setting the final EP amount.
+ return "Target EP:"
+ }break;
+ case 16:{ //The text for the button users click to run the calculator.
+ return "Calculate"
+ }break;
+ case 19:{ //Tip: Here's the Light on EX or Synchrogazer on Hard/EX difficulty are some of the highest scoring songs you can pick.
+ return "Here's the Light on EX or Synchrogazer on Hard/EX difficulty are some of the highest scoring songs you can pick."
+ }break;
+ case 20:{ //Tip: When you get close to the score you need in Free Live, purposely fail the song. Notes are worth 10% their normal value when you have 0 health so you can finish easily.
+ return "When you get close to the score you need in Free Live, purposely fail the song. Notes are worth 10% their normal value when you have 0 health so you can finish easily."
+ }break;
+ case 21:{ //Tip: The "Flexible Team" option gives you the fastest park, but at the expense of more voltage.
+ return "The \"Flexible Team\" option gives you the fastest park, but at the expense of more voltage."
+ }break;
+ case "%INITIAL%":{ //This message is the first thing to display for a normal calculation.
+ //Sample message:
+ /*
+ Calculating from 100000 to 104000 for event type Poker/Raid...
+ (All games are done in Free Live)
+
+ Found a park! 9 steps and 13 voltage required!
+ */
+ //Variables for this message:
+ /*
+ Calculating from %START% to %TARGET% for event type %EVENT%...
+ (All games are done in Free Live)
+
+ Found a park! %STEPS% step%PLURAL_STEPS% and %VOLTAGE% voltage required!
+ */
+ return "Calculating from %START% to %TARGET% for event type %EVENT%...\n\t(All games are done in Free Live)\n\nFound a park! %STEPS% step%PLURAL_STEPS% and %VOLTAGE% voltage required!"
+ }break;
+ case "%STEP%":{ //This message is displayed for each normal voltage step in the process.
+ //Sample message:
+ /*
+ Step 1) Using 5 voltage w/160% team, score between 640000~649999 pts. EP +1480. Remaining:2520 EP
+ */
+ //Variables for this message:
+ /*
+ Step %STEP%) Using %VOLTAGE% voltage w/%PERCENT%% team, score between %LOWSCORE%~%HIGHSCORE% pts. EP +%EPGAIN%. Remaining:%REMAINING% EP
+ */
+ return "Step %STEP%) Using %VOLTAGE% voltage w/%PERCENT%% team, score between %LOWSCORE%~%HIGHSCORE% pts. EP +%EPGAIN%. Remaining:%REMAINING% EP"
+ }break;
+ case "%REHEARSAL%":{ //Similar to above, but for a rehearsal step instead.
+ return "Step %STEP%) Use Rehearsal w/%PERCENT%% team. EP +%EPGAIN%. Remaining:%REMAINING% EP"
+ }break;
+ case "%LARGEGAP%":{ //This message is displayed if the Starting EP and Final EP gap is too big for reasonable calculations.
+ return "Get closer to target score before using parking calculator!";
+ }break;
+ case "%FAILED%":{ //This message is displayed if it's impossible to park.
+ return "Impossible to park using this team!"
+ }break;
+ default:{ //Default to English when translation doesn't exist.
+ return English(str)
+ }
+ }
+ }
\ No newline at end of file
diff --git a/muni.js b/muni.js
index d505a10..4f78bf8 100644
--- a/muni.js
+++ b/muni.js
@@ -1,527 +1,397 @@
-const MAXSTEPS= 10000
-
- function Korean(str) {
- switch (str) {
- case "Hello":{
- return "안녕하세요"
- }break;
- default:{
- return English(str)
- }
- }
- }
-
- function English(str) {
- switch (str) {
- case 1:{ //Tab Title of Webpage
- return "D4DJ Parking Calculator | Powered by Muni"
- }break;
- case 2:{ //Header Title (Top) of Webpage
- return "D4DJ Event Parking Calculator"
- }break;
- case 3:{ //Set up your options (Category Title)
- return "Parking Configuration"
- }break;
- case 4:{ //Selection for event type: Poker/Raid
- return "Poker/Raid"
- }break;
- case 5:{ //Selection for event type: Bingo
- return "Bingo"
- }break;
- case 6:{ //Selection for event type: Medley
- return "Medley"
- }break;
- case 7:{ //Label for team % selector (Include ":")
- return "Event Team Bonus:"
- }break;
- case 17:{ //Label for whether to enable flexible team options.
- return "Flexible Team?"
- }break;
- case 8:{ //Tooltip for flexible team options (mouseover)
- return "If turned on, calculates scoring options using lower % teams also."
- }break;
- case 18:{ //Label for what the max score in free lives is.
- return "Max Free Live Score:"
- }break;
- case 9:{ //Tooltip for what the max score in free lives is. (Setting it to 0 forces the calculator to use Rehearsal)
- return "The maximum score you can get from playing a song using Free Live.
(Use 0 for Rehearsals Only)"
- }break;
- case 10:{ //Label for Advanced Settings toggle.
- return "Advanced Options?"
- }break;
- case 11:{ //Tooltip for Advanced Settings toggle.
- return "Enable voltage & EP limits."
- }break;
- case 12:{ //Label for setting the lowest EP where voltage is allowed.
- return "Use voltage until: "
- }break;
- case 13:{ //Label for setting the total amount of voltage the calculator may consume.
- return "Max Voltage to use:"
- }break;
- case 14:{ //Label for setting the Starting EP amount.
- return "Starting EP:"
- }break;
- case 15:{ //Label for setting the final EP amount.
- return "Target EP:"
- }break;
- case 16:{ //The text for the button users click to run the calculator.
- return "Calculate"
- }break;
- case 19:{ //Tip: Here's the Light on EX or Synchrogazer on Hard/EX difficulty are some of the highest scoring songs you can pick.
- return "Here's the Light on EX or Synchrogazer on Hard/EX difficulty are some of the highest scoring songs you can pick."
- }break;
- case 20:{ //Tip: When you get close to the score you need in Free Live, purposely fail the song. Notes are worth 10% their normal value when you have 0 health so you can finish easily.
- return "When you get close to the score you need in Free Live, purposely fail the song. Notes are worth 10% their normal value when you have 0 health so you can finish easily."
- }break;
- case 21:{ //Tip: The "Flexible Team" option gives you the fastest park, but at the expense of more voltage.
- return "The \"Flexible Team\" option gives you the fastest park, but at the expense of more voltage."
- }break;
- case "%INITIAL%":{ //This message is the first thing to display for a normal calculation.
- //Sample message:
- /*
- Calculating from 100000 to 104000 for event type Poker/Raid...
- (All games are done in Free Live)
-
- Found a park! 9 steps and 13 voltage required!
- */
- //Variables for this message:
- /*
- Calculating from %START% to %TARGET% for event type %EVENT%...
- (All games are done in Free Live)
-
- Found a park! %STEPS% step%PLURAL_STEPS% and %VOLTAGE% voltage required!
- */
- return "Calculating from %START% to %TARGET% for event type %EVENT%...\n\t(All games are done in Free Live)\n\nFound a park! %STEPS% step%PLURAL_STEPS% and %VOLTAGE% voltage required!"
- }break;
- case "%STEP%":{ //This message is displayed for each normal voltage step in the process.
- //Sample message:
- /*
- Step 1) Using 5 voltage w/160% team, score between 640000~649999 pts. EP +1480. Remaining:2520 EP
- */
- //Variables for this message:
- /*
- Step %STEP%) Using %VOLTAGE% voltage w/%PERCENT%% team, score between %LOWSCORE%~%HIGHSCORE% pts. EP +%EPGAIN%. Remaining:%REMAINING% EP
- */
- return "Step %STEP%) Using %VOLTAGE% voltage w/%PERCENT%% team, score between %LOWSCORE%~%HIGHSCORE% pts. EP +%EPGAIN%. Remaining:%REMAINING% EP"
- }break;
- case "%REHEARSAL%":{ //Similar to above, but for a rehearsal step instead.
- return "Step %STEP%) Use Rehearsal w/%PERCENT%% team. EP +%EPGAIN%. Remaining:%REMAINING% EP"
- }break;
- case "%LARGEGAP%":{ //This message is displayed if the Starting EP and Final EP gap is too big for reasonable calculations.
- return "Get closer to target score before using parking calculator!";
- }break;
- case "%FAILED%":{ //This message is displayed if it's impossible to park.
- return "Impossible to park using this team!"
- }break;
- default:{
- return "???"
- }
- }
- }
-
- function Reveal(str) {
- switch (str) {
- case "Hello":{
- return "Hi"
- }break;
- default:{
- return English(str)
- }
- }
- }
-
- function ConvertVariables(str,data) {
- return str
- .replaceAll("%START%",data.start)
- .replaceAll("%TARGET%",data.target)
- .replaceAll("%EVENT%",data.event)
- .replaceAll("%STEPS%",data.steps)
- .replaceAll("%PLURAL_STEPS%",Plural(data.steps))
- .replaceAll("%VOLTAGE%",data.voltage)
- .replaceAll("%STEP%",data.step)
- .replaceAll("%PERCENT%",data.percent)
- .replaceAll("%LOWSCORE%",data.lowscore)
- .replaceAll("%HIGHSCORE%",data.highscore)
- .replaceAll("%EPGAIN%",data.epgain)
- .replaceAll("%REMAINING%",data.remaining)
- }
-
- var LANGUAGE=Reveal
- var LANGUAGELIST={English:English,Korean:Korean}
- var TRANSLATEELEMENTS=100 //Increase as number of translated elements increases.
-
- function Plural(t) {
- return t==1?"":"s"
- }
-
- function ConvertLanguage() {
- for (var i=0;i0) {
- switch (type) {
- case "Bingo":{
- return voltage * Math.floor((1 + bonus)*Math.max(10,Math.floor(score/interval)))
- }break;
- case "Medley":{
- return voltage * Math.floor((1 + bonus)*(10+Math.floor(score/interval)))
- }break;
- case "Poker/Raid":{
- return voltage * Math.floor((1 + bonus)*(50 + Math.floor(score/interval)))
- }break;
- }
- } else {
- return Math.round(bonus*10)+10
- }
- }
-
- function EvenOdd(val) {
- return val%2==0?"even":"odd"
- }
-
- function TryBiggestGain(tbonus) {
- var voltage=5
- for (var i=maxscore;i>=maxscore*0.8;i-=interval) {
- if (start+EPCalc(voltage,i,tbonus)26))) {
- //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
- if (EvenOdd(start+EPCalc(voltage,i,tbonus))==EvenOdd(end-10)) {
- //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
- start+=EPCalc(voltage,i,tbonus)
- flameCount+=voltage
- document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
- /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
- return true
- }
- }
- }
- return false
- }
-
- function TrySmallerGain(voltage,tbonus) {
- for (var i=maxscore;i>=maxscore*0.8;i-=interval) {
- if (start+EPCalc(voltage,i,tbonus)26))) {
- //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
- if (EvenOdd(start+EPCalc(voltage,i,tbonus))==EvenOdd(end-10)||start+EPCalc(voltage,i,tbonus)==end) {
- //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
- start+=EPCalc(voltage,i,tbonus)
- flameCount+=voltage
- document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
- /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
- return true
- }
- }
- }
- return false
- }
-
- function TrySmolGain(voltage,tbonus) {
- for (var i=maxscore;i>=0;i-=interval) {
- if ((EPCalc(voltage,i,tbonus)>=(10+Math.round(bonus*10))&&(start+EPCalc(voltage,i,tbonus)<=end-(10+Math.round(bonus*10))))||((start+EPCalc(voltage,i,tbonus)==end)&&((end-start)%2==1||(end-start)>26))) {
- //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
- if (EvenOdd(start+EPCalc(voltage,i,tbonus))==EvenOdd(end-10)||start+EPCalc(voltage,i,tbonus)==end) {
- //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
- start+=EPCalc(voltage,i,tbonus)
- flameCount+=voltage
- document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
- /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
- return true
- }
- }
- }
- for (var i=maxscore;i>=0;i-=interval) {
- if (EvenOdd(start+EPCalc(voltage,i,tbonus))!=EvenOdd(end-10)&&(((start+EPCalc(voltage,i,tbonus))==end)&&((end-start)%2==1||(end-start)>26))) {
- //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
- //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
- start+=EPCalc(voltage,i,tbonus)
- flameCount+=voltage
- document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
- /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
- return true
- }
- }
- /*for (var i=maxscore;i>=0;i-=interval) {
- if ((start+EPCalc(voltage,i,tbonus))==end) {
- //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
- //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
- start+=EPCalc(voltage,i,tbonus)
- flameCount+=voltage
- document.getElementById("console").value+="Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"
- return true
- }
- }*/
- for (var i=maxscore;i>=0;i-=interval) {
- if (EvenOdd(start+EPCalc(voltage,i,tbonus))!=EvenOdd(end-10)&&(((start+EPCalc(voltage,i,tbonus))==end)&&((end-start)%2==1||(end-start)>26))) {
- //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
- //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
- start+=EPCalc(voltage,i,tbonus)
- flameCount+=voltage
- document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
- /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
- return true
- }
- }
- return false
- }
-
- function TryEqualGain(voltage,tbonus) {
- for (var i=maxscore;i>=0;i-=interval) {
- //document.getElementById("console").value+=(start+EPCalc(voltage,i,tbonus))+"/"+end+"\n"
- if (((start+EPCalc(voltage,i,tbonus))==end)&&((end-start)%2==1||(end-start)>26)) {
- //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
- //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
- start+=EPCalc(voltage,i,tbonus)
- flameCount+=voltage
- document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
- /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
- return true
- }
- }
- if (end==start) {
- return false
- } else {
- return undefined
- }
- }
-
- function TryMatchingRehearsal(tbonus) {
- //document.getElementById("console").value+=(Math.round(tbonus*10))+10
- if (end-start==(Math.round(tbonus*10))+10) {
- var gain=(Math.round(tbonus*10))+10
- start+=gain
- document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:Math.round(tbonus*100),epgain:gain,remaining:end-start})+"\n"
- /*"Step "+(step++)+") Use Rehearsal w/"+Math.round(tbonus*100)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
- return false
- }
- return true
- }
-
- function TryRehearsal(tbonus) {
- if (end==start) {
- return false
- }
- var voltage=0
- if ((end-start)%2!==0) {
- return undefined
- }
-
- if (end-start>(10+Math.round(tbonus*10))+10) {
- var gain=(10+Math.round(tbonus*10))
- start+=gain
- //document.getElementById("console").value+="1)"
- document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:Math.round(tbonus*100),epgain:gain,remaining:end-start})+"\n"
- /*"Step "+(step++)+") Use Rehearsal w/"+Math.round(tbonus*100)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
- return true
- } else
- for (var j=tbonus;j>=0;j-=0.2) {
- result = TryMatchingRehearsal(j)
- if (!result) {
- return false
- }
- }
- if (end-start>=20) {
- var gain=end-start-10
- start+=gain
- //document.getElementById("console").value+="2)"
- document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:((gain-10)*10),epgain:gain,remaining:end-start})+"\n"
- /*"Step "+(step++)+") Use Rehearsal w/"+((gain-10)*10)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
- return true
- } else
- if ((end-start)%10==0) {
- var gain=10
- start+=gain
- //document.getElementById("console").value+="3)"
- document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:0,epgain:gain,remaining:end-start})+"\n"
- /*"Step "+(step++)+") Use Rehearsal w/0% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
- return false
- } else
- {
- var gain=end-start
- if (((gain-10)*10)>=0) {
- start+=gain
- //document.getElementById("console").value+="4)"
- document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:((gain-10)*10),epgain:gain,remaining:end-start})+"\n"
- /*"Step "+(step++)+") Use Rehearsal w/"+((gain-10)*10)+"% team. EP +"+(gain)+". Remaining:"+(end-start)+" EP \n"*/
- return false
- } else {
- return undefined
- }
- }
-
- return false
- /*var voltage=0
- if (end-start>36) {
- start+=26
- document.getElementById("console").value+="Step "+(step++)+") Use Rehearsal w/"+(1.6*100)+"% team. EP +"+EPCalc(voltage,1,1.6)+". Remaining:"+(end-start)+" EP \n"
- return true
- } else
- if (end-start>20) {
- var bonus = (end-start-20)*10
- var gain = end-start-10
- start+=end-start-10
- document.getElementById("console").value+="Step "+(step++)+") Use Rehearsal w/"+(bonus)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"
- if ((bonus/10)%2!=0) {
- return undefined
- } else {
- return true
- }
- } else {
- if (end-start<10||(end-start)%2!=0) {
- return undefined
- }
- var bonus = ((end-start-10)/20)*2
- start+=end-start
- document.getElementById("console").value+="Step "+(step++)+") Use Rehearsal w/"+((bonus)*100)+"% team. EP +"+EPCalc(voltage,1,bonus)+". Remaining:"+(end-start)+" EP \n"
-
- return false
- }
- return true*/
- }
-
- if ((end-start)>1000000) {
- document.getElementById("console").value=
- LANGUAGE("%LARGEGAP%")
- //"Get closer to target score before using parking calculator!"
- }
- else {
- var result=true
- if (maxscore>0) {
- if (flexible) {
- for (var j=bonus;j>=0;j-=0.2) {
- while (TryBiggestGain(j)) {
- //document.getElementById("console").value+=+start+" EP"+"\n"
- }
- for (var i=4;i>0;i--) {
- while (TrySmallerGain(i,j)) {
- //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
- }
- }
- for (var i=5;i>0;i--) {
- while (TrySmolGain(i,j)) {
- //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
- }
- }
- }
- } else {
- while (TryBiggestGain(bonus)) {
- //document.getElementById("console").value+=+start+" EP"+"\n"
- }
- for (var i=4;i>0;i--) {
- while (TrySmallerGain(i,bonus)) {
- //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
- }
- }
- for (var i=5;i>0;i--) {
- while (TrySmolGain(i,bonus)) {
- //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
- }
- }
- }
- }
- for (var j=bonus;j>=0;j-=0.2) {
- result = TryMatchingRehearsal(j)
- if (!result) {
- break;
- }
- }
- if (result) {
- for (var j=1.6;j>=0;j-=0.2) {
- result = TryMatchingRehearsal(j)
- if (!result) {
- break;
- }
- }
- }
- if (result) {
- do {
- if (flexible) {
- for (var j=bonus;j>=0;j-=0.2) {
- var prevstart = 0
- result = TryRehearsal(j)
- if (start!==prevstart) {
- break;
- }
- }
- } else {
- result = TryRehearsal(bonus)
- }
- } while (result);
- }
-
-
- if (maxscore>0) {
- if (flexible) {
- for (var i=5;i>0;i--) {
- for (var j=bonus;j>=0;j-=0.2) {
- while (result = TryEqualGain(i,j)) {
- //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
- }
- }
- }
- } else {
- for (var i=5;i>0;i--) {
- while (result = TryEqualGain(i,bonus)) {
- //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
- }
- }
- }
- }
-
- function ConvertEvent(str) {
- switch (str) {
- case "Poker/Raid":{
- return LANGUAGE(4)
- }break;
- case "Bingo":{
- return LANGUAGE(5)
- }break;
- case "Medley":{
- return LANGUAGE(6)
- }break;
- }
- }
-
- start=end
- if (result===undefined) {
- document.getElementById("console").value=LANGUAGE("%FAILED%")
- //"Impossible to park using this team!"
- } else {
- document.getElementById("console").value=ConvertVariables(LANGUAGE("%INITIAL%"),{
- start:originalTarget,target:end,event:ConvertEvent(type),steps:(step-1),voltage:flameCount})+"\n\n"+document.getElementById("console").value
- /*"Calculating from "+originalTarget+" to "+end+" for event type "+type+"...\n\t(All games are done in Free Live)\n\nFound a park! "+(step-1)+" step"+Plural(step-1)+" and "+flameCount+" voltage required!\n\n"+document.getElementById("console").value*/
- }
- //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
- step++
- }
- }
+const MAXSTEPS= 10000
+
+ function ConvertVariables(str,data) {
+ return str
+ .replaceAll("%START%",data.start)
+ .replaceAll("%TARGET%",data.target)
+ .replaceAll("%EVENT%",data.event)
+ .replaceAll("%STEPS%",data.steps)
+ .replaceAll("%PLURAL_STEPS%",Plural(data.steps))
+ .replaceAll("%VOLTAGE%",data.voltage)
+ .replaceAll("%STEP%",data.step)
+ .replaceAll("%PERCENT%",data.percent)
+ .replaceAll("%LOWSCORE%",data.lowscore)
+ .replaceAll("%HIGHSCORE%",data.highscore)
+ .replaceAll("%EPGAIN%",data.epgain)
+ .replaceAll("%REMAINING%",data.remaining)
+ }
+
+ var LANGUAGE=English
+ var LANGUAGELIST={English:{name:"English",translation:English},Japanese:{name:"Japanese",translation:Japanese}/*,Korean:{name:"한국어",translation:Korean}*/}
+ var TRANSLATEELEMENTS=100 //Increase as number of translated elements increases.
+
+ function Plural(t) {
+ return t==1?"":"s"
+ }
+
+ function ConvertLanguage() {
+ for (var i=0;i0) {
+ switch (type) {
+ case "Bingo":{
+ return voltage * Math.floor((1 + bonus)*Math.max(10,Math.floor(score/interval)))
+ }break;
+ case "Medley":{
+ return voltage * Math.floor((1 + bonus)*(10+Math.floor(score/interval)))
+ }break;
+ case "Poker/Raid":{
+ return voltage * Math.floor((1 + bonus)*(50 + Math.floor(score/interval)))
+ }break;
+ }
+ } else {
+ return Math.round(bonus*10)+10
+ }
+ }
+
+ function EvenOdd(val) {
+ return val%2==0?"even":"odd"
+ }
+
+ function TryBiggestGain(tbonus) {
+ var voltage=5
+ for (var i=maxscore;i>=maxscore*0.8;i-=interval) {
+ if (start+EPCalc(voltage,i,tbonus)26))) {
+ //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
+ if (EvenOdd(start+EPCalc(voltage,i,tbonus))==EvenOdd(end-10)) {
+ //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
+ start+=EPCalc(voltage,i,tbonus)
+ flameCount+=voltage
+ document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
+ /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
+ return true
+ }
+ }
+ }
+ return false
+ }
+
+ function TrySmallerGain(voltage,tbonus) {
+ for (var i=maxscore;i>=maxscore*0.8;i-=interval) {
+ if (start+EPCalc(voltage,i,tbonus)26))) {
+ //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
+ if (EvenOdd(start+EPCalc(voltage,i,tbonus))==EvenOdd(end-10)||start+EPCalc(voltage,i,tbonus)==end) {
+ //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
+ start+=EPCalc(voltage,i,tbonus)
+ flameCount+=voltage
+ document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
+ /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
+ return true
+ }
+ }
+ }
+ return false
+ }
+
+ function TrySmolGain(voltage,tbonus) {
+ for (var i=maxscore;i>=0;i-=interval) {
+ if ((EPCalc(voltage,i,tbonus)>=(10+Math.round(bonus*10))&&(start+EPCalc(voltage,i,tbonus)<=end-(10+Math.round(bonus*10))))||((start+EPCalc(voltage,i,tbonus)==end)&&((end-start)%2==1||(end-start)>26))) {
+ //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
+ if (EvenOdd(start+EPCalc(voltage,i,tbonus))==EvenOdd(end-10)||start+EPCalc(voltage,i,tbonus)==end) {
+ //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
+ start+=EPCalc(voltage,i,tbonus)
+ flameCount+=voltage
+ document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
+ /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
+ return true
+ }
+ }
+ }
+ for (var i=maxscore;i>=0;i-=interval) {
+ if (EvenOdd(start+EPCalc(voltage,i,tbonus))!=EvenOdd(end-10)&&(((start+EPCalc(voltage,i,tbonus))==end)&&((end-start)%2==1||(end-start)>26))) {
+ //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
+ //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
+ start+=EPCalc(voltage,i,tbonus)
+ flameCount+=voltage
+ document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
+ /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
+ return true
+ }
+ }
+ /*for (var i=maxscore;i>=0;i-=interval) {
+ if ((start+EPCalc(voltage,i,tbonus))==end) {
+ //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
+ //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
+ start+=EPCalc(voltage,i,tbonus)
+ flameCount+=voltage
+ document.getElementById("console").value+="Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"
+ return true
+ }
+ }*/
+ for (var i=maxscore;i>=0;i-=interval) {
+ if (EvenOdd(start+EPCalc(voltage,i,tbonus))!=EvenOdd(end-10)&&(((start+EPCalc(voltage,i,tbonus))==end)&&((end-start)%2==1||(end-start)>26))) {
+ //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
+ //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
+ start+=EPCalc(voltage,i,tbonus)
+ flameCount+=voltage
+ document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
+ /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
+ return true
+ }
+ }
+ return false
+ }
+
+ function TryEqualGain(voltage,tbonus) {
+ for (var i=maxscore;i>=0;i-=interval) {
+ //document.getElementById("console").value+=(start+EPCalc(voltage,i,tbonus))+"/"+end+"\n"
+ if (((start+EPCalc(voltage,i,tbonus))==end)&&((end-start)%2==1||(end-start)>26)) {
+ //document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n"
+ //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
+ start+=EPCalc(voltage,i,tbonus)
+ flameCount+=voltage
+ document.getElementById("console").value+=ConvertVariables(LANGUAGE("%STEP%"),{step:step++,voltage:voltage,percent:Math.round(tbonus*100),lowscore:i,highscore:(i+interval-1),epgain:EPCalc(voltage,i,tbonus),remaining:end-start})+"\n"
+ /*"Step "+(step++)+") Using "+voltage+" voltage w/"+Math.round(tbonus*100)+"% team, score between "+i+"~"+(i+interval-1)+" pts. EP +"+EPCalc(voltage,i,tbonus)+". Remaining:"+(end-start)+" EP \n"*/
+ return true
+ }
+ }
+ if (end==start) {
+ return false
+ } else {
+ return undefined
+ }
+ }
+
+ function TryMatchingRehearsal(tbonus) {
+ //document.getElementById("console").value+=(Math.round(tbonus*10))+10
+ if (end-start==(Math.round(tbonus*10))+10) {
+ var gain=(Math.round(tbonus*10))+10
+ start+=gain
+ document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:Math.round(tbonus*100),epgain:gain,remaining:end-start})+"\n"
+ /*"Step "+(step++)+") Use Rehearsal w/"+Math.round(tbonus*100)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
+ return false
+ }
+ return true
+ }
+
+ function TryRehearsal(tbonus) {
+ if (end==start) {
+ return false
+ }
+ var voltage=0
+ if ((end-start)%2!==0) {
+ return undefined
+ }
+
+ if (end-start>(10+Math.round(tbonus*10))+10) {
+ var gain=(10+Math.round(tbonus*10))
+ start+=gain
+ //document.getElementById("console").value+="1)"
+ document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:Math.round(tbonus*100),epgain:gain,remaining:end-start})+"\n"
+ /*"Step "+(step++)+") Use Rehearsal w/"+Math.round(tbonus*100)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
+ return true
+ } else
+ for (var j=tbonus;j>=0;j-=0.2) {
+ result = TryMatchingRehearsal(j)
+ if (!result) {
+ return false
+ }
+ }
+ if (end-start>=20) {
+ var gain=end-start-10
+ start+=gain
+ //document.getElementById("console").value+="2)"
+ document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:((gain-10)*10),epgain:gain,remaining:end-start})+"\n"
+ /*"Step "+(step++)+") Use Rehearsal w/"+((gain-10)*10)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
+ return true
+ } else
+ if ((end-start)%10==0) {
+ var gain=10
+ start+=gain
+ //document.getElementById("console").value+="3)"
+ document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:0,epgain:gain,remaining:end-start})+"\n"
+ /*"Step "+(step++)+") Use Rehearsal w/0% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
+ return false
+ } else
+ {
+ var gain=end-start
+ if (((gain-10)*10)>=0) {
+ start+=gain
+ //document.getElementById("console").value+="4)"
+ document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:((gain-10)*10),epgain:gain,remaining:end-start})+"\n"
+ /*"Step "+(step++)+") Use Rehearsal w/"+((gain-10)*10)+"% team. EP +"+(gain)+". Remaining:"+(end-start)+" EP \n"*/
+ return false
+ } else {
+ return undefined
+ }
+ }
+
+ return false
+ /*var voltage=0
+ if (end-start>36) {
+ start+=26
+ document.getElementById("console").value+="Step "+(step++)+") Use Rehearsal w/"+(1.6*100)+"% team. EP +"+EPCalc(voltage,1,1.6)+". Remaining:"+(end-start)+" EP \n"
+ return true
+ } else
+ if (end-start>20) {
+ var bonus = (end-start-20)*10
+ var gain = end-start-10
+ start+=end-start-10
+ document.getElementById("console").value+="Step "+(step++)+") Use Rehearsal w/"+(bonus)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"
+ if ((bonus/10)%2!=0) {
+ return undefined
+ } else {
+ return true
+ }
+ } else {
+ if (end-start<10||(end-start)%2!=0) {
+ return undefined
+ }
+ var bonus = ((end-start-10)/20)*2
+ start+=end-start
+ document.getElementById("console").value+="Step "+(step++)+") Use Rehearsal w/"+((bonus)*100)+"% team. EP +"+EPCalc(voltage,1,bonus)+". Remaining:"+(end-start)+" EP \n"
+
+ return false
+ }
+ return true*/
+ }
+
+ if ((end-start)>1000000) {
+ document.getElementById("console").value=
+ LANGUAGE("%LARGEGAP%")
+ //"Get closer to target score before using parking calculator!"
+ }
+ else {
+ var result=true
+ if (maxscore>0) {
+ if (flexible) {
+ for (var j=bonus;j>=0;j-=0.2) {
+ while (TryBiggestGain(j)) {
+ //document.getElementById("console").value+=+start+" EP"+"\n"
+ }
+ for (var i=4;i>0;i--) {
+ while (TrySmallerGain(i,j)) {
+ //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
+ }
+ }
+ for (var i=5;i>0;i--) {
+ while (TrySmolGain(i,j)) {
+ //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
+ }
+ }
+ }
+ } else {
+ while (TryBiggestGain(bonus)) {
+ //document.getElementById("console").value+=+start+" EP"+"\n"
+ }
+ for (var i=4;i>0;i--) {
+ while (TrySmallerGain(i,bonus)) {
+ //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
+ }
+ }
+ for (var i=5;i>0;i--) {
+ while (TrySmolGain(i,bonus)) {
+ //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
+ }
+ }
+ }
+ }
+ for (var j=bonus;j>=0;j-=0.2) {
+ result = TryMatchingRehearsal(j)
+ if (!result) {
+ break;
+ }
+ }
+ if (result) {
+ for (var j=1.6;j>=0;j-=0.2) {
+ result = TryMatchingRehearsal(j)
+ if (!result) {
+ break;
+ }
+ }
+ }
+ if (result) {
+ do {
+ if (flexible) {
+ for (var j=bonus;j>=0;j-=0.2) {
+ var prevstart = 0
+ result = TryRehearsal(j)
+ if (start!==prevstart) {
+ break;
+ }
+ }
+ } else {
+ result = TryRehearsal(bonus)
+ }
+ } while (result);
+ }
+
+
+ if (maxscore>0) {
+ if (flexible) {
+ for (var i=5;i>0;i--) {
+ for (var j=bonus;j>=0;j-=0.2) {
+ while (result = TryEqualGain(i,j)) {
+ //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
+ }
+ }
+ }
+ } else {
+ for (var i=5;i>0;i--) {
+ while (result = TryEqualGain(i,bonus)) {
+ //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
+ }
+ }
+ }
+ }
+
+ function ConvertEvent(str) {
+ switch (str) {
+ case "Poker/Raid":{
+ return LANGUAGE(4)
+ }break;
+ case "Bingo":{
+ return LANGUAGE(5)
+ }break;
+ case "Medley":{
+ return LANGUAGE(6)
+ }break;
+ }
+ }
+
+ start=end
+ if (result===undefined) {
+ document.getElementById("console").value=LANGUAGE("%FAILED%")
+ //"Impossible to park using this team!"
+ } else {
+ document.getElementById("console").value=ConvertVariables(LANGUAGE("%INITIAL%"),{
+ start:originalTarget,target:end,event:ConvertEvent(type),steps:(step-1),voltage:flameCount})+"\n\n"+document.getElementById("console").value
+ /*"Calculating from "+originalTarget+" to "+end+" for event type "+type+"...\n\t(All games are done in Free Live)\n\nFound a park! "+(step-1)+" step"+Plural(step-1)+" and "+flameCount+" voltage required!\n\n"+document.getElementById("console").value*/
+ }
+ //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
+ step++
+ }
+ }