diff --git a/muni.css b/muni.css
new file mode 100644
index 0000000..4a95097
--- /dev/null
+++ b/muni.css
@@ -0,0 +1,28 @@
+* {
+ font-family: "Comic Sans MS", "Comic Sans", cursive;
+ box-sizing: border-box;
+}
+
+body::before {
+ content: "";
+ position: fixed;
+ width: 100vw;
+ height: 100vh;
+ top: 0;
+ left: 0;
+ background-image: url("https://cdn.discordapp.com/emojis/744938186983080126.png?v=1");
+ background-size: cover;
+ background-repeat: no-repeat;
+ background-position: center calc(62% + 2%);
+ z-index: -1;
+ opacity: 0.25;
+}
+
+textarea {
+ background-color: transparent;
+ width: 100%;
+}
+
+textarea:disabled {
+ color: black;
+}
diff --git a/parkingcalc.html b/parkingcalc.html
index ceb397d..e7567c4 100644
--- a/parkingcalc.html
+++ b/parkingcalc.html
@@ -1,356 +1,567 @@
-
+ var interval = type == "Medley" ? 15000 : 10000;
-
D4DJ Event Parking Calculator
+ function EPCalc(voltage, score, bonus) {
+ if (voltage > 0) {
+ 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) < end - 10) {
+ //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 +=
+ "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) < end - 10) {
+ //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 +=
+ "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))
+ ) {
+ //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 +=
+ "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
+ ) {
+ //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 ((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
+ ) {
+ //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;
+ }
+ }
+ 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) {
+ //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;
+ }
+ }
+ 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 +=
+ "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 +=
+ "Step " +
+ step++ +
+ ") Use Rehearsal w/" +
+ tbonus * 100 +
+ "% team. EP +" +
+ gain +
+ ". Remaining:" +
+ (end - start) +
+ " EP \n";
+ return true;
+ } else if (end - start >= 20) {
+ var gain = end - start - 10;
+ start += gain;
+ document.getElementById("console").value +=
+ "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 +=
+ "Step " +
+ step++ +
+ ") Use Rehearsal w/0% team. EP +" +
+ gain +
+ ". Remaining:" +
+ (end - start) +
+ " EP \n";
+ return false;
+ } else {
+ var gain = end - start;
+ start += gain;
+ document.getElementById("console").value +=
+ "Step " +
+ step++ +
+ ") Use Rehearsal w/" +
+ (gain - 10) * 10 +
+ "% team. EP +" +
+ gain +
+ ". Remaining:" +
+ (end - start) +
+ " EP \n";
+ return false;
+ }
+
+ 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 =
+ "Get closer to target score before using parking calculator!";
+ } else {
+ var result = true;
+ while (start != end) {
+ 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) {
+ result = TryRehearsal(j);
+ }
+ } else {
+ result = TryRehearsal(bonus);
+ }
+ } while (result);
+ }
+
+ 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"
+ }
+ }
+ }
+
+ start = end;
+ if (result === undefined) {
+ document.getElementById("console").value =
+ "Impossible to park using this team!";
+ } else {
+ 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) +
+ " steps and " +
+ flameCount +
+ " voltage required!\n\n" +
+ document.getElementById("console").value;
+ }
+ //document.getElementById("console").value+="Step "+(step++)+")"+start+" EP"+"\n"
+ step++;
+ }
+ }
+ }
+
+
+
+ D4DJ Event Parking Calculator
+
+
+
+
+
+
+
+
+