接入狂热模式与暴走堆叠进化路线
This commit is contained in:
@@ -47,7 +47,10 @@ enum UpgradeId
|
||||
UPGRADE_CHAIN_BOMB = 15,
|
||||
UPGRADE_LASER_PIECE = 16,
|
||||
UPGRADE_THUNDER_TETRIS = 17,
|
||||
UPGRADE_THUNDER_LASER = 18
|
||||
UPGRADE_THUNDER_LASER = 18,
|
||||
UPGRADE_FEVER_MODE = 19,
|
||||
UPGRADE_RAGE_STACK = 20,
|
||||
UPGRADE_INFINITE_FEVER = 21
|
||||
};
|
||||
|
||||
static const UpgradeEntry kUpgradePool[] =
|
||||
@@ -67,6 +70,9 @@ static const UpgradeEntry kUpgradePool[] =
|
||||
{ UPGRADE_LASER_PIECE, -1, 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, 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, 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, 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, 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, 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_STABLE_STRUCTURE, -1, 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, true, _T("\u53cc\u500d\u6210\u957f"), _T("\u7279\u6b8a"), _T("\u989d\u5916\u63d0\u9ad8\u6d88\u884c\u5f97\u5206\u4e0e EXP \u6536\u76ca\uff0c\u6bcf\u5c42\u518d\u8ffd\u52a0 15%\u3002") },
|
||||
{ UPGRADE_PIECE_TUNING, -1, 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") },
|
||||
@@ -231,6 +237,11 @@ static void ResetPlayerStats(PlayerStats& stats, bool useRogueRules)
|
||||
stats.laserLevel = 0;
|
||||
stats.thunderTetrisLevel = 0;
|
||||
stats.thunderLaserLevel = 0;
|
||||
stats.feverLevel = 0;
|
||||
stats.rageStackLevel = 0;
|
||||
stats.infiniteFeverLevel = 0;
|
||||
stats.feverLineCharge = 0;
|
||||
stats.feverTicks = 0;
|
||||
stats.stableStructureLevel = 0;
|
||||
stats.doubleGrowthLevel = 0;
|
||||
stats.gamblerLevel = 0;
|
||||
@@ -294,6 +305,12 @@ static int GetUpgradeCurrentLevel(int upgradeId)
|
||||
return rogueStats.thunderTetrisLevel;
|
||||
case UPGRADE_THUNDER_LASER:
|
||||
return rogueStats.thunderLaserLevel;
|
||||
case UPGRADE_FEVER_MODE:
|
||||
return rogueStats.feverLevel;
|
||||
case UPGRADE_RAGE_STACK:
|
||||
return rogueStats.rageStackLevel;
|
||||
case UPGRADE_INFINITE_FEVER:
|
||||
return rogueStats.infiniteFeverLevel;
|
||||
case UPGRADE_STABLE_STRUCTURE:
|
||||
return rogueStats.stableStructureLevel;
|
||||
case UPGRADE_DOUBLE_GROWTH:
|
||||
@@ -348,6 +365,21 @@ static bool IsUpgradeSelectable(const UpgradeEntry& entry)
|
||||
return rogueStats.laserLevel > 0 && rogueStats.thunderTetrisLevel > 0 && rogueStats.thunderLaserLevel == 0;
|
||||
}
|
||||
|
||||
if (entry.id == UPGRADE_FEVER_MODE)
|
||||
{
|
||||
return rogueStats.feverLevel == 0;
|
||||
}
|
||||
|
||||
if (entry.id == UPGRADE_RAGE_STACK)
|
||||
{
|
||||
return rogueStats.rageStackLevel == 0;
|
||||
}
|
||||
|
||||
if (entry.id == UPGRADE_INFINITE_FEVER)
|
||||
{
|
||||
return rogueStats.feverLevel > 0 && rogueStats.rageStackLevel > 0 && rogueStats.infiniteFeverLevel == 0;
|
||||
}
|
||||
|
||||
if (entry.repeatable)
|
||||
{
|
||||
return true;
|
||||
@@ -739,7 +771,12 @@ static void FillUpgradeOptions()
|
||||
|
||||
static int GetRogueFallInterval()
|
||||
{
|
||||
return 500 + rogueStats.slowFallStacks * 80;
|
||||
int baseInterval = 500 + rogueStats.slowFallStacks * 80;
|
||||
if (currentMode == MODE_ROGUE && rogueStats.feverTicks > 0)
|
||||
{
|
||||
baseInterval += 120;
|
||||
}
|
||||
return baseInterval;
|
||||
}
|
||||
|
||||
static void ApplyUpgradeById(int upgradeId, int targetPieceType, int applyCount)
|
||||
@@ -817,6 +854,15 @@ static void ApplyUpgradeById(int upgradeId, int targetPieceType, int applyCount)
|
||||
case UPGRADE_THUNDER_LASER:
|
||||
rogueStats.thunderLaserLevel = 1;
|
||||
break;
|
||||
case UPGRADE_FEVER_MODE:
|
||||
rogueStats.feverLevel = 1;
|
||||
break;
|
||||
case UPGRADE_RAGE_STACK:
|
||||
rogueStats.rageStackLevel = 1;
|
||||
break;
|
||||
case UPGRADE_INFINITE_FEVER:
|
||||
rogueStats.infiniteFeverLevel = 1;
|
||||
break;
|
||||
case UPGRADE_STABLE_STRUCTURE:
|
||||
rogueStats.stableStructureLevel += applyCount;
|
||||
break;
|
||||
@@ -869,6 +915,12 @@ static void ApplyLineClearResult(int linesCleared)
|
||||
expGain = expGain * growthMultiplierPercent / 100;
|
||||
}
|
||||
|
||||
if (rogueStats.feverTicks > 0)
|
||||
{
|
||||
scoreGain *= 2;
|
||||
expGain *= 2;
|
||||
}
|
||||
|
||||
int gamblerBonusPercent = 0;
|
||||
if (rogueStats.gamblerLevel > 0)
|
||||
{
|
||||
@@ -889,10 +941,46 @@ static void ApplyLineClearResult(int linesCleared)
|
||||
scoreGain += (rogueStats.comboChain - 1) * rogueStats.comboBonusStacks * 50;
|
||||
}
|
||||
|
||||
if (rogueStats.rageStackLevel > 0 && rogueStats.comboChain > 1)
|
||||
{
|
||||
int rageBonusPercent = (rogueStats.comboChain - 1) * 15;
|
||||
if (rogueStats.infiniteFeverLevel > 0 && rogueStats.feverTicks > 0)
|
||||
{
|
||||
rageBonusPercent += (rogueStats.comboChain - 1) * 10;
|
||||
}
|
||||
scoreGain += scoreGain * rageBonusPercent / 100;
|
||||
}
|
||||
|
||||
rogueStats.totalLinesCleared += linesCleared;
|
||||
rogueStats.score += scoreGain;
|
||||
rogueStats.exp += expGain;
|
||||
|
||||
if (rogueStats.feverLevel > 0)
|
||||
{
|
||||
rogueStats.feverLineCharge += linesCleared;
|
||||
while (rogueStats.feverLineCharge >= 20)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
if (rogueStats.infiniteFeverLevel > 0 && rogueStats.feverTicks > 0)
|
||||
{
|
||||
rogueStats.feverTicks += 1;
|
||||
if (linesCleared == 4)
|
||||
{
|
||||
rogueStats.feverTicks += 3;
|
||||
}
|
||||
if (rogueStats.feverTicks > 20)
|
||||
{
|
||||
rogueStats.feverTicks = 20;
|
||||
}
|
||||
currentFallInterval = GetRogueFallInterval();
|
||||
}
|
||||
|
||||
if (rogueStats.chainBlastLevel > 0)
|
||||
{
|
||||
int chainBlastCells = 0;
|
||||
|
||||
Reference in New Issue
Block a user