收尾强化TODO并补齐狂热缓流赌命四消与极限玩家

This commit is contained in:
2026-04-25 16:44:43 +08:00
parent d1bc887836
commit bb5b5affc2
5 changed files with 128 additions and 31 deletions
+37 -10
View File
@@ -290,10 +290,13 @@ static void ResetPlayerStats(PlayerStats& stats, bool useRogueRules)
stats.destinyWheelLevel = 0;
stats.perfectRotateLevel = 0;
stats.timeDilationLevel = 0;
stats.timeDilationTicks = 0;
stats.highPressureLevel = 0;
stats.tetrisGambleLevel = 0;
stats.extremePlayerLevel = 0;
stats.extremeSlowTicks = 0;
stats.extremeDangerTicks = 30;
stats.extremeDangerLevel = 0;
stats.upgradeShockwaveLevel = 0;
stats.evolutionImpactLevel = 0;
stats.controlMasterLevel = 0;
@@ -879,6 +882,15 @@ static bool RollLaserPiece()
chancePercent = 35;
}
if (rogueStats.feverTicks > 0)
{
chancePercent += 10;
if (chancePercent > 50)
{
chancePercent = 50;
}
}
return (rand() % 100) < chancePercent;
}
@@ -895,6 +907,15 @@ static bool RollCrossPiece()
chancePercent = 28;
}
if (rogueStats.feverTicks > 0)
{
chancePercent += 10;
if (chancePercent > 40)
{
chancePercent = 40;
}
}
return (rand() % 100) < chancePercent;
}
@@ -906,6 +927,10 @@ static bool RollRainbowPiece()
}
int chancePercent = 12;
if (rogueStats.feverTicks > 0)
{
chancePercent += 10;
}
return (rand() % 100) < chancePercent;
}
@@ -1478,13 +1503,9 @@ int GetRogueFallInterval()
baseInterval = baseInterval * 90 / 100;
}
if (rogueStats.timeDilationLevel > 0)
if (rogueStats.extremeDangerLevel > 0)
{
int topOccupiedRow = GetTopOccupiedRow();
if (topOccupiedRow >= 0 && topOccupiedRow <= 5)
{
baseInterval += 180;
}
baseInterval = baseInterval * (100 - rogueStats.extremeDangerLevel * 8) / 100;
}
if (currentMode == MODE_ROGUE && rogueStats.feverTicks > 0)
@@ -1492,6 +1513,11 @@ int GetRogueFallInterval()
baseInterval += 120;
}
if (rogueStats.timeDilationTicks > 0)
{
baseInterval = baseInterval * 130 / 100;
}
if (rogueStats.extremeSlowTicks > 0)
{
baseInterval += 180;
@@ -1629,6 +1655,8 @@ static void ApplyUpgradeById(int upgradeId, int targetPieceType, int applyCount)
break;
case UPGRADE_EXTREME_PLAYER:
rogueStats.extremePlayerLevel = 1;
rogueStats.extremeDangerTicks = 30;
rogueStats.extremeDangerLevel = 0;
currentFallInterval = GetRogueFallInterval();
break;
case UPGRADE_UPGRADE_SHOCKWAVE:
@@ -1721,12 +1749,10 @@ static void ApplyLineClearResult(int linesCleared)
if (linesCleared == 4)
{
scoreGain *= 4;
expGain *= 3;
}
else
{
scoreGain = scoreGain * 60 / 100;
expGain = expGain * 75 / 100;
scoreGain = scoreGain * 50 / 100;
}
}
@@ -1785,7 +1811,7 @@ static void ApplyLineClearResult(int linesCleared)
rogueStats.feverLineCharge -= 20;
rogueStats.feverTicks = 10;
currentFallInterval = GetRogueFallInterval();
SetFeedbackMessage(_T("\u8fdb\u5165\u72c2\u70ed\u6a21\u5f0f"), _T("\u672a\u6765 10 \u79d2\u5f97\u5206 / EXP x2\uff0c\u4e0b\u843d\u66f4\u6162\u3002"), 12);
SetFeedbackMessage(_T("\u8fdb\u5165\u72c2\u70ed\u6a21\u5f0f"), _T("\u672a\u6765 10 \u79d2\u5f97\u5206 / EXP x2\uff0c\u4e0b\u843d\u66f4\u6162\uff0c\u7279\u6b8a\u65b9\u5757\u66f4\u6613\u51fa\u73b0\u3002"), 12);
}
}
@@ -1806,6 +1832,7 @@ static void ApplyLineClearResult(int linesCleared)
if (rogueStats.extremePlayerLevel > 0 && linesCleared == 4)
{
rogueStats.extremeSlowTicks = 5;
rogueStats.extremeDangerTicks = 30;
currentFallInterval = GetRogueFallInterval();
SetFeedbackMessage(_T("\u6781\u9650\u73a9\u5bb6\u89e6\u53d1"), _T("\u56db\u6d88\u6210\u529f\uff0c\u63a5\u4e0b\u6765 5 \u79d2\u77ed\u6682\u7f13\u901f\u8865\u4f4d\u3002"), 12);
}