Compare commits

...

7 Commits

  1. 166
      muni.css
  2. 794
      muni.js
  3. 191
      parkingcalc.html

@ -1,74 +1,94 @@
* { * {
font-family: "Comic Sans MS", "Comic Sans"; font-family: "Comic Sans MS", "Comic Sans";
box-sizing: border-box; box-sizing: border-box;
} }
body::before { body::before {
content: ""; content: "";
position: fixed; position: fixed;
width: 100vw; width: 100vw;
height: 100vh; height: 100vh;
top: 0; top: 0;
left: 0; left: 0;
background-image: url("https://cdn.discordapp.com/emojis/744938186983080126.png?v=1"); background-image: url("https://cdn.discordapp.com/emojis/744938186983080126.png?v=1");
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center calc(62% + 2%); background-position: center calc(62% + 2%);
z-index: -1; z-index: -1;
opacity: 0.25; opacity: 0.25;
} }
textarea { textarea {
background-color: transparent; background-color: transparent;
width: 100%; width: 100%;
} }
textarea:disabled { textarea:disabled {
color: black; color: black;
} }
/* Tooltip container */ /* Tooltip container */
.tooltip { .tooltip {
position: relative; position: relative;
display: inline-block; display: inline-block;
border-bottom: 1px dotted black; /* If you want dots under the hoverable text */ border-bottom: 1px dotted black; /* If you want dots under the hoverable text */
} }
/* Tooltip text */ /* Tooltip text */
.tooltip .tooltiptext { .tooltip .tooltiptext {
visibility: hidden; visibility: hidden;
width: 240px; width: 240px;
background-color: rgba(62,62,62,0.91); background-color: rgba(62,62,62,0.91);
color: #fff; color: #fff;
text-align: center; text-align: center;
padding: 5px 5px 5px 5px; padding: 5px 5px 5px 5px;
border-radius: 6px; border-radius: 6px;
/* Position the tooltip text */ /* Position the tooltip text */
position: absolute; position: absolute;
z-index: 1; z-index: 1;
top: -100%; top: -100%;
left: 105%; left: 105%;
/* Fade in tooltip */ /* Fade in tooltip */
opacity: 0; opacity: 0;
transition: opacity 0.3s; transition: opacity 0.3s;
} }
/* Tooltip arrow */ /* Tooltip arrow */
.tooltip .tooltiptext::after { .tooltip .tooltiptext::after {
content: " "; content: " ";
position: absolute; position: absolute;
top: 50%; top: 50%;
right: 100%; /* To the left of the tooltip */ right: 100%; /* To the left of the tooltip */
margin-top: -5px; margin-top: -5px;
border-width: 5px; border-width: 5px;
border-style: solid; border-style: solid;
border-color: transparent rgba(62,62,62,0.91) transparent transparent; border-color: transparent rgba(62,62,62,0.91) transparent transparent;
} }
/* Show the tooltip text when you mouse over the tooltip container */ /* Show the tooltip text when you mouse over the tooltip container */
.tooltip:hover .tooltiptext { .tooltip:hover .tooltiptext {
visibility: visible; visibility: visible;
opacity: 1; opacity: 1;
}
.grid{
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 20px;
}
.munigrid{
border-left: 1px dotted #000;
border-right: 1px dotted #000;
}
.munigrid:nth-child(1){
border-left:none;
}
.munigrid:nth-child(even){
border-left:none;
border-right:none;
} }

