收尾强化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
+72 -5
View File
@@ -158,11 +158,19 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (currentMode == MODE_ROGUE && rogueStats.feverTicks > 0)
{
rogueStats.feverTicks--;
currentFallInterval = 500 + rogueStats.slowFallStacks * 80;
if (rogueStats.feverTicks > 0)
{
currentFallInterval += 120;
}
currentFallInterval = GetRogueFallInterval();
ResetGameTimer(hWnd);
shouldRefresh = true;
}
if (currentMode == MODE_ROGUE &&
rogueStats.timeDilationTicks > 0 &&
currentScreen == SCREEN_PLAYING &&
!suspendFlag &&
!gameOverFlag)
{
rogueStats.timeDilationTicks--;
currentFallInterval = GetRogueFallInterval();
ResetGameTimer(hWnd);
shouldRefresh = true;
}
@@ -175,6 +183,32 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
shouldRefresh = true;
}
if (currentMode == MODE_ROGUE &&
rogueStats.extremePlayerLevel > 0 &&
currentScreen == SCREEN_PLAYING &&
!suspendFlag &&
!gameOverFlag)
{
if (rogueStats.extremeDangerTicks > 0)
{
rogueStats.extremeDangerTicks--;
}
else
{
rogueStats.extremeDangerTicks = 30;
if (rogueStats.extremeDangerLevel < 5)
{
rogueStats.extremeDangerLevel++;
}
currentFallInterval = GetRogueFallInterval();
ResetGameTimer(hWnd);
feedbackState.visibleTicks = 10;
lstrcpyn(feedbackState.title, _T("\u6781\u9650\u5371\u9669\u5347\u7ea7"), sizeof(feedbackState.title) / sizeof(TCHAR));
lstrcpyn(feedbackState.detail, _T("30 \u79d2\u5185\u672a\u5b8c\u6210\u56db\u6d88\uff0c\u5371\u9669\u7b49\u7ea7\u63d0\u5347\uff0c\u4e0b\u843d\u901f\u5ea6\u8fdb\u4e00\u6b65\u52a0\u5feb\u3002"), sizeof(feedbackState.detail) / sizeof(TCHAR));
shouldRefresh = true;
}
}
if (currentMode == MODE_ROGUE && rogueStats.holdSlowTicks > 0)
{
rogueStats.holdSlowTicks--;
@@ -187,6 +221,39 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
!suspendFlag &&
!gameOverFlag)
{
if (currentMode == MODE_ROGUE && rogueStats.timeDilationLevel > 0 && rogueStats.timeDilationTicks <= 0)
{
int occupiedHeight = 0;
for (int y = 0; y < nGameHeight; y++)
{
bool hasCell = false;
for (int x = 0; x < nGameWidth; x++)
{
if (workRegion[y][x] != 0)
{
hasCell = true;
break;
}
}
if (hasCell)
{
occupiedHeight = nGameHeight - y;
break;
}
}
if (occupiedHeight > 15)
{
rogueStats.timeDilationTicks = 8;
currentFallInterval = GetRogueFallInterval();
ResetGameTimer(hWnd);
feedbackState.visibleTicks = 10;
lstrcpyn(feedbackState.title, _T("\u65f6\u95f4\u7f13\u6d41"), sizeof(feedbackState.title) / sizeof(TCHAR));
lstrcpyn(feedbackState.detail, _T("\u68cb\u76d8\u9ad8\u5ea6\u8d85\u8fc7 15 \u884c\uff0c\u63a5\u4e0b\u6765 8 \u79d2\u4e0b\u843d\u51cf\u901f 30%\u3002"), sizeof(feedbackState.detail) / sizeof(TCHAR));
shouldRefresh = true;
}
}
if (CanMoveDown())
{
MoveDown();