统一游戏内提示与强化描述文案
This commit is contained in:
@@ -203,8 +203,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
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));
|
||||
lstrcpyn(feedbackState.title, _T("极限压力升高"), sizeof(feedbackState.title) / sizeof(TCHAR));
|
||||
lstrcpyn(feedbackState.detail, _T("30 秒内没有完成四消,危险等级提升,下落速度进一步加快。"), sizeof(feedbackState.detail) / sizeof(TCHAR));
|
||||
shouldRefresh = true;
|
||||
}
|
||||
}
|
||||
@@ -260,7 +260,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
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));
|
||||
lstrcpyn(feedbackState.detail, _T("堆叠高度超过 15 行,接下来 8 秒下落速度降低 30%。"), sizeof(feedbackState.detail) / sizeof(TCHAR));
|
||||
shouldRefresh = true;
|
||||
}
|
||||
}
|
||||
|
||||
+17
-17
@@ -534,8 +534,8 @@ void Fixing()
|
||||
if (rainbowFilledCount > 0)
|
||||
{
|
||||
TCHAR rainbowDetail[128];
|
||||
_stprintf_s(rainbowDetail, _T("\u8865\u5168 %d \u4e2a\u884c\u5185\u7f3a\u53e3\uff0c\u66f4\u5bb9\u6613\u8fbe\u6210\u6d88\u884c\u3002"), rainbowFilledCount);
|
||||
SetFeedbackMessage(_T("\u5f69\u8679\u65b9\u5757\u751f\u6548"), rainbowDetail, 10);
|
||||
_stprintf_s(rainbowDetail, _T("彩虹能量补齐 %d 个缺口,消行机会扩大。"), rainbowFilledCount);
|
||||
SetFeedbackMessage(_T("彩虹方块"), rainbowDetail, 10);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -553,9 +553,9 @@ void Fixing()
|
||||
TCHAR terminalDetail[128];
|
||||
_stprintf_s(
|
||||
terminalDetail,
|
||||
_T("\u7ec8\u672b\u6e05\u573a\u751f\u6548\uff0c\u6e05\u9664 %d \u683c\uff0c\u5e76\u8fdb\u5165 10 \u79d2\u72c2\u70ed\u3002"),
|
||||
_T("终末清场启动,清除 %d 格,并进入 10 秒狂热。"),
|
||||
clearedByTerminal);
|
||||
SetFeedbackMessage(_T("\u7ec8\u672b\u6e05\u573a\u89e6\u53d1"), terminalDetail, 14);
|
||||
SetFeedbackMessage(_T("终末清场"), terminalDetail, 14);
|
||||
}
|
||||
else if (currentMode == MODE_ROGUE && rogueStats.lastChanceCount > 0)
|
||||
{
|
||||
@@ -567,8 +567,8 @@ void Fixing()
|
||||
}
|
||||
|
||||
SetFeedbackMessage(
|
||||
_T("\u6700\u540e\u4e00\u640f\u89e6\u53d1"),
|
||||
_T("\u81ea\u52a8\u6e05\u9664\u5e95\u90e8 3 \u884c\uff0c\u672c\u5c40\u7ee7\u7eed\u3002"),
|
||||
_T("最后一搏"),
|
||||
_T("底部 3 行被清除,战局得以延续。"),
|
||||
14);
|
||||
}
|
||||
else
|
||||
@@ -597,10 +597,10 @@ void Fixing()
|
||||
TCHAR explosiveDetail[128];
|
||||
_stprintf_s(
|
||||
explosiveDetail,
|
||||
_T("\u6e05\u9664 %d \u4e2a\u683c\u5b50 +%d Score"),
|
||||
_T("爆破清除 %d 格 +%d 分"),
|
||||
explosiveScoreGain > 0 ? explosiveScoreGain * 100 / rogueStats.scoreMultiplierPercent : 0,
|
||||
explosiveScoreGain);
|
||||
SetFeedbackMessage(_T("\u7206\u7834\u65b9\u5757\u89e6\u53d1"), explosiveDetail, 12);
|
||||
SetFeedbackMessage(_T("爆破核心"), explosiveDetail, 12);
|
||||
|
||||
if (rogueStats.chainBombLevel > 0 && explosiveCellCount > 0)
|
||||
{
|
||||
@@ -633,8 +633,8 @@ void Fixing()
|
||||
tScore = rogueStats.score;
|
||||
|
||||
TCHAR laserDetail[128];
|
||||
_stprintf_s(laserDetail, _T("\u6e05\u9664 %d \u683c +%d Score"), laserCellsCleared, laserScore);
|
||||
SetFeedbackMessage(_T("\u6fc0\u5149\u65b9\u5757\u89e6\u53d1"), laserDetail, 12);
|
||||
_stprintf_s(laserDetail, _T("激光贯穿一列,清除 %d 格 +%d 分"), laserCellsCleared, laserScore);
|
||||
SetFeedbackMessage(_T("棱镜激光"), laserDetail, 12);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -678,14 +678,14 @@ void Fixing()
|
||||
tScore = rogueStats.score;
|
||||
|
||||
TCHAR crossDetail[128];
|
||||
_stprintf_s(crossDetail, _T("\u6e05\u9664 %d \u683c +%d Score"), totalCrossCleared, crossScore);
|
||||
SetFeedbackMessage(_T("\u5341\u5b57\u65b9\u5757\u89e6\u53d1"), crossDetail, 12);
|
||||
_stprintf_s(crossDetail, _T("十字冲击清除 %d 格 +%d 分"), totalCrossCleared, crossScore);
|
||||
SetFeedbackMessage(_T("十字方块"), crossDetail, 12);
|
||||
}
|
||||
}
|
||||
|
||||
if (TryStabilizeBoard() > 0)
|
||||
{
|
||||
SetFeedbackMessage(_T("\u7a33\u5b9a\u7ed3\u6784\u751f\u6548"), _T("\u81ea\u52a8\u586b\u8865\u4e86\u4e00\u4e2a\u90bb\u8fd1\u7a7a\u6d1e\u3002"), 10);
|
||||
SetFeedbackMessage(_T("稳定结构"), _T("附近空洞被自动填补,阵型更加稳固。"), 10);
|
||||
}
|
||||
|
||||
if (currentMode == MODE_ROGUE)
|
||||
@@ -807,10 +807,10 @@ int DeleteLines()
|
||||
TCHAR followupDetail[128];
|
||||
_stprintf_s(
|
||||
followupDetail,
|
||||
_T("\u8ffd\u52a0\u5c0f\u7206\u70b8\u6e05\u9664 %d \u683c +%d Score"),
|
||||
_T("追加爆炸清除 %d 格 +%d 分"),
|
||||
followupCleared,
|
||||
followupScore);
|
||||
SetFeedbackMessage(_T("\u8fde\u73af\u70b8\u5f39\u89e6\u53d1"), followupDetail, 12);
|
||||
SetFeedbackMessage(_T("连环炸弹"), followupDetail, 12);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -832,8 +832,8 @@ int DeleteLines()
|
||||
tScore = rogueStats.score;
|
||||
|
||||
TCHAR miniDetail[128];
|
||||
_stprintf_s(miniDetail, _T("\u5f69\u8679\u6d88\u884c\u89e6\u53d1\u5c0f\u578b\u9ed1\u6d1e\uff0c\u6e05\u9664 %d \u683c +%d Score"), miniBlackHoleCleared, miniScore);
|
||||
SetFeedbackMessage(_T("\u865a\u7a7a\u6838\u5fc3\u89e6\u53d1"), miniDetail, 12);
|
||||
_stprintf_s(miniDetail, _T("彩虹消行撕开小型黑洞,清除 %d 格 +%d 分"), miniBlackHoleCleared, miniScore);
|
||||
SetFeedbackMessage(_T("虚空核心"), miniDetail, 12);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+39
-39
@@ -335,7 +335,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
};
|
||||
SelectObject(hdc, bodyFont);
|
||||
SetTextColor(hdc, textColor);
|
||||
DrawText(hdc, _T("\u8bf7\u9009\u62e9\u5f00\u59cb\u6a21\u5f0f"), -1, &subtitleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
||||
DrawText(hdc, _T("选择你的战局"), -1, &subtitleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
||||
|
||||
const TCHAR* modeNames[3] =
|
||||
{
|
||||
@@ -346,9 +346,9 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
|
||||
const TCHAR* modeDescriptions[3] =
|
||||
{
|
||||
_T("\u4fdd\u7559\u5f53\u524d\u539f\u7248\u4fc4\u7f57\u65af\u65b9\u5757\u73a9\u6cd5\uff0c\u76f4\u63a5\u5f00\u59cb\u5bf9\u5c40\u3002"),
|
||||
_T("\u8fdb\u5165 Rogue \u6a21\u5f0f\uff0c\u5df2\u63a5\u5165\u72ec\u7acb HUD \u4e0e\u7b49\u7ea7 / \u7ecf\u9a8c\u7ed3\u7b97\u3002"),
|
||||
_T("\u5355\u72ec\u67e5\u770b\u64cd\u4f5c\u65b9\u5f0f\u3001Rogue \u673a\u5236\u4e0e\u5f53\u524d\u7248\u672c\u8bf4\u660e\u3002")
|
||||
_T("纯粹方块挑战,专注消行、堆叠与生存。"),
|
||||
_T("在不断升级的棋盘中收集强化,构筑本局专属流派。"),
|
||||
_T("查看操作、成长、主动技能与特殊方块规则。")
|
||||
};
|
||||
|
||||
for (int i = 0; i < menuState.optionCount; i++)
|
||||
@@ -507,10 +507,10 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
_T("\u2191 / W\uff1a\u65cb\u8f6c\u65b9\u5757\r\n")
|
||||
_T("\u2193 / S\uff1a\u8f6f\u964d\r\n")
|
||||
_T("Space\uff1a\u786c\u964d\r\n")
|
||||
_T("C / Shift\uff1aHold\uff08\u89e3\u9501\u540e\uff09\r\n")
|
||||
_T("Z\uff1a\u91ca\u653e\u9ed1\u6d1e\uff08\u83b7\u5f97\u540e\uff09\r\n")
|
||||
_T("X\uff1a\u91ca\u653e\u6e05\u5c4f\u70b8\u5f39\uff08\u83b7\u5f97\u540e\uff09\r\n")
|
||||
_T("V\uff1a\u7a7a\u4e2d\u6362\u5f62\uff08\u83b7\u5f97\u540e\uff09\r\n")
|
||||
_T("C / Shift\uff1a备用仓\uff08获得后\uff09\r\n")
|
||||
_T("Z\uff1a黑洞奇点\uff08获得后\uff09\r\n")
|
||||
_T("X\uff1a清屏炸弹\uff08获得后\uff09\r\n")
|
||||
_T("V\uff1a空中换形\uff08获得后\uff09\r\n")
|
||||
_T("P\uff1a\u6682\u505c / \u7ee7\u7eed\r\n")
|
||||
_T("R\uff1a\u91cd\u5f00\u5f53\u524d\u5bf9\u5c40\r\n")
|
||||
_T("M\uff1a\u8fd4\u56de\u4e3b\u83dc\u5355"),
|
||||
@@ -538,10 +538,10 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
};
|
||||
DrawText(
|
||||
hdc,
|
||||
_T("\u7ecf\u5178\u6a21\u5f0f\uff1a\u4fdd\u6301\u539f\u7248\u4fc4\u7f57\u65af\u65b9\u5757\u73a9\u6cd5\uff0c\u4ee5\u6d88\u884c\u548c\u751f\u5b58\u4e3a\u4e3b\u3002\r\n\r\n")
|
||||
_T("Rogue \u6a21\u5f0f\uff1a\u6d88\u884c\u540e\u9664\u4e86\u83b7\u5f97\u5206\u6570\uff0c\u8fd8\u4f1a\u83b7\u5f97 EXP\u3002EXP \u8fbe\u5230\u9608\u503c\u540e\u89e6\u53d1\u5347\u7ea7\uff0c\u4ece\u4e09\u4e2a\u5f3a\u5316\u4e2d\u9009\u4e00\u4e2a\u3002\r\n\r\n")
|
||||
_T("\u5f53\u524d\u5df2\u63a5\u5165\uff1a\u7206\u7834\u8def\u7ebf\u3001\u96f7\u7535\u8def\u7ebf\u3001\u72c2\u70ed\u8def\u7ebf\u53ca\u591a\u79cd Rogue \u7279\u6b8a\u5f3a\u5316\u3002\r\n\r\n")
|
||||
_T("\u63d0\u793a\uff1a\u6682\u505c\u3001\u5931\u8d25\u548c\u5347\u7ea7\u4f1a\u8fdb\u5165\u4e0d\u540c\u754c\u9762\uff0c\u8bf7\u6839\u636e\u5c4f\u5e55\u63d0\u793a\u64cd\u4f5c\u3002"),
|
||||
_T("经典模式:没有成长与主动技能,只考验基础堆叠、消行和生存。\r\n\r\n")
|
||||
_T("Rogue \u6a21\u5f0f\uff1a消行获得分数与 EXP。EXP 满后选择强化,逐步塑造本局能力。\r\n\r\n")
|
||||
_T("强化会带来爆破、雷霆、狂热、黑洞、备用仓等能力;部分进阶强化需要先掌握对应前置。\r\n\r\n")
|
||||
_T("战斗持续越久,危险等级越高,底部封锁区会逐步压缩可用空间。"),
|
||||
-1,
|
||||
&rulesBody,
|
||||
DT_LEFT | DT_TOP | DT_WORDBREAK);
|
||||
@@ -664,7 +664,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
lockedRect.right - SS(12),
|
||||
lockedRect.bottom - SS(8)
|
||||
};
|
||||
DrawText(hdc, _T("\u96be\u5ea6\u538b\u7f29\u533a"), -1, &lockedTextRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
||||
DrawText(hdc, _T("封锁区"), -1, &lockedTextRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
||||
}
|
||||
|
||||
for (int i = 0; i < nGameHeight; i++)
|
||||
@@ -792,8 +792,8 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
}
|
||||
|
||||
HFONT oldFont = (HFONT)SelectObject(hdc, titleFont);
|
||||
DrawPanelHeader(leftPanelRect, _T("\u5bf9\u5c40\u4fe1\u606f"), 120);
|
||||
DrawPanelHeader(rightPanelRect, _T("\u9884\u89c8\u4e0e\u63d0\u793a"), 148);
|
||||
DrawPanelHeader(leftPanelRect, _T("战局信息"), 120);
|
||||
DrawPanelHeader(rightPanelRect, _T("预览与战术"), 148);
|
||||
|
||||
SelectObject(hdc, sectionFont);
|
||||
SetTextColor(hdc, textColor);
|
||||
@@ -816,7 +816,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
overviewRect.right - SS(18),
|
||||
overviewRect.top + SS(42)
|
||||
};
|
||||
DrawText(hdc, _T("\u57fa\u7840\u72b6\u6001"), -1, &overviewTitleRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
|
||||
DrawText(hdc, _T("战场状态"), -1, &overviewTitleRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
|
||||
|
||||
SelectObject(hdc, bodyFont);
|
||||
TCHAR overviewText[160];
|
||||
@@ -825,7 +825,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
{
|
||||
_stprintf_s(
|
||||
overviewText,
|
||||
_T("\u5f53\u524d\u5f97\u5206 %d\r\n\u5f53\u524d\u6a21\u5f0f Rogue\r\n\u7d2f\u8ba1\u6d88\u884c %d\r\n\u96be\u5ea6 Lv.%d \u9501\u884c %d"),
|
||||
_T("得分 %d\r\n模式 Rogue\r\n消行 %d\r\n危险 Lv.%d 封锁 %d"),
|
||||
tScore,
|
||||
totalLines,
|
||||
rogueStats.difficultyLevel,
|
||||
@@ -835,7 +835,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
{
|
||||
_stprintf_s(
|
||||
overviewText,
|
||||
_T("\u5f53\u524d\u5f97\u5206 %d\r\n\u5f53\u524d\u6a21\u5f0f \u7ecf\u5178\r\n\u7d2f\u8ba1\u6d88\u884c %d"),
|
||||
_T("得分 %d\r\n模式 经典\r\n消行 %d"),
|
||||
tScore,
|
||||
totalLines);
|
||||
}
|
||||
@@ -868,11 +868,11 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
progressRect.right - SS(18),
|
||||
progressRect.top + SS(42)
|
||||
};
|
||||
DrawText(hdc, _T("\u6210\u957f\u8fdb\u5ea6"), -1, &progressTitleRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
|
||||
DrawText(hdc, _T("成长进度"), -1, &progressTitleRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
|
||||
|
||||
SelectObject(hdc, bodyFont);
|
||||
TCHAR progressText[96];
|
||||
_stprintf_s(progressText, _T("\u5f53\u524d\u7b49\u7ea7 %d\r\nEXP %d / %d"), rogueStats.level, rogueStats.exp, rogueStats.requiredExp);
|
||||
_stprintf_s(progressText, _T("等级 %d\r\nEXP %d / %d"), rogueStats.level, rogueStats.exp, rogueStats.requiredExp);
|
||||
RECT progressTextRect =
|
||||
{
|
||||
progressRect.left + SS(22),
|
||||
@@ -963,7 +963,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
|
||||
SelectObject(hdc, sectionFont);
|
||||
SetTextColor(hdc, textColor);
|
||||
TextOut(hdc, upgradeListRect.left + SS(18), upgradeListRect.top + SS(16), _T("\u5df2\u83b7\u5f97\u5f3a\u5316"), lstrlen(_T("\u5df2\u83b7\u5f97\u5f3a\u5316")));
|
||||
TextOut(hdc, upgradeListRect.left + SS(18), upgradeListRect.top + SS(16), _T("已掌握强化"), lstrlen(_T("已掌握强化")));
|
||||
|
||||
SelectObject(hdc, smallFont);
|
||||
SetTextColor(hdc, RGB(128, 104, 118));
|
||||
@@ -1151,7 +1151,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
}
|
||||
if (lstrlen(upgradeSummary) == 0)
|
||||
{
|
||||
_stprintf_s(upgradeSummary, _T("\u6682\u672a\u9009\u62e9\u4efb\u4f55\u5f3a\u5316\u3002\r\n\u5347\u7ea7\u540e\u4f1a\u5728\u8fd9\u91cc\u7d2f\u79ef\u663e\u793a\u3002"));
|
||||
_stprintf_s(upgradeSummary, _T("尚未掌握强化。\r\n下一次升级将开启构筑。"));
|
||||
}
|
||||
|
||||
DrawText(hdc, upgradeSummary, -1, &upgradeBodyRect, DT_LEFT | DT_TOP | DT_WORDBREAK);
|
||||
@@ -1177,7 +1177,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
classicInfoRect.right - SS(22),
|
||||
classicInfoRect.bottom - SS(24)
|
||||
};
|
||||
DrawText(hdc, _T("\u7ecf\u5178\u6a21\u5f0f\u4fdd\u6301\u539f\u7248\u7b80\u5355\u8ba1\u5206\u3002\r\n\r\n\u6682\u4e0d\u63a5\u5165\u7b49\u7ea7\u3001EXP \u548c\u5f3a\u5316\u7cfb\u7edf\uff0c\u4e13\u6ce8\u4e8e\u57fa\u7840\u4fc4\u7f57\u65af\u65b9\u5757\u5bf9\u5c40\u3002"), -1, &classicBodyRect, DT_LEFT | DT_TOP | DT_WORDBREAK);
|
||||
DrawText(hdc, _T("经典模式:没有成长、EXP 和强化,只保留纯粹的消行挑战。\r\n\r\n在有限空间中保持阵型,尽可能活得更久。"), -1, &classicBodyRect, DT_LEFT | DT_TOP | DT_WORDBREAK);
|
||||
}
|
||||
RECT holdNextRect =
|
||||
{
|
||||
@@ -1238,8 +1238,8 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
DrawText(
|
||||
hdc,
|
||||
currentMode == MODE_ROGUE && rogueStats.holdUnlocked > 0
|
||||
? (holdUsedThisTurn ? _T("\u5df2\u4f7f\u7528\r\n\u843d\u5730\u540e\u6062\u590d") : _T("C / Shift\r\n\u6682\u5b58\u4e00\u6b21"))
|
||||
: _T("\u672a\u89e3\u9501\r\nHold \u5f3a\u5316"),
|
||||
? (holdUsedThisTurn ? _T("已使用\r\n落地后恢复") : _T("C / Shift\r\n暂存一次"))
|
||||
: _T("未开启\r\n需备用仓"),
|
||||
-1,
|
||||
&holdHintRect,
|
||||
DT_LEFT | DT_VCENTER | DT_WORDBREAK);
|
||||
@@ -1257,7 +1257,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
holdCard.right - SS(10),
|
||||
holdCard.bottom - SS(10)
|
||||
};
|
||||
DrawText(hdc, _T("\u9501\u5b9a"), -1, &holdLockedRect, DT_CENTER | DT_VCENTER | DT_WORDBREAK);
|
||||
DrawText(hdc, _T("封存"), -1, &holdLockedRect, DT_CENTER | DT_VCENTER | DT_WORDBREAK);
|
||||
}
|
||||
else if (holdType >= 0)
|
||||
{
|
||||
@@ -1403,7 +1403,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
|
||||
SelectObject(hdc, sectionFont);
|
||||
SetTextColor(hdc, textColor);
|
||||
TextOut(hdc, controlRect.left + SS(18), controlRect.top + SS(16), _T("\u6e38\u620f\u63d0\u793a"), lstrlen(_T("\u6e38\u620f\u63d0\u793a")));
|
||||
TextOut(hdc, controlRect.left + SS(18), controlRect.top + SS(16), _T("战斗日志"), lstrlen(_T("战斗日志")));
|
||||
|
||||
RECT feedbackPanelRect =
|
||||
{
|
||||
@@ -1425,7 +1425,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
};
|
||||
DrawText(
|
||||
hdc,
|
||||
feedbackState.visibleTicks > 0 ? feedbackState.title : _T("\u5f53\u524d\u52a8\u6001"),
|
||||
feedbackState.visibleTicks > 0 ? feedbackState.title : _T("局势平稳"),
|
||||
-1,
|
||||
&feedbackTitleRect,
|
||||
DT_LEFT | DT_VCENTER | DT_SINGLELINE);
|
||||
@@ -1443,7 +1443,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
hdc,
|
||||
feedbackState.visibleTicks > 0
|
||||
? feedbackState.detail
|
||||
: _T("\u6682\u65e0\u65b0\u4e8b\u4ef6\u3002\u5347\u7ea7\u9009\u62e9\u3001\u4e3b\u52a8\u6280\u80fd\u548c\u7279\u6b8a\u89e6\u53d1\u90fd\u4f1a\u5728\u8fd9\u91cc\u663e\u793a\u3002"),
|
||||
: _T("连消、主动技能和特殊方块的战斗记录会出现在这里。"),
|
||||
-1,
|
||||
&feedbackBodyRect,
|
||||
DT_LEFT | DT_TOP | DT_WORDBREAK);
|
||||
@@ -1457,7 +1457,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
controlRect.right - SS(22),
|
||||
controlRect.top + SS(224)
|
||||
};
|
||||
DrawText(hdc, _T("\u57fa\u672c\u6309\u952e"), -1, &tipsTitleRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
|
||||
DrawText(hdc, _T("操作指令"), -1, &tipsTitleRect, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
|
||||
|
||||
SelectObject(hdc, bodyFont);
|
||||
SetTextColor(hdc, RGB(128, 104, 118));
|
||||
@@ -1474,8 +1474,8 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
hdc,
|
||||
_T("\u79fb\u52a8\uff1a\u2190/\u2192 \u6216 A/D\r\n")
|
||||
_T("\u65cb\u8f6c/\u4e0b\u843d\uff1a\u2191/W\u3001\u2193/S\u3001Space\r\n")
|
||||
_T("\u5bf9\u5c40\uff1aP \u6682\u505c R \u91cd\u5f00 M \u83dc\u5355\r\n")
|
||||
_T("Rogue\uff1aC Hold Z \u9ed1\u6d1e X \u6e05\u5c4f V \u6362\u5f62"),
|
||||
_T("战局:P 暂停 R 重开 M 菜单\r\n")
|
||||
_T("技能:C 备用仓 Z 黑洞 X 炸弹 V 换形"),
|
||||
-1,
|
||||
&controlBodyRect,
|
||||
DT_LEFT | DT_TOP | DT_WORDBREAK);
|
||||
@@ -1486,7 +1486,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
hdc,
|
||||
_T("\u79fb\u52a8\uff1a\u2190/\u2192 \u6216 A/D\r\n")
|
||||
_T("\u65cb\u8f6c/\u4e0b\u843d\uff1a\u2191/W\u3001\u2193/S\u3001Space\r\n")
|
||||
_T("\u5bf9\u5c40\uff1aP \u6682\u505c R \u91cd\u5f00 M \u83dc\u5355"),
|
||||
_T("战局:P 暂停 R 重开 M 菜单"),
|
||||
-1,
|
||||
&controlBodyRect,
|
||||
DT_LEFT | DT_TOP | DT_WORDBREAK);
|
||||
@@ -1533,15 +1533,15 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
|
||||
if (suspendFlag)
|
||||
{
|
||||
DrawText(hdc, _T("\u6e38\u620f\u5df2\u6682\u505c"), -1, &titleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
||||
DrawText(hdc, _T("时间静止"), -1, &titleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
||||
SelectObject(hdc, bodyFont);
|
||||
DrawText(hdc, _T("\u6309 P \u952e\u7ee7\u7eed\u6e38\u620f"), -1, &tipRect, DT_CENTER | DT_VCENTER | DT_WORDBREAK);
|
||||
DrawText(hdc, _T("按 P 继续战斗"), -1, &tipRect, DT_CENTER | DT_VCENTER | DT_WORDBREAK);
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawText(hdc, _T("\u6e38\u620f\u7ed3\u675f"), -1, &titleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
||||
DrawText(hdc, _T("战局崩塌"), -1, &titleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
||||
SelectObject(hdc, bodyFont);
|
||||
DrawText(hdc, _T("\u6309 R \u952e\u91cd\u65b0\u5f00\u59cb\r\n\u6216\u6309 M \u8fd4\u56de\u83dc\u5355"), -1, &tipRect, DT_CENTER | DT_VCENTER | DT_WORDBREAK);
|
||||
DrawText(hdc, _T("按 R 重新挑战\r\n或按 M 返回菜单"), -1, &tipRect, DT_CENTER | DT_VCENTER | DT_WORDBREAK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1583,7 +1583,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
overlayRect.right,
|
||||
overlayRect.top + SS(68)
|
||||
};
|
||||
DrawText(hdc, _T("\u5347\u7ea7\u9009\u62e9"), -1, &overlayTitleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
||||
DrawText(hdc, _T("选择强化"), -1, &overlayTitleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
||||
|
||||
SelectObject(hdc, bodyFont);
|
||||
SetTextColor(hdc, textColor);
|
||||
@@ -1597,7 +1597,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
TCHAR overlaySubtitle[128];
|
||||
_stprintf_s(
|
||||
overlaySubtitle,
|
||||
_T("\u672c\u6b21\u51fa\u73b0 %d \u4e2a\u9009\u9879\uff0c\u8fd8\u53ef\u9009 %d \u4e2a"),
|
||||
_T("出现 %d 个强化,还可选择 %d 个"),
|
||||
upgradeUiState.optionCount,
|
||||
upgradeUiState.picksRemaining);
|
||||
DrawText(hdc, overlaySubtitle, -1, &overlaySubtitleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
|
||||
|
||||
+81
-81
@@ -47,46 +47,46 @@ enum UpgradeId
|
||||
|
||||
static const UpgradeEntry kUpgradePool[] =
|
||||
{
|
||||
{ UPGRADE_SCORE_MULTIPLIER, -1, 100, true, _T("\u5206\u6570\u500d\u7387"), _T("\u5f97\u5206"), _T("\u6240\u6709\u5f97\u5206\u63d0\u9ad8 20%\u3002") },
|
||||
{ UPGRADE_COMBO_BONUS, -1, 95, true, _T("\u8fde\u51fb\u52a0\u6210"), _T("\u8282\u594f"), _T("\u8fde\u7eed\u6d88\u884c\u65f6\u8ffd\u52a0\u8fde\u51fb\u5956\u52b1\u3002") },
|
||||
{ UPGRADE_SLOW_FALL, -1, 90, true, _T("\u6162\u901f\u4e0b\u843d"), _T("\u64cd\u4f5c"), _T("\u81ea\u7136\u4e0b\u843d\u53d8\u6162\uff0c\u6bcf\u6b21\u63d0\u9ad8 80ms\u3002") },
|
||||
{ UPGRADE_PREVIEW_PLUS_ONE, 3, 85, false, _T("\u989d\u5916\u9884\u89c8"), _T("\u89c6\u91ce"), _T("\u4e0b\u4e00\u4e2a\u65b9\u5757\u9884\u89c8 +1\uff0c\u6700\u591a 3 \u4e2a\u3002") },
|
||||
{ UPGRADE_EXP_MULTIPLIER, -1, 100, true, _T("\u7ecf\u9a8c\u5f3a\u5316"), _T("\u6210\u957f"), _T("\u540e\u7eed\u6d88\u884c\u83b7\u5f97 EXP \u63d0\u9ad8 25%\u3002") },
|
||||
{ UPGRADE_LAST_CHANCE, 1, 72, false, _T("\u6700\u540e\u4e00\u640f"), _T("\u4fdd\u547d"), _T("\u9996\u6b21\u9876\u6b7b\u65f6\u81ea\u52a8\u6e05\u9664\u5e95\u90e8 3 \u884c\u5e76\u7ee7\u7eed\u6e38\u620f\u3002") },
|
||||
{ UPGRADE_HOLD_UNLOCK, 1, 78, false, _T("Hold \u89e3\u9501"), _T("\u7279\u6b8a"), _T("\u89e3\u9501 Hold \u69fd\uff0c\u5bf9\u5c40\u4e2d\u53ef\u7528 C \u6216 Shift \u6682\u5b58\u65b9\u5757\u3002") },
|
||||
{ UPGRADE_PRESSURE_RELIEF, -1, 82, true, _T("\u51cf\u538b"), _T("\u7279\u6b8a"), _T("\u7acb\u5373\u6e05\u9664\u5f53\u524d\u6700\u9ad8\u5360\u7528\u884c\uff0c\u4e3a\u76d8\u9762\u817e\u51fa\u547c\u5438\u7a7a\u95f4\u3002") },
|
||||
{ UPGRADE_SWEEPER, -1, 74, true, _T("\u6e05\u626b\u8005"), _T("\u7279\u6b8a"), _T("\u7d2f\u8ba1\u6d88\u884c\u5145\u80fd\uff0c\u6536\u6ee1\u540e\u81ea\u52a8\u6e05\u9664\u5e95\u90e8 1 \u884c\u3002") },
|
||||
{ UPGRADE_EXPLOSIVE_PIECE, -1, 76, true, _T("\u7206\u7834\u65b9\u5757"), _T("\u7279\u6b8a"), _T("\u63d0\u9ad8\u7206\u7834\u65b9\u5757\u51fa\u73b0\u6982\u7387\uff0c\u843d\u5730\u65f6\u89e6\u53d1 3x3 \u6e05\u9664\u3002") },
|
||||
{ UPGRADE_CHAIN_BLAST, 1, 92, false, _T("\u8fde\u9501\u7206\u7834"), _T("\u8fdb\u9636"), _T("\u6d88\u884c\u540e\u5bf9\u88ab\u6e05\u9664\u884c\u9644\u8fd1\u968f\u673a\u6e05\u6389\u51e0\u683c\u3002") },
|
||||
{ UPGRADE_CHAIN_BOMB, 1, 110, false, _T("\u8fde\u73af\u70b8\u5f39"), _T("\u8fdb\u5316"), _T("\u7206\u7834\u8303\u56f4\u63d0\u5347\u4e3a 5x5\uff0c\u82e5\u5f15\u53d1\u6d88\u884c\u5219\u8ffd\u52a0\u4e00\u6b21\u5c0f\u7206\u70b8\u3002") },
|
||||
{ UPGRADE_LASER_PIECE, -1, 72, true, _T("\u6fc0\u5149\u65b9\u5757"), _T("\u7279\u6b8a"), _T("\u63d0\u9ad8\u6fc0\u5149\u65b9\u5757\u51fa\u73b0\u6982\u7387\uff0c\u843d\u5730\u540e\u6e05\u9664\u6240\u5728\u6574\u5217\u3002") },
|
||||
{ UPGRADE_THUNDER_TETRIS, 1, 94, false, _T("\u96f7\u9706\u56db\u6d88"), _T("\u8fdb\u9636"), _T("\u6bcf\u6b21\u5b8c\u6210\u56db\u6d88\u65f6\uff0c\u989d\u5916\u6e05\u9664\u968f\u673a 2 \u884c\u3002") },
|
||||
{ UPGRADE_THUNDER_LASER, 1, 112, false, _T("\u96f7\u9706\u6fc0\u5149"), _T("\u8fdb\u5316"), _T("\u56db\u6d88\u65f6\u989d\u5916\u53d1\u5c04 2 \u9053\u6fc0\u5149\uff0c\u968f\u673a\u6e05\u9664 2 \u5217\u5e76\u83b7\u5f97 EXP\u3002") },
|
||||
{ UPGRADE_FEVER_MODE, 1, 84, false, _T("\u72c2\u70ed\u6a21\u5f0f"), _T("\u8fdb\u9636"), _T("\u7d2f\u8ba1\u6d88\u884c 20 \u884c\u540e\u8fdb\u5165 10 \u79d2\u72c2\u70ed\u72b6\u6001\u3002") },
|
||||
{ UPGRADE_RAGE_STACK, 1, 84, false, _T("\u66b4\u8d70\u5806\u53e0"), _T("\u8fdb\u9636"), _T("\u8fde\u7eed\u6d88\u884c\u8d8a\u591a\uff0c\u5f97\u5206\u500d\u7387\u8ffd\u52a0\u8d8a\u9ad8\u3002") },
|
||||
{ UPGRADE_INFINITE_FEVER, 1, 110, false, _T("\u65e0\u9650\u72c2\u70ed"), _T("\u8fdb\u5316"), _T("\u72c2\u70ed\u671f\u95f4\u6d88\u884c\u53ef\u5ef6\u957f\u65f6\u95f4\uff0c\u8fde\u51fb\u8d8a\u9ad8\u500d\u7387\u8d8a\u5f3a\u3002") },
|
||||
{ UPGRADE_SCREEN_BOMB, 1, 78, false, _T("\u6e05\u5c4f\u70b8\u5f39"), _T("\u8fdb\u9636"), _T("\u7d2f\u8ba1\u6d88\u884c 30 \u884c\u540e\u83b7\u5f97 1 \u6b21\u6e05\u5c4f\u70b8\u5f39\uff0c\u53ef\u81ea\u52a8\u6216\u4e3b\u52a8\u6e05\u9664\u5e95\u90e8 5 \u884c\u3002") },
|
||||
{ UPGRADE_TERMINAL_CLEAR, 1, 108, false, _T("\u7ec8\u672b\u6e05\u573a"), _T("\u8fdb\u5316"), _T("\u6fc0\u6d3b\u6700\u540e\u4e00\u640f\u65f6\u81ea\u52a8\u91ca\u653e\u4e00\u6b21\u6e05\u5c4f\u70b8\u5f39\uff0c\u5e76\u8fdb\u5165 10 \u79d2\u72c2\u70ed\u3002") },
|
||||
{ UPGRADE_DUAL_CHOICE, 1, 68, false, _T("\u53cc\u91cd\u9009\u62e9"), _T("\u8fdb\u9636"), _T("\u6bcf\u6b21\u5347\u7ea7\u53ef\u989d\u5916\u518d\u9009 1 \u4e2a\u5f3a\u5316\uff0c\u4f46\u4e0b\u4e00\u6b21\u5347\u7ea7\u9700\u6c42 +30%\u3002") },
|
||||
{ UPGRADE_DESTINY_WHEEL, 1, 104, false, _T("\u547d\u8fd0\u8f6e\u76d8"), _T("\u8fdb\u5316"), _T("\u6bcf\u6b21\u5347\u7ea7\u51fa\u73b0 6 \u4e2a\u9009\u9879\uff0c\u53ef\u9009 2 \u4e2a\uff0c\u4f46\u5176\u4e2d 1 \u4e2a\u9644\u5e26\u8d1f\u9762\u6548\u679c\u3002") },
|
||||
{ UPGRADE_PERFECT_ROTATE, 1, 82, false, _T("\u5b8c\u7f8e\u65cb\u8f6c"), _T("\u64cd\u4f5c"), _T("\u65cb\u8f6c\u5931\u8d25\u65f6\u81ea\u52a8\u5c1d\u8bd5\u5de6\u53f3\u5404\u504f\u79fb 1 \u683c\u8fdb\u884c\u4fee\u6b63\u3002") },
|
||||
{ UPGRADE_TIME_DILATION, 1, 80, false, _T("\u65f6\u95f4\u7f13\u6d41"), _T("\u4fdd\u547d"), _T("\u76d8\u9762\u63a5\u8fd1\u9876\u7aef\u65f6\u81ea\u52a8\u964d\u4f4e\u4e0b\u843d\u901f\u5ea6\uff0c\u4e3a\u8865\u6551\u7559\u51fa\u53cd\u5e94\u7a7a\u95f4\u3002") },
|
||||
{ UPGRADE_HIGH_PRESSURE, 1, 70, false, _T("\u9ad8\u538b\u5956\u52b1"), _T("\u98ce\u9669"), _T("\u4e0b\u843d\u901f\u5ea6\u63d0\u9ad8 15%\uff0c\u4f46\u5f97\u5206\u4e0e EXP \u989d\u5916\u63d0\u9ad8 50%\u3002") },
|
||||
{ UPGRADE_TETRIS_GAMBLE, 1, 78, false, _T("\u8d4c\u547d\u56db\u6d88"), _T("\u98ce\u9669"), _T("\u666e\u901a 1~3 \u6d88\u6536\u76ca\u964d\u4f4e\uff0c\u4f46 4 \u6d88\u6536\u76ca\u66b4\u589e\u3002") },
|
||||
{ UPGRADE_EXTREME_PLAYER, 1, 114, false, _T("\u6781\u9650\u73a9\u5bb6"), _T("\u8fdb\u5316"), _T("\u7ec4\u5408\u9ad8\u538b\u4e0e\u8d4c\u547d\u56db\u6d88\uff0c\u901f\u5ea6\u8fdb\u4e00\u6b65\u63d0\u9ad8\uff0c\u56db\u6d88\u540e\u77ed\u6682\u7f13\u901f\u3002") },
|
||||
{ UPGRADE_UPGRADE_SHOCKWAVE, 1, 106, false, _T("\u5347\u7ea7\u51b2\u51fb\u6ce2"), _T("\u8fdb\u9636"), _T("\u5373\u5c06\u5347\u7ea7\u65f6\u81ea\u52a8\u6e05\u9664\u5e95\u90e8 2 \u884c\uff0c\u5f3a\u5316\u5347\u7ea7\u8282\u594f\u53cd\u9988\u3002") },
|
||||
{ UPGRADE_EVOLUTION_IMPACT, 1, 118, false, _T("\u8fdb\u5316\u51b2\u51fb"), _T("\u8fdb\u5316"), _T("\u5347\u7ea7\u65f6\u6e05\u9664\u5e95\u90e8 3 \u884c\uff0c\u5e76\u83b7\u5f97 10 \u79d2\u53cc\u500d EXP\u3002") },
|
||||
{ UPGRADE_CONTROL_MASTER, 1, 112, false, _T("\u64cd\u63a7\u5927\u5e08"), _T("\u8fdb\u5316"), _T("Hold \u540e\u77ed\u6682\u964d\u4f4e\u4e0b\u843d\u901f\u5ea6\uff0c\u5e76\u989d\u5916\u589e\u52a0 1 \u4e2a\u9884\u89c8\u65b9\u5757\u3002") },
|
||||
{ UPGRADE_BLOCK_STORM, 1, 82, false, _T("\u65b9\u5757\u98ce\u66b4"), _T("\u723d\u611f"), _T("\u63a5\u4e0b\u6765 5 \u4e2a\u65b9\u5757\u5168\u90e8\u53d8\u6210 I \u5757\uff0c\u5feb\u901f\u5236\u9020\u56db\u6d88\u673a\u4f1a\u3002") },
|
||||
{ UPGRADE_CROSS_PIECE, -1, 76, true, _T("\u5341\u5b57\u65b9\u5757"), _T("\u723d\u611f"), _T("\u63d0\u9ad8\u5341\u5b57\u65b9\u5757\u51fa\u73b0\u6982\u7387\uff0c\u843d\u5730\u540e\u6e05\u9664\u6240\u5728\u884c\u4e0e\u6240\u5728\u5217\u3002") },
|
||||
{ UPGRADE_BLACK_HOLE, 1, 78, false, _T("\u9ed1\u6d1e"), _T("\u7279\u6b8a"), _T("\u83b7\u5f97 1 \u6b21\u4e3b\u52a8\u9ed1\u6d1e\uff0c\u91ca\u653e\u540e\u6e05\u9664\u68cb\u76d8\u4e0a\u6570\u91cf\u6700\u591a\u7684\u4e00\u79cd\u65b9\u5757\u3002") },
|
||||
{ UPGRADE_AIR_RESHAPE, 1, 74, false, _T("\u7a7a\u4e2d\u6362\u5f62"), _T("\u64cd\u4f5c"), _T("\u83b7\u5f97 1 \u6b21\u4e3b\u52a8\u6362\u5f62\uff0c\u53ef\u5c06\u5f53\u524d\u65b9\u5757\u53d8\u4e3a I \u5757\u3002") },
|
||||
{ UPGRADE_RAINBOW_PIECE, 1, 74, false, _T("\u5f69\u8679\u65b9\u5757"), _T("\u723d\u611f"), _T("\u6982\u7387\u751f\u6210\u5f69\u8679\u65b9\u5757\uff0c\u843d\u5730\u540e\u53ef\u81ea\u52a8\u8865\u5168\u884c\u5185\u7f3a\u53e3\uff0c\u66f4\u5bb9\u6613\u8865\u9f50\u6d88\u884c\u3002") },
|
||||
{ UPGRADE_VOID_CORE, 1, 112, false, _T("\u865a\u7a7a\u6838\u5fc3"), _T("\u8fdb\u5316"), _T("\u9ed1\u6d1e\u540e\u989d\u5916\u751f\u6210 1 \u4e2a\u5f69\u8679\u65b9\u5757\uff0c\u5f69\u8679\u6d88\u884c\u65f6\u89e6\u53d1\u5c0f\u578b\u9ed1\u6d1e\u3002") },
|
||||
{ UPGRADE_STABLE_STRUCTURE, -1, 72, true, _T("\u7a33\u5b9a\u7ed3\u6784"), _T("\u7279\u6b8a"), _T("\u843d\u5730\u540e\u5c0f\u6982\u7387\u81ea\u52a8\u586b\u8865\u90bb\u8fd1\u7a7a\u6d1e\uff0c\u63d0\u9ad8\u76d8\u9762\u7ed3\u6784\u7a33\u5b9a\u6027\u3002") },
|
||||
{ UPGRADE_DOUBLE_GROWTH, 1, 84, false, _T("\u6210\u957f\u6838\u5fc3"), _T("\u6210\u957f"), _T("\u6c38\u4e45\u83b7\u5f97 +15% \u5f97\u5206\u4e0e +15% EXP\uff0c\u53ea\u80fd\u9009\u62e9\u4e00\u6b21\u3002") },
|
||||
{ UPGRADE_PIECE_TUNING, -1, 64, true, _T("\u65b9\u5757\u6539\u9020"), _T("\u7279\u6b8a"), _T("\u9009\u62e9\u4e00\u79cd\u65b9\u5757\uff0c\u964d\u4f4e\u5176\u540e\u7eed\u51fa\u73b0\u6982\u7387\u3002") },
|
||||
{ UPGRADE_GAMBLER, -1, 64, true, _T("\u8d4c\u5f92"), _T("\u7279\u6b8a"), _T("\u9009\u62e9\u5f3a\u5316\u65f6\uff0c\u6709\u6982\u7387\u53cc\u500d\u751f\u6548\uff0c\u4e5f\u6709\u6982\u7387\u5b8c\u5168\u843d\u7a7a\u3002") }
|
||||
{ UPGRADE_SCORE_MULTIPLIER, -1, 100, true, _T("赏金纹章"), _T("得分"), _T("所有得分提高 20%,每次选择都会继续叠加。") },
|
||||
{ UPGRADE_COMBO_BONUS, -1, 95, true, _T("连击律动"), _T("节奏"), _T("连续消行会追加连击奖励,节奏越稳收益越高。") },
|
||||
{ UPGRADE_SLOW_FALL, -1, 90, true, _T("缓坠羽翼"), _T("操作"), _T("自然下落延缓 80ms,为摆放和补洞争取更多时间。") },
|
||||
{ UPGRADE_PREVIEW_PLUS_ONE, 3, 85, false, _T("先见之眼"), _T("视野"), _T("下一个方块预览 +1,最多可同时看见 3 个。") },
|
||||
{ UPGRADE_EXP_MULTIPLIER, -1, 100, true, _T("成长印记"), _T("成长"), _T("消行获得的 EXP 提高 25%,更快迎来下一次强化。") },
|
||||
{ UPGRADE_LAST_CHANCE, 1, 72, false, _T("最后一搏"), _T("保命"), _T("首次濒临失败时清除底部 3 行,让本局继续战斗。") },
|
||||
{ UPGRADE_HOLD_UNLOCK, 1, 78, false, _T("备用仓"), _T("特殊"), _T("解锁 Hold。按 C 或 Shift 暂存下落方块,每个方块落地前限用一次。") },
|
||||
{ UPGRADE_PRESSURE_RELIEF, -1, 82, true, _T("卸压清场"), _T("特殊"), _T("立刻清除最高占用行,为棋盘腾出一段喘息空间。") },
|
||||
{ UPGRADE_SWEEPER, -1, 74, true, _T("底线清道夫"), _T("特殊"), _T("消行会为清道夫充能,充满后自动清除底部 1 行。") },
|
||||
{ UPGRADE_EXPLOSIVE_PIECE, -1, 76, true, _T("爆破核心"), _T("特殊"), _T("提高爆破方块出现率。爆破方块落地时清除 3x3 区域。") },
|
||||
{ UPGRADE_CHAIN_BLAST, 1, 92, false, _T("连锁火花"), _T("进阶"), _T("每次消行后,在被清除行附近追加随机破坏。") },
|
||||
{ UPGRADE_CHAIN_BOMB, 1, 110, false, _T("连环炸弹"), _T("进化"), _T("爆破范围扩大为 5x5;若引发消行,再追加一次小爆炸。") },
|
||||
{ UPGRADE_LASER_PIECE, -1, 72, true, _T("棱镜激光"), _T("特殊"), _T("提高激光方块出现率。激光方块落地后清除所在整列。") },
|
||||
{ UPGRADE_THUNDER_TETRIS, 1, 94, false, _T("雷霆四消"), _T("进阶"), _T("完成四消时,额外轰击随机 2 行。") },
|
||||
{ UPGRADE_THUNDER_LASER, 1, 112, false, _T("雷霆棱镜"), _T("进化"), _T("四消时额外发射 2 道激光,随机清除 2 列并获得 EXP。") },
|
||||
{ UPGRADE_FEVER_MODE, 1, 84, false, _T("狂热节拍"), _T("进阶"), _T("累计消行 20 行后进入 10 秒狂热:得分与 EXP 翻倍。") },
|
||||
{ UPGRADE_RAGE_STACK, 1, 84, false, _T("怒火连段"), _T("进阶"), _T("连续消行越多,得分倍率追加越高。") },
|
||||
{ UPGRADE_INFINITE_FEVER, 1, 110, false, _T("无尽狂热"), _T("进化"), _T("狂热期间消行可延长狂热时间;连击越高,倍率越凶。") },
|
||||
{ UPGRADE_SCREEN_BOMB, 1, 78, false, _T("清屏炸弹"), _T("进阶"), _T("累计消行 30 行后获得 1 枚炸弹。按 X 可清除底部 5 行。") },
|
||||
{ UPGRADE_TERMINAL_CLEAR, 1, 108, false, _T("终末清场"), _T("进化"), _T("最后一搏启动时,自动引爆 1 枚清屏炸弹,并进入 10 秒狂热。") },
|
||||
{ UPGRADE_DUAL_CHOICE, 1, 68, false, _T("双重抉择"), _T("进阶"), _T("每次升级可额外选择 1 个强化,但下一次升级所需 EXP +30%。") },
|
||||
{ UPGRADE_DESTINY_WHEEL, 1, 104, false, _T("命运轮盘"), _T("进化"), _T("升级时出现 6 个选项,可选择 2 个;其中 1 个会携带诅咒。") },
|
||||
{ UPGRADE_PERFECT_ROTATE, 1, 82, false, _T("完美旋转"), _T("操作"), _T("旋转受阻时,自动尝试左右各偏移 1 格完成修正。") },
|
||||
{ UPGRADE_TIME_DILATION, 1, 80, false, _T("时间缓流"), _T("保命"), _T("棋盘接近顶端时自动减速,为补救留下反应空间。") },
|
||||
{ UPGRADE_HIGH_PRESSURE, 1, 70, false, _T("高压悬赏"), _T("风险"), _T("下落速度提高 15%,但得分与 EXP 额外提高 50%。") },
|
||||
{ UPGRADE_TETRIS_GAMBLE, 1, 78, false, _T("豪赌四消"), _T("风险"), _T("1~3 消收益降低,但四消收益暴增。") },
|
||||
{ UPGRADE_EXTREME_PLAYER, 1, 114, false, _T("极限玩家"), _T("进化"), _T("融合高压悬赏与豪赌四消。速度更快,四消后短暂缓速。") },
|
||||
{ UPGRADE_UPGRADE_SHOCKWAVE, 1, 106, false, _T("升级冲击波"), _T("进阶"), _T("即将升级时自动清除底部 2 行,让强化节奏更猛烈。") },
|
||||
{ UPGRADE_EVOLUTION_IMPACT, 1, 118, false, _T("进化冲击"), _T("进化"), _T("升级时清除底部 3 行,并获得 10 秒双倍 EXP。") },
|
||||
{ UPGRADE_CONTROL_MASTER, 1, 112, false, _T("操控大师"), _T("进化"), _T("使用备用仓后短暂降低下落速度,并额外增加 1 个预览方块。") },
|
||||
{ UPGRADE_BLOCK_STORM, 1, 82, false, _T("方块风暴"), _T("爆发"), _T("接下来 5 个方块全部变为 I 块,快速制造四消机会。") },
|
||||
{ UPGRADE_CROSS_PIECE, -1, 76, true, _T("十字方块"), _T("爆发"), _T("提高十字方块出现率。十字方块落地后清除所在行与所在列。") },
|
||||
{ UPGRADE_BLACK_HOLE, 1, 78, false, _T("黑洞奇点"), _T("特殊"), _T("获得 1 次黑洞。按 Z 吞噬棋盘上数量最多的一种固定方块。") },
|
||||
{ UPGRADE_AIR_RESHAPE, 1, 74, false, _T("空中换形"), _T("操作"), _T("获得 1 次换形。按 V 将正在下落的方块重塑为 I 块。") },
|
||||
{ UPGRADE_RAINBOW_PIECE, 1, 74, false, _T("彩虹方块"), _T("爆发"), _T("有概率生成彩虹方块。落地后自动补齐行内缺口,更容易达成消行。") },
|
||||
{ UPGRADE_VOID_CORE, 1, 112, false, _T("虚空核心"), _T("进化"), _T("黑洞后额外生成 1 个彩虹方块;彩虹消行时撕开小型黑洞。") },
|
||||
{ UPGRADE_STABLE_STRUCTURE, -1, 72, true, _T("稳定结构"), _T("特殊"), _T("落地后有小概率填补邻近空洞,让阵型更加稳固。") },
|
||||
{ UPGRADE_DOUBLE_GROWTH, 1, 84, false, _T("成长核心"), _T("成长"), _T("永久获得 +15% 得分与 +15% EXP;每局只能选择一次。") },
|
||||
{ UPGRADE_PIECE_TUNING, -1, 64, true, _T("方块改造"), _T("特殊"), _T("选择一种方块,降低它之后的出现率。") },
|
||||
{ UPGRADE_GAMBLER, -1, 64, true, _T("赌徒契约"), _T("特殊"), _T("选择强化时,有概率效果翻倍,也有概率本次落空。") }
|
||||
};
|
||||
|
||||
static constexpr int kUpgradePoolSize = sizeof(kUpgradePool) / sizeof(kUpgradePool[0]);
|
||||
@@ -217,11 +217,11 @@ void AdvanceRogueDifficulty(int elapsedMs)
|
||||
TCHAR difficultyDetail[128];
|
||||
_stprintf_s(
|
||||
difficultyDetail,
|
||||
_T("\u96be\u5ea6 Lv.%d\uff0c\u4e0b\u843d\u52a0\u5feb\uff0c\u5df2\u9501\u5b9a\u5e95\u90e8 %d/%d \u884c\u3002"),
|
||||
_T("危险等级 Lv.%d,上方压力增强,底部封锁 %d/%d 行。"),
|
||||
rogueStats.difficultyLevel,
|
||||
GetRogueLockedRows(),
|
||||
kMaxRogueLockedRows);
|
||||
SetFeedbackMessage(lockedRowsChanged ? _T("\u68cb\u76d8\u538b\u7f29") : _T("\u96be\u5ea6\u4e0a\u5347"), difficultyDetail, 12);
|
||||
SetFeedbackMessage(lockedRowsChanged ? _T("战场收缩") : _T("压力升高"), difficultyDetail, 12);
|
||||
}
|
||||
|
||||
static int GetUpgradeCurrentLevel(int upgradeId)
|
||||
@@ -1216,12 +1216,12 @@ static void FillUpgradeOptions()
|
||||
|
||||
upgradeUiState.options[i].targetPieceType = targetPieceType;
|
||||
upgradeUiState.options[i].currentLevel = rogueStats.pieceTuningLevels[targetPieceType];
|
||||
upgradeUiState.options[i].name = _T("\u65b9\u5757\u6539\u9020");
|
||||
upgradeUiState.options[i].name = _T("方块改造");
|
||||
|
||||
static TCHAR tuningDescriptions[6][64];
|
||||
_stprintf_s(
|
||||
tuningDescriptions[i],
|
||||
_T("\u964d\u4f4e %s \u65b9\u5757\u7684\u51fa\u73b0\u6982\u7387\u3002"),
|
||||
_T("%s 块之后的出现率降低。"),
|
||||
GetPieceShortName(targetPieceType));
|
||||
upgradeUiState.options[i].description = tuningDescriptions[i];
|
||||
}
|
||||
@@ -1619,10 +1619,10 @@ void ApplyLineClearResult(int linesCleared)
|
||||
TCHAR blastDetail[128];
|
||||
_stprintf_s(
|
||||
blastDetail,
|
||||
_T("\u989d\u5916\u6e05\u9664 %d \u683c +%d Score"),
|
||||
_T("余波炸裂,清除 %d 格 +%d 分"),
|
||||
chainBlastCells,
|
||||
chainBlastScore);
|
||||
SetFeedbackMessage(_T("\u8fde\u9501\u7206\u7834\u89e6\u53d1"), blastDetail, 12);
|
||||
SetFeedbackMessage(_T("连锁火花"), blastDetail, 12);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1651,7 +1651,7 @@ void ApplyLineClearResult(int linesCleared)
|
||||
}
|
||||
rogueStats.score += thunderScore;
|
||||
tScore = rogueStats.score;
|
||||
SetFeedbackMessage(_T("\u96f7\u9706\u56db\u6d88\u89e6\u53d1"), _T("\u56db\u6d88\u540e\u989d\u5916\u6e05\u7406\u4e86 2 \u884c\u8303\u56f4\u5185\u7684\u683c\u5b50\u3002"), 12);
|
||||
SetFeedbackMessage(_T("雷霆四消"), _T("雷击落下,额外清理了 2 行范围内的方块。"), 12);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1683,11 +1683,11 @@ void ApplyLineClearResult(int linesCleared)
|
||||
TCHAR thunderLaserDetail[128];
|
||||
_stprintf_s(
|
||||
thunderLaserDetail,
|
||||
_T("\u968f\u673a\u6fc0\u5149\u6e05\u9664 %d \u683c +%d Score +%d EXP"),
|
||||
_T("雷光穿透,清除 %d 格 +%d 分 +%d EXP"),
|
||||
laserCellsCleared,
|
||||
laserScore,
|
||||
laserExp);
|
||||
SetFeedbackMessage(_T("\u96f7\u9706\u6fc0\u5149\u89e6\u53d1"), thunderLaserDetail, 12);
|
||||
SetFeedbackMessage(_T("雷霆棱镜"), thunderLaserDetail, 12);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1709,11 +1709,11 @@ void ApplyLineClearResult(int linesCleared)
|
||||
TCHAR sweeperDetail[128];
|
||||
_stprintf_s(
|
||||
sweeperDetail,
|
||||
_T("\u81ea\u52a8\u6e05\u7406\u5e95\u90e8 %d \u884c \u5269\u4f59\u5145\u80fd %d/%d"),
|
||||
_T("清扫底部 %d 行 充能 %d/%d"),
|
||||
clearedBySweeper,
|
||||
rogueStats.sweeperCharge,
|
||||
sweeperThreshold);
|
||||
SetFeedbackMessage(_T("\u6e05\u626b\u8005\u89e6\u53d1"), sweeperDetail, 12);
|
||||
SetFeedbackMessage(_T("底线清道夫"), sweeperDetail, 12);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1744,23 +1744,23 @@ void ApplyLineClearResult(int linesCleared)
|
||||
{
|
||||
_stprintf_s(
|
||||
shockwaveDetail,
|
||||
_T("\u5347\u7ea7\u540c\u65f6\u6e05\u6389\u5e95\u90e8 %d \u884c\uff0c\u5e76\u8fdb\u5165 10 \u79d2\u53cc\u500d EXP\u72b6\u6001\u3002"),
|
||||
_T("进化能量爆发,清除底部 %d 行,并进入 10 秒双倍 EXP。"),
|
||||
clearedRows);
|
||||
SetFeedbackMessage(_T("\u8fdb\u5316\u51b2\u51fb\u89e6\u53d1"), shockwaveDetail, 14);
|
||||
SetFeedbackMessage(_T("进化冲击"), shockwaveDetail, 14);
|
||||
}
|
||||
else
|
||||
{
|
||||
_stprintf_s(shockwaveDetail, _T("\u5373\u5c06\u5347\u7ea7\uff0c\u63d0\u524d\u6e05\u6389\u5e95\u90e8 %d \u884c\u3002"), clearedRows);
|
||||
SetFeedbackMessage(_T("\u5347\u7ea7\u51b2\u51fb\u6ce2\u89e6\u53d1"), shockwaveDetail, 12);
|
||||
_stprintf_s(shockwaveDetail, _T("灵感涌现前,冲击波清除底部 %d 行。"), clearedRows);
|
||||
SetFeedbackMessage(_T("升级冲击波"), shockwaveDetail, 12);
|
||||
}
|
||||
}
|
||||
|
||||
TCHAR feedbackTitle[64];
|
||||
TCHAR feedbackDetail[128];
|
||||
_stprintf_s(feedbackTitle, _T("Level Up x%d"), levelUps);
|
||||
_stprintf_s(feedbackTitle, _T("灵感涌现 x%d"), levelUps);
|
||||
_stprintf_s(
|
||||
feedbackDetail,
|
||||
_T("\u5f53\u524d Lv.%d EXP %d/%d \u5373\u5c06\u8fdb\u5165\u5f3a\u5316\u9009\u62e9"),
|
||||
_T("等级 Lv.%d EXP %d/%d 选择新的强化"),
|
||||
rogueStats.level,
|
||||
rogueStats.exp,
|
||||
rogueStats.requiredExp);
|
||||
@@ -1815,12 +1815,12 @@ void ConfirmUpgradeSelection()
|
||||
if (roll < gamblerChance)
|
||||
{
|
||||
applyCount = 2;
|
||||
_stprintf_s(gamblerSuffix, _T(" \u8d4c\u5f92\uff1a\u53cc\u500d"));
|
||||
_stprintf_s(gamblerSuffix, _T(" 赌徒命中:效果翻倍"));
|
||||
}
|
||||
else if (roll >= 100 - gamblerChance)
|
||||
{
|
||||
applyCount = 0;
|
||||
_stprintf_s(gamblerSuffix, _T(" \u8d4c\u5f92\uff1a\u843d\u7a7a"));
|
||||
_stprintf_s(gamblerSuffix, _T(" 赌徒失手:本次落空"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1828,12 +1828,12 @@ void ConfirmUpgradeSelection()
|
||||
upgradeUiState.totalChosenCount++;
|
||||
TCHAR feedbackTitle[64];
|
||||
TCHAR feedbackDetail[128];
|
||||
_stprintf_s(feedbackTitle, _T("\u5df2\u83b7\u5f97\uff1a%s"), selectedOption.name);
|
||||
_stprintf_s(feedbackTitle, _T("获得强化:%s"), selectedOption.name);
|
||||
if (selectedOption.id == UPGRADE_PIECE_TUNING && selectedOption.targetPieceType >= 0)
|
||||
{
|
||||
_stprintf_s(
|
||||
feedbackDetail,
|
||||
_T("\u964d\u4f4e %s \u65b9\u5757\u51fa\u73b0\u6982\u7387%s"),
|
||||
_T("%s 块的出现率降低%s"),
|
||||
GetPieceShortName(selectedOption.targetPieceType),
|
||||
gamblerSuffix);
|
||||
}
|
||||
@@ -1848,7 +1848,7 @@ void ConfirmUpgradeSelection()
|
||||
_stprintf_s(
|
||||
feedbackDetail + lstrlen(feedbackDetail),
|
||||
128 - lstrlen(feedbackDetail),
|
||||
_T(" \u8be5\u9009\u9879\u9644\u5e26\u8bc5\u5492\uff1a\u4e0b\u6b21\u5347\u7ea7\u6240\u9700 EXP \u63d0\u9ad8 25%\u3002"));
|
||||
_T(" 诅咒缠身:下一次升级所需 EXP 提高 25%。"));
|
||||
}
|
||||
|
||||
SetFeedbackMessage(feedbackTitle, feedbackDetail, 12);
|
||||
@@ -1904,12 +1904,12 @@ void HoldCurrentPiece()
|
||||
}
|
||||
if (rogueStats.holdUnlocked == 0)
|
||||
{
|
||||
SetFeedbackMessage(_T("Hold \u672a\u89e3\u9501"), _T("\u9700\u8981\u5148\u83b7\u5f97 Hold \u89e3\u9501\u5f3a\u5316\u3002"), 10);
|
||||
SetFeedbackMessage(_T("备用仓未开启"), _T("获得备用仓强化后,才能用 C 或 Shift 暂存方块。"), 10);
|
||||
return;
|
||||
}
|
||||
if (holdUsedThisTurn)
|
||||
{
|
||||
SetFeedbackMessage(_T("Hold \u6682\u4e0d\u53ef\u7528"), _T("\u6bcf\u4e2a\u65b9\u5757\u53ea\u80fd Hold \u4e00\u6b21\uff0c\u843d\u5730\u540e\u6062\u590d\u3002"), 10);
|
||||
SetFeedbackMessage(_T("备用仓冷却中"), _T("每个方块落地前只能暂存一次。"), 10);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1941,7 +1941,7 @@ void HoldCurrentPiece()
|
||||
if (!IsPiecePlacementValid(type, state, point))
|
||||
{
|
||||
gameOverFlag = true;
|
||||
SetFeedbackMessage(_T("Hold \u5931\u8d25"), _T("\u6362\u51fa\u7684\u65b9\u5757\u65e0\u6cd5\u653e\u7f6e\uff0c\u5bf9\u5c40\u7ed3\u675f\u3002"), 12);
|
||||
SetFeedbackMessage(_T("交换失败"), _T("换出的方块无处落位,战局崩塌。"), 12);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1949,11 +1949,11 @@ void HoldCurrentPiece()
|
||||
|
||||
if (previousHoldType < 0)
|
||||
{
|
||||
SetFeedbackMessage(_T("Hold \u5df2\u5b58\u5165"), _T("\u5f53\u524d\u65b9\u5757\u5df2\u8fdb\u5165 Hold \u69fd\u3002"), 10);
|
||||
SetFeedbackMessage(_T("已存入备用仓"), _T("当前方块已暂存,新的方块进入战场。"), 10);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetFeedbackMessage(_T("Hold \u5df2\u4ea4\u6362"), _T("\u5df2\u4e0e Hold \u69fd\u4e2d\u7684\u65b9\u5757\u4ea4\u6362\u3002"), 10);
|
||||
SetFeedbackMessage(_T("备用仓交换"), _T("已换出备用方块。"), 10);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1965,12 +1965,12 @@ void UseScreenBomb()
|
||||
}
|
||||
if (rogueStats.screenBombLevel <= 0)
|
||||
{
|
||||
SetFeedbackMessage(_T("\u6e05\u5c4f\u70b8\u5f39\u672a\u89e3\u9501"), _T("\u9700\u8981\u5148\u83b7\u5f97\u6e05\u5c4f\u70b8\u5f39\u5f3a\u5316\u3002"), 10);
|
||||
SetFeedbackMessage(_T("清屏炸弹未获得"), _T("掌握清屏炸弹后,才能按 X 主动引爆。"), 10);
|
||||
return;
|
||||
}
|
||||
if (rogueStats.screenBombCount <= 0)
|
||||
{
|
||||
SetFeedbackMessage(_T("\u6e05\u5c4f\u70b8\u5f39\u672a\u5c31\u7eea"), _T("\u7d2f\u8ba1\u6d88\u884c\u5145\u80fd\u540e\u624d\u80fd\u4f7f\u7528\u3002"), 10);
|
||||
SetFeedbackMessage(_T("清屏炸弹未就绪"), _T("继续消行充能,充满后即可使用。"), 10);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1988,10 +1988,10 @@ void UseScreenBomb()
|
||||
TCHAR detail[128];
|
||||
_stprintf_s(
|
||||
detail,
|
||||
_T("\u6e05\u9664\u5e95\u90e8 5 \u884c\uff0c\u6e05\u6389 %d \u683c +%d Score"),
|
||||
_T("炸开底部 5 行,清除 %d 格 +%d 分"),
|
||||
clearedCells,
|
||||
scoreGain);
|
||||
SetFeedbackMessage(_T("\u4e3b\u52a8\u91ca\u653e\u6e05\u5c4f\u70b8\u5f39"), detail, 12);
|
||||
SetFeedbackMessage(_T("清屏炸弹引爆"), detail, 12);
|
||||
|
||||
currentFallInterval = GetRogueFallInterval();
|
||||
ComputeTarget();
|
||||
@@ -2005,19 +2005,19 @@ void UseBlackHole()
|
||||
}
|
||||
if (rogueStats.blackHoleLevel <= 0)
|
||||
{
|
||||
SetFeedbackMessage(_T("\u9ed1\u6d1e\u672a\u89e3\u9501"), _T("\u9700\u8981\u5148\u83b7\u5f97\u9ed1\u6d1e\u5f3a\u5316\u3002"), 10);
|
||||
SetFeedbackMessage(_T("黑洞尚未觉醒"), _T("获得黑洞奇点后,才能按 Z 释放。"), 10);
|
||||
return;
|
||||
}
|
||||
if (rogueStats.blackHoleCharges <= 0)
|
||||
{
|
||||
SetFeedbackMessage(_T("\u9ed1\u6d1e\u6b21\u6570\u4e0d\u8db3"), _T("\u5f53\u524d\u6ca1\u6709\u53ef\u7528\u7684\u9ed1\u6d1e\u6b21\u6570\u3002"), 10);
|
||||
SetFeedbackMessage(_T("黑洞能量不足"), _T("没有可释放的黑洞次数。"), 10);
|
||||
return;
|
||||
}
|
||||
|
||||
int clearedCells = TriggerBlackHole();
|
||||
if (clearedCells <= 0)
|
||||
{
|
||||
SetFeedbackMessage(_T("黑洞未触发"), _T("当前棋盘上没有可被黑洞吞噬的固定方块。"), 10);
|
||||
SetFeedbackMessage(_T("黑洞无处落点"), _T("棋盘上没有可吞噬的固定方块。"), 10);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2042,7 +2042,7 @@ void UseBlackHole()
|
||||
{
|
||||
_stprintf_s(
|
||||
detail,
|
||||
_T("吞噬数量最多的一种方块,清除 %d 格 +%d Score 并生成 1 个彩虹方块"),
|
||||
_T("吞噬最多的一种方块,清除 %d 格 +%d 分 并召来 1 个彩虹方块"),
|
||||
clearedCells,
|
||||
scoreGain);
|
||||
}
|
||||
@@ -2050,11 +2050,11 @@ void UseBlackHole()
|
||||
{
|
||||
_stprintf_s(
|
||||
detail,
|
||||
_T("吞噬数量最多的一种方块,清除 %d 格 +%d Score"),
|
||||
_T("吞噬最多的一种方块,清除 %d 格 +%d 分"),
|
||||
clearedCells,
|
||||
scoreGain);
|
||||
}
|
||||
SetFeedbackMessage(_T("主动释放黑洞"), detail, 12);
|
||||
SetFeedbackMessage(_T("黑洞展开"), detail, 12);
|
||||
|
||||
currentFallInterval = GetRogueFallInterval();
|
||||
ComputeTarget();
|
||||
@@ -2068,12 +2068,12 @@ void UseAirReshape()
|
||||
}
|
||||
if (rogueStats.reshapeLevel <= 0)
|
||||
{
|
||||
SetFeedbackMessage(_T("\u7a7a\u4e2d\u6362\u5f62\u672a\u89e3\u9501"), _T("\u9700\u8981\u5148\u83b7\u5f97\u7a7a\u4e2d\u6362\u5f62\u5f3a\u5316\u3002"), 10);
|
||||
SetFeedbackMessage(_T("换形术未掌握"), _T("获得空中换形后,才能按 V 重塑方块。"), 10);
|
||||
return;
|
||||
}
|
||||
if (rogueStats.reshapeCharges <= 0)
|
||||
{
|
||||
SetFeedbackMessage(_T("\u7a7a\u4e2d\u6362\u5f62\u6b21\u6570\u4e0d\u8db3"), _T("\u5f53\u524d\u6ca1\u6709\u53ef\u7528\u7684\u6362\u5f62\u6b21\u6570\u3002"), 10);
|
||||
SetFeedbackMessage(_T("换形能量不足"), _T("没有可使用的换形次数。"), 10);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2109,14 +2109,14 @@ void UseAirReshape()
|
||||
type = originalType;
|
||||
state = originalState;
|
||||
point = originalPoint;
|
||||
SetFeedbackMessage(_T("空中换形失败"), _T("当前空间不足,无法将方块变为 I 方块。"), 10);
|
||||
SetFeedbackMessage(_T("换形失败"), _T("空间不足,无法重塑为 I 块。"), 10);
|
||||
return;
|
||||
}
|
||||
|
||||
rogueStats.reshapeCharges--;
|
||||
|
||||
TCHAR detail[128];
|
||||
_stprintf_s(detail, _T("当前方块已变为 I 方块,剩余 %d 次。"), rogueStats.reshapeCharges);
|
||||
_stprintf_s(detail, _T("方块已重塑为 I 块,剩余 %d 次。"), rogueStats.reshapeCharges);
|
||||
SetFeedbackMessage(_T("空中换形"), detail, 12);
|
||||
ComputeTarget();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user