@ -1,397 +1,397 @@
const MAXSTEPS= 10000 const MAXSTEPS= 10000
function ConvertVariables(str,data) { function ConvertVariables(str,data) {
return str return str
.replaceAll("%START%",data.start) .replaceAll("%START%",data.start)
.replaceAll("%TARGET%",data.target) .replaceAll("%TARGET%",data.target)
.replaceAll("%EVENT%",data.event) .replaceAll("%EVENT%",data.event)
.replaceAll("%STEPS%",data.steps) .replaceAll("%STEPS%",data.steps)
.replaceAll("%PLURAL_STEPS%",Plural(data.steps)) .replaceAll("%PLURAL_STEPS%",Plural(data.steps))
.replaceAll("%VOLTAGE%",data.voltage) .replaceAll("%VOLTAGE%",data.voltage)
.replaceAll("%STEP%",data.step) .replaceAll("%STEP%",data.step)
.replaceAll("%PERCENT%",data.percent) .replaceAll("%PERCENT%",data.percent)
.replaceAll("%LOWSCORE%",data.lowscore) .replaceAll("%LOWSCORE%",data.lowscore)
.replaceAll("%HIGHSCORE%",data.highscore) .replaceAll("%HIGHSCORE%",data.highscore)
.replaceAll("%EPGAIN%",data.epgain) .replaceAll("%EPGAIN%",data.epgain)
.replaceAll("%REMAINING%",data.remaining) .replaceAll("%REMAINING%",data.remaining)
} }
var LANGUAGE=English var LANGUAGE=English
var LANGUAGELIST={English:{name:"English",translation:English},Japanese:{name:"Japanese",translation:Japanese}/*,Korean:{name:"한국어",translation:Korean}*/} 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. var TRANSLATEELEMENTS=100 //Increase as number of translated elements increases.
function Plural(t) { function Plural(t) {
return t==1?"":"s" return t==1?"":"s"
} }
function ConvertLanguage() { function ConvertLanguage() {
for (var i=0;i<TRANSLATEELEMENTS;i++) { for (var i=0;i<TRANSLATEELEMENTS;i++) {
var e = document.getElementsByClassName("translate"+i)[0]; var e = document.getElementsByClassName("translate"+i)[0];
if (e) { if (e) {
e.innerHTML=LANGUAGE(i) e.innerHTML=LANGUAGE(i)
} }
//document.getElementById("console").value+=LANGUAGE(e.innerHTML)+"\n" //document.getElementById("console").value+=LANGUAGE(e.innerHTML)+"\n"
} }
} }
ConvertLanguage() ConvertLanguage()
function toggle(){ function toggle(){
//document.getElementById("console").value+=JSON.stringify(document.getElementById("advanced")) //document.getElementById("console").value+=JSON.stringify(document.getElementById("advanced"))
document.getElementById("advanced2").style.visibility=document.getElementById("advanced").checked?"visible":"hidden" document.getElementById("advanced2").style.visibility=document.getElementById("advanced").checked?"visible":"hidden"
} }
function test(){ function test(){
var start = Math.abs(Math.max(0,Number(document.getElementById("starting").value))) var start = Math.abs(Math.max(0,Number(document.getElementById("starting").value)))
var end = Math.abs(Math.max(0,Number(document.getElementById("ending").value))) var end = Math.abs(Math.max(0,Number(document.getElementById("ending").value)))
var bonus = Number(document.getElementById("team").value) var bonus = Number(document.getElementById("team").value)
var type = (document.getElementById("Bingo").checked?"Bingo": var type = (document.getElementById("Bingo").checked?"Bingo":
document.getElementById("Poker").checked?"Poker/Raid": document.getElementById("Poker").checked?"Poker/Raid":
"Medley") "Medley")
var flexible = document.getElementById("flexible").checked var flexible = document.getElementById("flexible").checked
//document.getElementById("console").value=flexible+"...\n\n" //document.getElementById("console").value=flexible+"...\n\n"
var step=1 var step=1
var flameCount=0 var flameCount=0
var originalTarget=start var originalTarget=start
document.getElementById("console").value="" document.getElementById("console").value=""
var interval = (type=="Medley")?15000:10000 var interval = (type=="Medley")?15000:10000
var maxscore = Math.floor(Math.abs(Math.min(5000000,Math.max(0,Number(document.getElementById("maxscore").value))))/interval)*interval var maxscore = Math.floor(Math.abs(Math.min(5000000,Math.max(0,Number(document.getElementById("maxscore").value))))/interval)*interval
function EPCalc(voltage,score,bonus) { function EPCalc(voltage,score,bonus) {
if (voltage>0) { if (voltage>0) {
switch (type) { switch (type) {
case "Bingo":{ case "Bingo":{
return voltage * Math.floor((1 + bonus)*Math.max(10,Math.floor(score/interval))) return voltage * Math.floor((1 + bonus)*Math.max(10,Math.floor(score/interval)))
}break; }break;
case "Medley":{ case "Medley":{
return voltage * Math.floor((1 + bonus)*(10+Math.floor(score/interval))) return voltage * Math.floor((1 + bonus)*(10+Math.floor(score/interval)))
}break; }break;
case "Poker/Raid":{ case "Poker/Raid":{
return voltage * Math.floor((1 + bonus)*(50 + Math.floor(score/interval))) return voltage * Math.floor((1 + bonus)*(50 + Math.floor(score/interval)))
}break; }break;
} }
} else { } else {
return Math.round(bonus*10)+10 return Math.round(bonus*10)+10
} }
} }
function EvenOdd(val) { function EvenOdd(val) {
return val%2==0?"even":"odd" return val%2==0?"even":"odd"
} }
function TryBiggestGain(tbonus) { function TryBiggestGain(tbonus) {
var voltage=5 var voltage=5
for (var i=maxscore;i>=maxscore*0.8;i-=interval) { for (var i=maxscore;i>=maxscore*0.8;i-=interval) {
if (start+EPCalc(voltage,i,tbonus)<end-10||((start+EPCalc(voltage,i,tbonus)==end)&&((end-start)%2==1||(end-start)>26))) { if (start+EPCalc(voltage,i,tbonus)<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+="Ending value needs to be "+EvenOdd(end-10)+"\n"
if (EvenOdd(start+EPCalc(voltage,i,tbonus))==EvenOdd(end-10)) { if (EvenOdd(start+EPCalc(voltage,i,tbonus))==EvenOdd(end-10)) {
//document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n" //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
start+=EPCalc(voltage,i,tbonus) start+=EPCalc(voltage,i,tbonus)
flameCount+=voltage 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" 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"*/ /*"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 true
} }
} }
} }
return false return false
} }
function TrySmallerGain(voltage,tbonus) { function TrySmallerGain(voltage,tbonus) {
for (var i=maxscore;i>=maxscore*0.8;i-=interval) { for (var i=maxscore;i>=maxscore*0.8;i-=interval) {
if (start+EPCalc(voltage,i,tbonus)<end-10||((start+EPCalc(voltage,i,tbonus)==end)&&((end-start)%2==1||(end-start)>26))) { if (start+EPCalc(voltage,i,tbonus)<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+="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) { 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" //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
start+=EPCalc(voltage,i,tbonus) start+=EPCalc(voltage,i,tbonus)
flameCount+=voltage 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" 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"*/ /*"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 true
} }
} }
} }
return false return false
} }
function TrySmolGain(voltage,tbonus) { function TrySmolGain(voltage,tbonus) {
for (var i=maxscore;i>=0;i-=interval) { 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))) { 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" //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) { 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" //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
start+=EPCalc(voltage,i,tbonus) start+=EPCalc(voltage,i,tbonus)
flameCount+=voltage 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" 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"*/ /*"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 true
} }
} }
} }
for (var i=maxscore;i>=0;i-=interval) { 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))) { 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+="Ending value needs to be "+EvenOdd(end-10)+"\n"
//document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n" //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
start+=EPCalc(voltage,i,tbonus) start+=EPCalc(voltage,i,tbonus)
flameCount+=voltage 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" 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"*/ /*"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 true
} }
} }
/*for (var i=maxscore;i>=0;i-=interval) { /*for (var i=maxscore;i>=0;i-=interval) {
if ((start+EPCalc(voltage,i,tbonus))==end) { if ((start+EPCalc(voltage,i,tbonus))==end) {
//document.getElementById("console").value+="Ending value needs to be "+EvenOdd(end-10)+"\n" //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" //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
start+=EPCalc(voltage,i,tbonus) start+=EPCalc(voltage,i,tbonus)
flameCount+=voltage 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" 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 return true
} }
}*/ }*/
for (var i=maxscore;i>=0;i-=interval) { 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))) { 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+="Ending value needs to be "+EvenOdd(end-10)+"\n"
//document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n" //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
start+=EPCalc(voltage,i,tbonus) start+=EPCalc(voltage,i,tbonus)
flameCount+=voltage 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" 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"*/ /*"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 true
} }
} }
return false return false
} }
function TryEqualGain(voltage,tbonus) { function TryEqualGain(voltage,tbonus) {
for (var i=maxscore;i>=0;i-=interval) { for (var i=maxscore;i>=0;i-=interval) {
//document.getElementById("console").value+=(start+EPCalc(voltage,i,tbonus))+"/"+end+"\n" //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)) { 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+="Ending value needs to be "+EvenOdd(end-10)+"\n"
//document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n" //document.getElementById("console").value+=EvenOdd(start+EPCalc(voltage,i,tbonus))+"/"+EvenOdd(end-10)+"\n"
start+=EPCalc(voltage,i,tbonus) start+=EPCalc(voltage,i,tbonus)
flameCount+=voltage 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" 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"*/ /*"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 true
} }
} }
if (end==start) { if (end==start) {
return false return false
} else { } else {
return undefined return undefined
} }
} }
function TryMatchingRehearsal(tbonus) { function TryMatchingRehearsal(tbonus) {
//document.getElementById("console").value+=(Math.round(tbonus*10))+10 //document.getElementById("console").value+=(Math.round(tbonus*10))+10
if (end-start==(Math.round(tbonus*10))+10) { if (end-start==(Math.round(tbonus*10))+10) {
var gain=(Math.round(tbonus*10))+10 var gain=(Math.round(tbonus*10))+10
start+=gain start+=gain
document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:Math.round(tbonus*100),epgain:gain,remaining:end-start})+"\n" 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"*/ /*"Step "+(step++)+") Use Rehearsal w/"+Math.round(tbonus*100)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
return false return false
} }
return true return true
} }
function TryRehearsal(tbonus) { function TryRehearsal(tbonus) {
if (end==start) { if (end==start) {
return false return false
} }
var voltage=0 var voltage=0
if ((end-start)%2!==0) { if ((end-start)%2!==0) {
return undefined return undefined
} }
if (end-start>(10+Math.round(tbonus*10))+10) { if (end-start>(10+Math.round(tbonus*10))+10) {
var gain=(10+Math.round(tbonus*10)) var gain=(10+Math.round(tbonus*10))
start+=gain start+=gain
//document.getElementById("console").value+="1)" //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" 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"*/ /*"Step "+(step++)+") Use Rehearsal w/"+Math.round(tbonus*100)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
return true return true
} else } else
for (var j=tbonus;j>=0;j-=0.2) { for (var j=tbonus;j>=0;j-=0.2) {
result = TryMatchingRehearsal(j) result = TryMatchingRehearsal(j)
if (!result) { if (!result) {
return false return false
} }
} }
if (end-start>=20) { if (end-start>=20) {
var gain=end-start-10 var gain=end-start-10
start+=gain start+=gain
//document.getElementById("console").value+="2)" //document.getElementById("console").value+="2)"
document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:((gain-10)*10),epgain:gain,remaining:end-start})+"\n" 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"*/ /*"Step "+(step++)+") Use Rehearsal w/"+((gain-10)*10)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
return true return true
} else } else
if ((end-start)%10==0) { if ((end-start)%10==0) {
var gain=10 var gain=10
start+=gain start+=gain
//document.getElementById("console").value+="3)" //document.getElementById("console").value+="3)"
document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:0,epgain:gain,remaining:end-start})+"\n" 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"*/ /*"Step "+(step++)+") Use Rehearsal w/0% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"*/
return false return false
} else } else
{ {
var gain=end-start var gain=end-start
if (((gain-10)*10)>=0) { if (((gain-10)*10)>=0) {
start+=gain start+=gain
//document.getElementById("console").value+="4)" //document.getElementById("console").value+="4)"
document.getElementById("console").value+=ConvertVariables(LANGUAGE("%REHEARSAL%"),{step:step++,percent:((gain-10)*10),epgain:gain,remaining:end-start})+"\n" 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"*/ /*"Step "+(step++)+") Use Rehearsal w/"+((gain-10)*10)+"% team. EP +"+(gain)+". Remaining:"+(end-start)+" EP \n"*/
return false return false
} else { } else {
return undefined return undefined
} }
} }
return false return false
/*var voltage=0 /*var voltage=0
if (end-start>36) { if (end-start>36) {
start+=26 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" 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 return true
} else } else
if (end-start>20) { if (end-start>20) {
var bonus = (end-start-20)*10 var bonus = (end-start-20)*10
var gain = end-start-10 var gain = end-start-10
start+=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" document.getElementById("console").value+="Step "+(step++)+") Use Rehearsal w/"+(bonus)+"% team. EP +"+gain+". Remaining:"+(end-start)+" EP \n"
if ((bonus/10)%2!=0) { if ((bonus/10)%2!=0) {
return undefined return undefined
} else { } else {
return true return true
} }
} else { } else {
if (end-start<10||(end-start)%2!=0) { if (end-start<10||(end-start)%2!=0) {
return undefined return undefined
} }
var bonus = ((end-start-10)/20)*2 var bonus = ((end-start-10)/20)*2
start+=end-start 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" 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 false
} }
return true*/ return true*/
} }
if ((end-start)>1000000) { if ((end-start)>1000000) {
document.getElementById("console").value= document.getElementById("console").value=
LANGUAGE("%LARGEGAP%") LANGUAGE("%LARGEGAP%")
//"Get closer to target score before using parking calculator!" //"Get closer to target score before using parking calculator!"
} }
else { else {
var result=true var result=true
if (maxscore>0) { if (maxscore>0) {
if (flexible) { if (flexible) {
for (var j=bonus;j>=0;j-=0.2) { for (var j=bonus;j>=0;j-=0.2) {
while (TryBiggestGain(j)) { while (TryBiggestGain(j)) {
//document.getElementById("console").value+=+start+" EP"+"\n" //document.getElementById("console").value+=+start+" EP"+"\n"
} }
for (var i=4;i>0;i--) { for (var i=4;i>0;i--) {
while (TrySmallerGain(i,j)) { while (TrySmallerGain(i,j)) {
//document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n" //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
} }
} }
for (var i=5;i>0;i--) { for (var i=5;i>0;i--) {
while (TrySmolGain(i,j)) { while (TrySmolGain(i,j)) {
//document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n" //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
} }
} }
} }
} else { } else {
while (TryBiggestGain(bonus)) { while (TryBiggestGain(bonus)) {
//document.getElementById("console").value+=+start+" EP"+"\n" //document.getElementById("console").value+=+start+" EP"+"\n"
} }
for (var i=4;i>0;i--) { for (var i=4;i>0;i--) {
while (TrySmallerGain(i,bonus)) { while (TrySmallerGain(i,bonus)) {
//document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n" //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
} }
} }
for (var i=5;i>0;i--) { for (var i=5;i>0;i--) {
while (TrySmolGain(i,bonus)) { while (TrySmolGain(i,bonus)) {
//document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n" //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
} }
} }
} }
} }
for (var j=bonus;j>=0;j-=0.2) { for (var j=bonus;j>=0;j-=0.2) {
result = TryMatchingRehearsal(j) result = TryMatchingRehearsal(j)
if (!result) { if (!result) {
break; break;
} }
} }
if (result) { if (result) {
for (var j=1.6;j>=0;j-=0.2) { for (var j=1.6;j>=0;j-=0.2) {
result = TryMatchingRehearsal(j) result = TryMatchingRehearsal(j)
if (!result) { if (!result) {
break; break;
} }
} }
} }
if (result) { if (result) {
do { do {
if (flexible) { if (flexible) {
for (var j=bonus;j>=0;j-=0.2) { for (var j=bonus;j>=0;j-=0.2) {
var prevstart = 0 var prevstart = 0
result = TryRehearsal(j) result = TryRehearsal(j)
if (start!==prevstart) { if (start!==prevstart) {
break; break;
} }
} }
} else { } else {
result = TryRehearsal(bonus) result = TryRehearsal(bonus)
} }
} while (result); } while (result);
} }
if (maxscore>0) { if (maxscore>0) {
if (flexible) { if (flexible) {
for (var i=5;i>0;i--) { for (var i=5;i>0;i--) {
for (var j=bonus;j>=0;j-=0.2) { for (var j=bonus;j>=0;j-=0.2) {
while (result = TryEqualGain(i,j)) { while (result = TryEqualGain(i,j)) {
//document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n" //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
} }
} }
} }
} else { } else {
for (var i=5;i>0;i--) { for (var i=5;i>0;i--) {
while (result = TryEqualGain(i,bonus)) { while (result = TryEqualGain(i,bonus)) {
//document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n" //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
} }
} }
} }
} }
function ConvertEvent(str) { function ConvertEvent(str) {
switch (str) { switch (str) {
case "Poker/Raid":{ case "Poker/Raid":{
return LANGUAGE(4) return LANGUAGE(4)
}break; }break;
case "Bingo":{ case "Bingo":{
return LANGUAGE(5) return LANGUAGE(5)
}break; }break;
case "Medley":{ case "Medley":{
return LANGUAGE(6) return LANGUAGE(6)
}break; }break;
} }
} }
start=end start=end
if (result===undefined) { if (result===undefined) {
document.getElementById("console").value=LANGUAGE("%FAILED%") document.getElementById("console").value=LANGUAGE("%FAILED%")
//"Impossible to park using this team!" //"Impossible to park using this team!"
} else { } else {
document.getElementById("console").value=ConvertVariables(LANGUAGE("%INITIAL%"),{ 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 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*/ /*"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" //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
step++ step++
} }
} }

@ -1,87 +1,104 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="muni.css" /> <link rel="stylesheet" href="muni.css" />
<title>D4DJ Parking Calculator | Powered by Muni</title> <title class="translate1">D4DJ Parking Calculator | Powered by Muni</title>
<script src="english.js"></script> <script src="english.js"></script>
<script src="japanese.js"></script> <script src="japanese.js"></script>
<script src="muni.js"></script> </head>
</head> <body>
<body> <h1 class="translate2">D4DJ Event Parking Calculator</h1>
<h1>D4DJ Event Parking Calculator</h1>
<fieldset>
<fieldset> <legend class="translate3">Parking Configuration</legend>
<legend>Parking Configuration</legend> <input type="radio" id="Poker" name="type" value="Poker" checked />
<input type="radio" id="Poker" name="type" value="Poker" checked /> <label for="Poker" class="translate4">Poker/Raid</label>
<label for="Poker">Poker/Raid</label> &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; <input type="radio" id="Bingo" name="type" value="Bingo" />
<input type="radio" id="Bingo" name="type" value="Bingo" /> <label for="Bingo" class="translate5">Bingo</label>
<label for="Bingo">Bingo</label> &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; <input type="radio" id="Medley" name="type" value="Medley" />
<input type="radio" id="Medley" name="type" value="Medley" /> <label for="Medley" class="translate6">Medley</label>
<label for="Medley">Medley</label> &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; <hr />
<hr /> <div class="grid">
<label for="team">Event Team Bonus:</label> <div class="munigrid">
<select id="team" name="team"> <label for="team" class="translate7">Event Team Bonus:</label>
<option value="0">0%</option> <select id="team" name="team">
<option value="0.2">20%</option> <option value="0">0%</option>
<option value="0.4">40%</option> <option value="0.2">20%</option>
<option value="0.6">60%</option> <option value="0.4">40%</option>
<option value="0.8">80%</option> <option value="0.6">60%</option>
<option value="1.0">100%</option> <option value="0.8">80%</option>
<option value="1.2">120%</option> <option value="1.0">100%</option>
<option value="1.4">140%</option> <option value="1.2">120%</option>
<option value="1.6" selected>160%</option> <option value="1.4">140%</option>
</select> <option value="1.6" selected>160%</option>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="tooltip"><label for="flexible" alt="Yes" </select>
><b>Flexible Team?</b></label &nbsp;&nbsp;&nbsp;&nbsp;<span class="tooltip"><label for="flexible" alt="Yes"
><input id="flexible" type="checkbox" /> ><b class="translate17">Flexible Team?</b></label
<span class="tooltiptext">If turned on, calculates scoring options using lower % teams also.</span> ><input id="flexible" type="checkbox" />
</span> <span class="tooltiptext translate8">If turned on, calculates scoring options using lower % teams also.</span>
<br /> </span>
<br /> <br />
<span class="tooltip"><label for="maxscore"><b>Max Free Live Score: </b></label <br />
><input id="maxscore" min="0" type="number" value="650000" /> <span class="tooltiptext"> <span class="tooltip"><label for="maxscore"><b class="translate18">Max Free Live Score: </b> </label
The maximum score you can get from playing a song using <font color="aqua">Free Live</font>.<br> ><input id="maxscore" min="0" type="number" max="5000000" value="650000" /> <span class="tooltiptext translate9">
<sub>(Use 0 for Rehearsals Only)</sub></span></span> The maximum score you can get from playing a song using <font color="aqua">Free Live</font>.<br>
<hr /> <sub>(Use 0 for Rehearsals Only)</sub></span></span>
<label for="starting"><b>Starting EP: </b></label </div>
><input id="starting" min="0" type="number" value="100000" /> <div class="munigrid">
<span style="font-size: 32px; padding: 0px 10px 0px 10px"></span> <span class="tooltip"><label for="advanced" alt="Yes"
<label for="ending"><b>Target EP: </b></label ><b class="translate10">Advanced Options?</b></label
><input id="ending" min="0" type="number" value="104000" /> ><input id="advanced" type="checkbox" onclick="toggle()" /><span class="tooltiptext translate11">
<br /> Enable voltage & EP limits.</span></span>
<br /> <div id="advanced2" style="visibility:hidden">
<button <label for="lowest" class="translate12">
id="calculate" Use voltage until:
style=" </label><input style="width:96px;" id="lowest" type="number" min="10" step="2" value="80"> EP<br>
background-color: #ccddff; <label for="maxvolt" class="translate13">
margin-left: 20px; Max Voltage to use:
width: 240px; </label> <input style="width:64px;" id="maxvolt" type="number" min="0" value="20">
height: 32px; </div>
font-size: 18px; </div>
" </div>
onclick="test()" <hr />
> <b><label for="starting" class="translate14">Starting EP: </label
Calculate ></b><input id="starting" min="0" type="number" value="100000" />
</button> <span style="font-size: 32px; padding: 0px 10px 0px 10px"></span>
</fieldset> <b><label for="ending" class="translate15">Target EP: </label
<div style="display: flex; justify-content: stretch; align-items: center"> ></b><input id="ending" min="0" type="number" value="104000" />
<textarea rows="20" cols="160" id="console" disabled> </textarea> <br />
</div> <br />
<sub><u>Tips</u></sub> <button
<ul> id="calculate"
<li class="translate19">Here's the Light on EX or Synchrogazer on Hard/EX difficulty are some of the highest scoring songs you can pick.</li> style="
<li class="translate20">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.</li> background-color: #ccddff;
<li class="translate21">The <b>"Flexible Team"</b> option gives you the fastest park, but at the expense of more voltage.</li> margin-left: 20px;
</ul> width: 240px;
height: 32px;
<script> font-size: 18px;
document.getElementById("ips").value = ""; "
</script> onclick="test()" class="translate16"
</body> >
</html> Calculate
</button>
</fieldset>
<div style="display: flex; justify-content: stretch; align-items: center">
<textarea rows="20" cols="160" id="console" disabled> </textarea>
</div>
<sub><u>Tips</u></sub>
<ul>
<li class="translate19">Here's the Light on EX or Synchrogazer on Hard/EX difficulty are some of the highest scoring songs you can pick.</li>
<li class="translate20">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.</li>
<li class="translate21">The <b>"Flexible Team"</b> option gives you the fastest park, but at the expense of more voltage.</li>
</ul>
<script src="muni.js"></script>
<script>
document.getElementById("ips").value = "";
</script>
</body>
</html>

Loading…
Cancel
Save