diff --git a/src/zeroxfc/nullpo/custom/libs/FieldManipulation.java b/src/zeroxfc/nullpo/custom/libs/FieldManipulation.java
index 7aec0cf..e75ceb0 100644
--- a/src/zeroxfc/nullpo/custom/libs/FieldManipulation.java
+++ b/src/zeroxfc/nullpo/custom/libs/FieldManipulation.java
@@ -45,46 +45,54 @@ public class FieldManipulation {
private static final Logger log = Logger.getLogger(FieldManipulation.class);
/**
- * Check for split line clears. To be executed in gamemode's onLineClear.
+ * Check for split line clears. To be executed in gamemode's onLineClear.
+ * Credit goes to MandL27
* @param field Field to check
* @return true
if line clear is split. false
otherwise.
*/
public static boolean checkLineForSplit(Field field) {
- if (field.lastLinesCleared == null){
- field.lastLinesCleared = new ArrayList();
- }
- field.lastLinesCleared.clear();
-
- boolean previousFlag = false;
- boolean atLeastOne = false;
-
- Block[] row = new Block[field.getWidth()];
-
- for(int i = (field.getHiddenHeight() * -1); i < field.getHeightWithoutHurryupFloor(); i++) {
- boolean flag = true;
-
- for(int j = 0; j < field.getWidth(); j++) {
- row[j] = new Block(field.getBlock(j, i));
- if((field.getBlockEmpty(j, i)) || (field.getBlock(j, i).getAttribute(Block.BLOCK_ATTRIBUTE_WALL))) {
- flag = false;
- break;
- }
- }
+/* if (field.lastLinesCleared == null){
+ * field.lastLinesCleared = new ArrayList();
+ * }
+ * field.lastLinesCleared.clear();
+ *
+ * boolean previousFlag = false;
+ * boolean atLeastOne = false;
+ *
+ * Block[] row = new Block[field.getWidth()];
+ *
+ * for(int i = (field.getHiddenHeight() * -1); i < field.getHeightWithoutHurryupFloor(); i++) {
+ * boolean flag = true;
+ *
+ * for(int j = 0; j < field.getWidth(); j++) {
+ * row[j] = new Block(field.getBlock(j, i));
+ * if((field.getBlockEmpty(j, i)) || (field.getBlock(j, i).getAttribute(Block.BLOCK_ATTRIBUTE_WALL))) {
+ * flag = false;
+ * break;
+ * }
+ * }
+ *
+ * field.setLineFlag(i, flag);
+ *
+ * if (flag != previousFlag && atLeastOne && flag) {
+ * return true;
+ * }
+ *
+ * if(flag) {
+ * atLeastOne = true;
+ * }
+ *
+ * previousFlag = flag;
+ } */
+ int regions = 0;
+ int lines = 0;
- field.setLineFlag(i, flag);
-
- if (flag != previousFlag && atLeastOne && flag) {
- return true;
- }
-
- if(flag) {
- atLeastOne = true;
- }
-
- previousFlag = flag;
+ for (int i = field.getHiddenHeight() * -1; i < field.getHeight(); i++) {
+ if (field.getLineFlag(i)) lines++;
+ if (lines > 0) regions++;
}
- return false;
+ return regions > lines;
}
/**
@@ -397,7 +405,7 @@ public static double fieldCompare(Field a, Field b, boolean exact, boolean colou
if (a.getWidth() != b.getWidth()) return 0d;
if ((a.getHiddenHeight() + a.getHiddenHeight()) != (b.getHiddenHeight() + b.getHiddenHeight())) return 0d;
- final int total = 2 * a.getWidth() * (a.getHeight() + a.getHiddenHeight());
+ final int total = 2 * getNumberOfBlocks(b);
int current = 0;
for (int y = (-1 * a.getHiddenHeight()); y < a.getHeight(); y++) {
@@ -407,9 +415,7 @@ public static double fieldCompare(Field a, Field b, boolean exact, boolean colou
if (blkA != null && blkB != null) {
if (colourMatch) {
- if (blkA.isEmpty() && blkB.isEmpty()) {
- current += 2;
- } else {
+ if (!blkA.isEmpty() || !blkB.isEmpty()) {
if (!blkA.isEmpty() && blkB.isEmpty()) {
current -= 6;
} else if (!blkA.isEmpty() && !blkB.isEmpty()) {
@@ -421,9 +427,7 @@ public static double fieldCompare(Field a, Field b, boolean exact, boolean colou
}
}
} else {
- if (blkA.isEmpty() && blkB.isEmpty()) {
- current += 2;
- } else {
+ if (!blkA.isEmpty() || !blkB.isEmpty()) {
if (!blkA.isEmpty() && blkB.isEmpty()) {
current -= 6;
} else if (!blkA.isEmpty() && !blkB.isEmpty()) {
diff --git a/src/zeroxfc/nullpo/custom/libs/ProfileProperties.java b/src/zeroxfc/nullpo/custom/libs/ProfileProperties.java
index d218ff8..8188d40 100644
--- a/src/zeroxfc/nullpo/custom/libs/ProfileProperties.java
+++ b/src/zeroxfc/nullpo/custom/libs/ProfileProperties.java
@@ -576,7 +576,7 @@ public static class LoginScreen {
private boolean signup;
private boolean success;
private ProfileProperties playerProperties;
- private int colourHeading;
+ private final int colourHeading;
/**
* Creates a new login screen for a ProfileProperties
instance.
@@ -681,13 +681,13 @@ private boolean onNameInput(GameEngine engine, int playerID) {
*/
if (nameEntry.length() == 3) currentChar = ProfileProperties.ENTRY_CHARS.length() - 1;
- if (engine.ctrl.isPress(Controller.BUTTON_DOWN)) {
+ if (engine.ctrl.isPress(Controller.BUTTON_RIGHT)) {
if (engine.statc[1] % 6 == 0) {
engine.playSE("change");
currentChar++;
}
engine.statc[1]++;
- } else if (engine.ctrl.isPress(Controller.BUTTON_UP)) {
+ } else if (engine.ctrl.isPress(Controller.BUTTON_LEFT)) {
if (engine.statc[1] % 6 == 0) {
engine.playSE("change");
currentChar--;
@@ -700,7 +700,7 @@ private boolean onNameInput(GameEngine engine, int playerID) {
engine.playSE("change");
currentChar = 0;
} else if (s.equals("q")) {
- if (nameEntry.length() < 3) nameEntry = String.format("%3s", nameEntry);
+ if (nameEntry.length() < 3) nameEntry = String.format("%-3s", nameEntry);
engine.playSE("decide");
currentChar = 0;
@@ -724,7 +724,7 @@ private boolean onNameInput(GameEngine engine, int playerID) {
engine.statc[1] = 0;
}
- return false;
+ return true;
}
private boolean onPasswordInput(GameEngine engine, int playerID) {
@@ -822,7 +822,10 @@ public void renderScreen(EventReceiver receiver, GameEngine engine, int playerID
GameTextUtilities.ALIGN_TOP_MIDDLE, "ENTRY", colourHeading,
2f);
- receiver.drawMenuFont(engine, playerID, 2, 8,nameEntry + ProfileProperties.getCharAt(currentChar), 2f);
+ receiver.drawMenuFont(engine, playerID, 2, 8, nameEntry, 2f);
+ int c = 0;
+ if ((engine.statc[0] / 6) % 2 == 0) c = EventReceiver.COLOR_YELLOW;
+ receiver.drawMenuFont(engine, playerID, 2 + (nameEntry.length() * 2), 8, ProfileProperties.getCharAt(currentChar), c, 2f);
receiver.drawMenuFont(engine, playerID, 0, 18, "ENTER ACCOUNT\nNAME.");
// endregion
diff --git a/src/zeroxfc/nullpo/custom/modes/Accelerator.java b/src/zeroxfc/nullpo/custom/modes/Accelerator.java
index 8178f9c..09a7c6c 100644
--- a/src/zeroxfc/nullpo/custom/modes/Accelerator.java
+++ b/src/zeroxfc/nullpo/custom/modes/Accelerator.java
@@ -373,7 +373,7 @@ public void renderLast(GameEngine engine, int playerID) {
for(int i = 0; i < RANKING_MAX; i++) {
receiver.drawScoreFont(engine, playerID, 0, topY+i, String.format("%2d", i + 1), EventReceiver.COLOR_YELLOW, scale);
String s = String.valueOf(rankingScore[goaltype][i]);
- receiver.drawScoreFont(engine, playerID, (s.length() > 6) ? 6 : 3, (s.length() > 6) ? (topY+i) * 2 : (topY+i), s, (i == rankingRank), (s.length() > 6) ? scale * 0.5f : scale);
+ receiver.drawScoreFont(engine, playerID, (s.length() > 6 && receiver.getNextDisplayType() != 2) ? 6 : 3, (s.length() > 6 && receiver.getNextDisplayType() != 2) ? (topY+i) * 2 : (topY+i), s, (i == rankingRank), (s.length() > 6 && receiver.getNextDisplayType() != 2) ? scale * 0.5f : scale);
receiver.drawScoreFont(engine, playerID, 10, topY+i, String.format("%.1f", rankingLines[goaltype][i]), (i == rankingRank), scale);
receiver.drawScoreFont(engine, playerID, 16, topY+i, GeneralUtil.getTime(rankingTime[goaltype][i]), (i == rankingRank), scale);
}
diff --git a/src/zeroxfc/nullpo/custom/modes/ColourPower.java b/src/zeroxfc/nullpo/custom/modes/ColourPower.java
index b92002a..30e7bc3 100644
--- a/src/zeroxfc/nullpo/custom/modes/ColourPower.java
+++ b/src/zeroxfc/nullpo/custom/modes/ColourPower.java
@@ -510,7 +510,7 @@ public void renderLast(GameEngine engine, int playerID) {
for(int i = 0; i < RANKING_MAX; i++) {
receiver.drawScoreFont(engine, playerID, 0, topY+i, String.format("%2d", i + 1), EventReceiver.COLOR_YELLOW, scale);
String s = String.valueOf(rankingScore[ruleboundMode ? 1 : 0][goaltype][i]);
- receiver.drawScoreFont(engine, playerID, (s.length() > 6) ? 6 : 3, (s.length() > 6) ? (topY+i) * 2 : (topY+i), s, (i == rankingRank), (s.length() > 6) ? scale * 0.5f : scale);
+ receiver.drawScoreFont(engine, playerID, (s.length() > 6 && receiver.getNextDisplayType() != 2) ? 6 : 3, (s.length() > 6 && receiver.getNextDisplayType() != 2) ? (topY+i) * 2 : (topY+i), s, (i == rankingRank), (s.length() > 6 && receiver.getNextDisplayType() != 2) ? scale * 0.5f : scale);
receiver.drawScoreFont(engine, playerID, 10, topY+i, String.valueOf(rankingLines[ruleboundMode ? 1 : 0][goaltype][i]), (i == rankingRank), scale);
receiver.drawScoreFont(engine, playerID, 15, topY+i, GeneralUtil.getTime(rankingTime[ruleboundMode ? 1 : 0][goaltype][i]), (i == rankingRank), scale);
}
@@ -539,16 +539,20 @@ public void renderLast(GameEngine engine, int playerID) {
// Power-up progess
float scale = 1f;
- if (receiver.getNextDisplayType() >= 1) scale = 0.5f;
- receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(12 / scale), "POWER-UPS", EventReceiver.COLOR_PINK, scale);
- receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(13 / scale), " GREY:" + String.format("%d/%d", meterValues[0], POWER_METER_MAX), POWERUP_TEXT_COLOURS[0], scale);
- receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(14 / scale), " RED:" + String.format("%d/%d", meterValues[1], POWER_METER_MAX), POWERUP_TEXT_COLOURS[1], scale);
- receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(15 / scale), "ORANGE:" + String.format("%d/%d", meterValues[2], POWER_METER_MAX), POWERUP_TEXT_COLOURS[2], scale);
- receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(16 / scale), "YELLOW:" + String.format("%d/%d", meterValues[3], POWER_METER_MAX), POWERUP_TEXT_COLOURS[3], scale);
- receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(17 / scale), " GREEN:" + String.format("%d/%d", meterValues[4], POWER_METER_MAX), POWERUP_TEXT_COLOURS[4], scale);
- receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(18 / scale), " CYAN:" + String.format("%d/%d", meterValues[5], POWER_METER_MAX), POWERUP_TEXT_COLOURS[5], scale);
- receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(19 / scale), " BLUE:" + String.format("%d/%d", meterValues[6], POWER_METER_MAX), POWERUP_TEXT_COLOURS[6], scale);
- receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(20 / scale), "PURPLE:" + String.format("%d/%d", meterValues[7], POWER_METER_MAX), POWERUP_TEXT_COLOURS[7], scale);
+ int base = 12;
+ if (receiver.getNextDisplayType() >= 1) {
+ scale = 0.5f;
+ base = 24;
+ }
+ receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(base / scale), "POWER-UPS", EventReceiver.COLOR_PINK, scale);
+ receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(base + 1 / scale), " GREY:" + String.format("%d/%d", meterValues[0], POWER_METER_MAX), POWERUP_TEXT_COLOURS[0], scale);
+ receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(base + 2 / scale), " RED:" + String.format("%d/%d", meterValues[1], POWER_METER_MAX), POWERUP_TEXT_COLOURS[1], scale);
+ receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(base + 3 / scale), "ORANGE:" + String.format("%d/%d", meterValues[2], POWER_METER_MAX), POWERUP_TEXT_COLOURS[2], scale);
+ receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(base + 4 / scale), "YELLOW:" + String.format("%d/%d", meterValues[3], POWER_METER_MAX), POWERUP_TEXT_COLOURS[3], scale);
+ receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(base + 5 / scale), " GREEN:" + String.format("%d/%d", meterValues[4], POWER_METER_MAX), POWERUP_TEXT_COLOURS[4], scale);
+ receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(base + 6 / scale), " CYAN:" + String.format("%d/%d", meterValues[5], POWER_METER_MAX), POWERUP_TEXT_COLOURS[5], scale);
+ receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(base + 7 / scale), " BLUE:" + String.format("%d/%d", meterValues[6], POWER_METER_MAX), POWERUP_TEXT_COLOURS[6], scale);
+ receiver.drawScoreFont(engine, playerID, (int)(10 / scale), (int)(base + 8 / scale), "PURPLE:" + String.format("%d/%d", meterValues[7], POWER_METER_MAX), POWERUP_TEXT_COLOURS[7], scale);
receiver.drawScoreFont(engine, playerID, 0, 15, "MULTI.", EventReceiver.COLOR_BLUE);
receiver.drawScoreFont(engine, playerID, 0, 16, String.valueOf(scoreMultiplier) + "X");
diff --git a/src/zeroxfc/nullpo/custom/modes/DrawMode.java b/src/zeroxfc/nullpo/custom/modes/DrawMode.java
index 8981749..cefed40 100644
--- a/src/zeroxfc/nullpo/custom/modes/DrawMode.java
+++ b/src/zeroxfc/nullpo/custom/modes/DrawMode.java
@@ -1,5 +1,10 @@
package zeroxfc.nullpo.custom.modes;
+import mu.nu.nullpo.game.component.Block;
+import mu.nu.nullpo.game.component.Field;
+
+import java.util.ArrayList;
+
public class DrawMode extends MarathonModeBase {
/** This mode always has 0G gravity */
private static final int GRAVITY_CONSTANT = 0;
@@ -119,8 +124,37 @@ public class DrawMode extends MarathonModeBase {
//endregion
};
+ private static final ArrayList SHAPE_FIELDS = new ArrayList<>();
+
+ private static final int[] SHAPE_TO_PIECE_ID = {
+ 0, 0, 1, 1, 1, 1, 2, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6
+ };
+
+ private static final int[] SHAPE_TO_PIECE_DIRECTION = {
+ 0, 1, 0, 1, 2, 3, 0, 2, 1, 0, 1, 2, 3, 0, 1, 2, 3, 2, 3
+ };
+
+ static {
+ for (int i = 0; i < SHAPES.length; i++) {
+ int[][] shape = SHAPES[i];
+ int dimX = shape[0].length;
+ int dimY = shape.length;
+
+ SHAPE_FIELDS.add(new Field(dimX, dimY, 0));
+
+ for (int y = 0; y < dimY; y++) {
+ for (int x = 0; x < dimX; x++) {
+ SHAPE_FIELDS.get(i).getBlock(x, y).copy(new Block(shape[y][x], 0));
+ }
+ }
+ }
+ }
+
// endregion SHAPES
+ /** The match confidence of the field to each piece. */
+ private ArrayList matchConfidences;
+
/** Mode Name */
@Override
public String getName() {
diff --git a/src/zeroxfc/nullpo/custom/modes/FireworkChallenge.java b/src/zeroxfc/nullpo/custom/modes/FireworkChallenge.java
index 7186d26..c5a25a2 100644
--- a/src/zeroxfc/nullpo/custom/modes/FireworkChallenge.java
+++ b/src/zeroxfc/nullpo/custom/modes/FireworkChallenge.java
@@ -4,6 +4,7 @@
*/
package zeroxfc.nullpo.custom.modes;
+import org.apache.log4j.Logger;
import zeroxfc.nullpo.custom.libs.*;
import java.util.ArrayList;
@@ -22,6 +23,8 @@
import mu.nu.nullpo.game.component.Piece;
public class FireworkChallenge extends DummyMode {
+ private static final Logger log = Logger.getLogger(FireworkChallenge.class);
+
// Base Line clear values
private static final double[] BASE_LINE_VALUES = { 1.0, 2.9, 3.8, 4.7 };
@@ -192,9 +195,6 @@ public class FireworkChallenge extends DummyMode {
// show best STs?
private boolean showBests;
- // full ghost?
- private boolean tlsMode;
-
// 20g mode?
private boolean maxGravMode;
@@ -309,7 +309,6 @@ public void playerInit(GameEngine engine, int playerID) {
lvAtLastSplit = 0;
showBests = false;
- tlsMode = false;
maxGravMode = false;
big = false;
showST = false;
@@ -722,7 +721,6 @@ public boolean onMove(GameEngine engine, int playerID) {
if((engine.ending == 2) && (rollStarted == false)) {
rollStarted = true;
owner.bgmStatus.fadesw = false;
- creditsFreeFireworkDelay = MAX_ROLL_TIME / fireworksFired;
owner.bgmStatus.bgm = BGMStatus.BGM_ENDING2;
}
@@ -775,6 +773,8 @@ public boolean onARE(GameEngine engine, int playerID) {
@Override
public void calcScore(GameEngine engine, int playerID, int lines) {
if((lines >= 1) && (engine.ending == 0)) {
+ if (lines >= 2) isSplit = FieldManipulation.checkLineForSplit(engine.field);
+
if(engine.field.isEmpty()) {
engine.playSE("bravo");
bravoFireworkQueue += 6;
@@ -804,8 +804,8 @@ public void calcScore(GameEngine engine, int playerID, int lines) {
if (engine.lastmove == 5 || engine.lastmove == 6) {
lastPiece = engine.nowPieceObject.id;
- if (Piece.getPieceName(lastPiece) != "O") {
- if (Piece.getPieceName(lastPiece) == "T") {
+ if (!Piece.getPieceName(lastPiece).equals("O")) {
+ if (Piece.getPieceName(lastPiece).equals("T")) {
if (lines >= 3) {
fireworkTotal *= 4;
} else {
@@ -828,10 +828,14 @@ public void calcScore(GameEngine engine, int playerID, int lines) {
if(engine.statistics.level >= 200) {
// Ending
- comboDuringCredits = engine.combo;
- if (comboDuringCredits > 9) comboDuringCredits = 9;
- comboDuringCredits = CREDIT_COMBO_CONVERSION[comboDuringCredits];
-
+ if (engine.ending == 0) {
+ comboDuringCredits = engine.combo;
+ if (comboDuringCredits > 9) comboDuringCredits = 9;
+ comboDuringCredits = CREDIT_COMBO_CONVERSION[comboDuringCredits];
+
+ creditsFreeFireworkDelay = MAX_ROLL_TIME / fireworksFired;
+ }
+
engine.statistics.level = 200;
engine.timerActive = false;
engine.ending = 1;
@@ -861,6 +865,8 @@ public void calcScore(GameEngine engine, int playerID, int lines) {
engine.playSE("levelstop");
}
} else if (lines >= 1) {
+ if (lines >= 2) isSplit = FieldManipulation.checkLineForSplit(engine.field);
+
// firework calculation
calculateVarispeedCombo(engine, engine.statistics.level);
calculateVarispeedFinesse(engine, engine.statistics.level);
@@ -873,7 +879,7 @@ public void calcScore(GameEngine engine, int playerID, int lines) {
fireworkTotal *= varispeedComboBonus;
fireworkTotal *= varispeedFinesseBonus;
if (lines > 1) fireworkTotal *= CREDIT_COMBO_MULTIPLIERS[comboDuringCredits];
- if (Arrays.stream(LUCKY_LEVELS).anyMatch(i -> i == engine.statistics.level)) fireworkTotal *= LUCKY_LEVEL_BONUS;
+ if (engine.statistics.level < 200) if (Arrays.stream(LUCKY_LEVELS).anyMatch(i -> i == engine.statistics.level)) fireworkTotal *= LUCKY_LEVEL_BONUS;
if (give30sBonus) {
fireworkTotal *= THIRTY_BONUS;
give30sBonus = false;
@@ -882,7 +888,7 @@ public void calcScore(GameEngine engine, int playerID, int lines) {
if (engine.lastmove == 5 || engine.lastmove == 6) {
lastPiece = engine.nowPieceObject.id;
- if (Piece.getPieceName(lastPiece) != "O") {
+ if (!Piece.getPieceName(lastPiece).equals("O")) {
if (Piece.getPieceName(lastPiece) == "T") {
if (lines >= 3) {
fireworkTotal *= 4;
@@ -903,9 +909,6 @@ public void calcScore(GameEngine engine, int playerID, int lines) {
@Override
public boolean onLineClear(GameEngine engine, int playerID) {
- int lines = engine.field.checkLineNoFlag();
- if (lines >= 2) isSplit = FieldManipulation.checkLineForSplit(engine.field);
-
// event 発生
owner.receiver.onLineClear(engine, playerID);
@@ -1167,23 +1170,27 @@ public void onLast(GameEngine engine, int playerID) {
sectionTime[section]++;
}
- if (engine.statistics.time % 1800 == 0 && engine.ending == 0) {
+ if (engine.statistics.time % 1800 == 0) {
if (engine.statistics.level - lvAtLastSplit >= 30) {
give30sBonus = true;
}
else {
give30sBonus = false;
}
-
- if (lastFireworkTimer > 0) lastFireworkTimer--;
+
lvAtLastSplit = engine.statistics.level;
}
+
+ if (lastFireworkTimer > 0) lastFireworkTimer--;
}
if (engine.gameActive) {
- if (totalFireworkQueue >= 0) {
+ totalFireworkQueue = bravoFireworkQueue + comboFireworkQueue + genericFireworkQueue;
+ if (totalFireworkQueue > 0 || engine.ending == 2) {
updateFireworkTimers(engine, playerID);
}
+
+ lastLineClearTime++;
}
// Ending
@@ -1548,7 +1555,7 @@ private void updateFireworkTimers(GameEngine engine, int playerID) {
comboFireworkTimer = 0;
launchFirework(engine, playerID);
comboFireworkQueue--;
-
+
if(!sp) {
engine.playSE("fireworklaunch");
engine.playSE("fireworkexplode");
@@ -1559,7 +1566,7 @@ private void updateFireworkTimers(GameEngine engine, int playerID) {
completionFireworkTimer = 0;
launchFirework(engine, playerID);
genericFireworkQueue--;
-
+
if(!sp) {
engine.playSE("fireworklaunch");
engine.playSE("fireworkexplode");
@@ -1576,8 +1583,10 @@ private void updateFireworkTimers(GameEngine engine, int playerID) {
sp = true;
}
}
-
+
totalFireworkQueue = bravoFireworkQueue + comboFireworkQueue + genericFireworkQueue;
+
+ // log.debug(String.format("T: %d, BR: %d, CB: %d, CL: %d, CFD: %d, CFT: %d", totalFireworkQueue, bravoFireworkQueue, comboFireworkQueue, genericFireworkQueue, creditsFreeFireworkDelay, creditsFreeFireworkTimer));
}
private void calculateVarispeedCombo(GameEngine engine, int level) {
@@ -1591,6 +1600,6 @@ private void calculateVarispeedFinesse(GameEngine engine, int level) {
int frame = level - engine.statc[0];
if (frame < 120) frame = 120;
- varispeedFinesseBonus = (frame * (1.0 / 120.0));
+ varispeedFinesseBonus = (frame / 120.0);
}
}
diff --git a/src/zeroxfc/nullpo/custom/modes/Joker.java b/src/zeroxfc/nullpo/custom/modes/Joker.java
index 0827f6b..f15b82c 100644
--- a/src/zeroxfc/nullpo/custom/modes/Joker.java
+++ b/src/zeroxfc/nullpo/custom/modes/Joker.java
@@ -409,7 +409,7 @@ public void renderLast(GameEngine engine, int playerID) {
for(int i = 0; i < RANKING_MAX; i++) {
receiver.drawScoreFont(engine, playerID, 0, topY+i, String.format("%2d", i + 1), EventReceiver.COLOR_YELLOW, scale);
String s = String.valueOf(rankingLevel[i]);
- receiver.drawScoreFont(engine, playerID, (s.length() > 6) ? 6 : 3, (s.length() > 6) ? (topY+i) * 2 : (topY+i), s, (i == rankingRank), (s.length() > 6) ? scale * 0.5f : scale);
+ receiver.drawScoreFont(engine, playerID, (s.length() > 6 && receiver.getNextDisplayType() != 2) ? 6 : 3, (s.length() > 6 && receiver.getNextDisplayType() != 2) ? (topY+i) * 2 : (topY+i), s, (i == rankingRank), (s.length() > 6 && receiver.getNextDisplayType() != 2) ? scale * 0.5f : scale);
receiver.drawScoreFont(engine, playerID, 10, topY+i, String.valueOf(rankingLines[i]), (i == rankingRank), scale);
receiver.drawScoreFont(engine, playerID, 15, topY+i, GeneralUtil.getTime(rankingTime[i]), (i == rankingRank), scale);
}
diff --git a/src/zeroxfc/nullpo/custom/modes/Scanline.java b/src/zeroxfc/nullpo/custom/modes/Scanline.java
index 7a2fb70..2eb1d53 100644
--- a/src/zeroxfc/nullpo/custom/modes/Scanline.java
+++ b/src/zeroxfc/nullpo/custom/modes/Scanline.java
@@ -256,7 +256,7 @@ public void renderLast(GameEngine engine, int playerID) {
for(int i = 0; i < RANKING_MAX; i++) {
receiver.drawScoreFont(engine, playerID, 0, topY+i, String.format("%2d", i + 1), EventReceiver.COLOR_YELLOW, scale);
String s = String.valueOf(rankingScore[scanSpeed][goaltype][i]);
- receiver.drawScoreFont(engine, playerID, (s.length() > 6) ? 6 : 3, (s.length() > 6) ? (topY+i) * 2 : (topY+i), s, (i == rankingRank), (s.length() > 6) ? scale * 0.5f : scale);
+ receiver.drawScoreFont(engine, playerID, (s.length() > 6 && receiver.getNextDisplayType() != 2) ? 6 : 3, (s.length() > 6 && receiver.getNextDisplayType() != 2) ? (topY+i) * 2 : (topY+i), s, (i == rankingRank), (s.length() > 6 && receiver.getNextDisplayType() != 2) ? scale * 0.5f : scale);
receiver.drawScoreFont(engine, playerID, 10, topY+i, String.valueOf(rankingLines[scanSpeed][goaltype][i]), (i == rankingRank), scale);
receiver.drawScoreFont(engine, playerID, 15, topY+i, GeneralUtil.getTime(rankingTime[scanSpeed][goaltype][i]), (i == rankingRank), scale);
}
diff --git a/src/zeroxfc/nullpo/custom/modes/ScoreTrial.java b/src/zeroxfc/nullpo/custom/modes/ScoreTrial.java
index 9b76bd6..78f1d65 100644
--- a/src/zeroxfc/nullpo/custom/modes/ScoreTrial.java
+++ b/src/zeroxfc/nullpo/custom/modes/ScoreTrial.java
@@ -450,7 +450,7 @@ public void renderLast(GameEngine engine, int playerID) {
for(int i = 0; i < RANKING_MAX; i++) {
receiver.drawScoreFont(engine, playerID, 0, topY+i, String.format("%2d", i + 1), EventReceiver.COLOR_YELLOW, scale);
String s = String.valueOf(rankingScore[difficultySelected][i]);
- receiver.drawScoreFont(engine, playerID, (s.length() > 6) ? 6 : 3, (s.length() > 6) ? (topY+i) * 2 : (topY+i), s, (i == rankingRank), (s.length() > 6) ? scale * 0.5f : scale);
+ receiver.drawScoreFont(engine, playerID, (s.length() > 6 && receiver.getNextDisplayType() != 2) ? 6 : 3, (s.length() > 6 && receiver.getNextDisplayType() != 2) ? (topY+i) * 2 : (topY+i), s, (i == rankingRank), (s.length() > 6 && receiver.getNextDisplayType() != 2) ? scale * 0.5f : scale);
receiver.drawScoreFont(engine, playerID, 10, topY+i, String.valueOf(rankingLines[difficultySelected][i]), (i == rankingRank), scale);
receiver.drawScoreFont(engine, playerID, 15, topY+i, GeneralUtil.getTime(rankingTime[difficultySelected][i]), (i == rankingRank), scale);
}