diff --git a/src/source/TetrisRogue.cpp b/src/source/TetrisRogue.cpp index ebc0808..5ad7fb1 100644 --- a/src/source/TetrisRogue.cpp +++ b/src/source/TetrisRogue.cpp @@ -265,27 +265,6 @@ static int GetUpgradeDynamicWeight(const UpgradeEntry& entry) weight += 20; } - if (entry.id == UPGRADE_CHAIN_BOMB && rogueStats.explosiveLevel == 0) - { - weight -= 60; - } - - if (entry.id == UPGRADE_THUNDER_LASER && rogueStats.thunderTetrisLevel == 0) - { - weight -= 80; - } - - if (entry.id == UPGRADE_INFINITE_FEVER && rogueStats.feverLevel == 0) - { - weight -= 80; - } - - if (entry.id == UPGRADE_VOID_CORE && - (rogueStats.blackHoleLevel == 0 || rogueStats.rainbowPieceLevel == 0)) - { - weight -= 90; - } - return weight < 1 ? 1 : weight; } @@ -315,22 +294,45 @@ static bool IsUpgradeSelectable(const UpgradeEntry& entry) if (entry.id == UPGRADE_THUNDER_LASER) { return rogueStats.thunderTetrisLevel > 0 && + rogueStats.laserLevel > 0 && rogueStats.thunderLaserLevel == 0; } if (entry.id == UPGRADE_INFINITE_FEVER) { return rogueStats.feverLevel > 0 && + rogueStats.rageStackLevel > 0 && rogueStats.infiniteFeverLevel == 0; } + if (entry.id == UPGRADE_TERMINAL_CLEAR) + { + return rogueStats.lastChanceUpgradeLevel > 0 && + rogueStats.screenBombLevel > 0 && + rogueStats.feverLevel > 0 && + rogueStats.terminalClearLevel == 0; + } + + if (entry.id == UPGRADE_DESTINY_WHEEL) + { + return rogueStats.dualChoiceLevel > 0 && + rogueStats.destinyWheelLevel == 0; + } + if (entry.id == UPGRADE_CONTROL_MASTER) { - return rogueStats.perfectRotateLevel > 0 && - rogueStats.holdUnlocked > 0 && + return rogueStats.holdUnlocked > 0 && + rogueStats.previewUpgradeLevel > 0 && rogueStats.controlMasterLevel == 0; } + if (entry.id == UPGRADE_EXTREME_PLAYER) + { + return rogueStats.highPressureLevel > 0 && + rogueStats.tetrisGambleLevel > 0 && + rogueStats.extremePlayerLevel == 0; + } + if (entry.id == UPGRADE_VOID_CORE) { return rogueStats.blackHoleLevel > 0 &&