将炸弹方块改为每10块固定生成一次
This commit is contained in:
@@ -54,6 +54,7 @@ struct PlayerStats
|
||||
int sweeperLevel;
|
||||
int sweeperCharge;
|
||||
int explosiveLevel;
|
||||
int explosivePieceCounter;
|
||||
int chainBlastLevel;
|
||||
int chainBombLevel;
|
||||
int laserLevel;
|
||||
|
||||
@@ -271,6 +271,7 @@ static void ResetPlayerStats(PlayerStats& stats, bool useRogueRules)
|
||||
stats.sweeperLevel = 0;
|
||||
stats.sweeperCharge = 0;
|
||||
stats.explosiveLevel = 0;
|
||||
stats.explosivePieceCounter = 0;
|
||||
stats.chainBlastLevel = 0;
|
||||
stats.chainBombLevel = 0;
|
||||
stats.laserLevel = 0;
|
||||
@@ -851,13 +852,18 @@ static bool RollExplosivePiece()
|
||||
return false;
|
||||
}
|
||||
|
||||
int chancePercent = 12 + (rogueStats.explosiveLevel - 1) * 8;
|
||||
if (chancePercent > 40)
|
||||
if (rogueStats.explosivePieceCounter < 10)
|
||||
{
|
||||
chancePercent = 40;
|
||||
rogueStats.explosivePieceCounter++;
|
||||
}
|
||||
|
||||
return (rand() % 100) < chancePercent;
|
||||
if (rogueStats.explosivePieceCounter < 10)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
rogueStats.explosivePieceCounter = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool RollLaserPiece()
|
||||
|
||||
@@ -712,12 +712,11 @@ void TDrawScreen(HDC hdc, HWND hWnd)
|
||||
if (rogueStats.explosiveLevel > 0)
|
||||
{
|
||||
TCHAR explosiveText[96];
|
||||
int explosiveChance = 12 + (rogueStats.explosiveLevel - 1) * 8;
|
||||
if (explosiveChance > 40)
|
||||
{
|
||||
explosiveChance = 40;
|
||||
}
|
||||
_stprintf_s(explosiveText, _T("\u7206\u7834\u6982\u7387 %d%% %s"), explosiveChance, currentPieceIsExplosive ? _T("\u672c\u5757\u5df2\u7206\u7834") : _T("\u672c\u5757\u666e\u901a"));
|
||||
_stprintf_s(
|
||||
explosiveText,
|
||||
_T("\u7206\u7834\u8ba1\u6570 %d / 10 %s"),
|
||||
rogueStats.explosivePieceCounter,
|
||||
currentPieceIsExplosive ? _T("\u672c\u5757\u5df2\u7206\u7834") : _T("\u672c\u5757\u666e\u901a"));
|
||||
TextOut(hdc, combatRect.left + SS(18), combatRect.top + SS(146), explosiveText, lstrlen(explosiveText));
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
| 状态 | 数量 |
|
||||
|---|---:|
|
||||
| 已完成 | 30 |
|
||||
| 部分完成 | 5 |
|
||||
| 已完成 | 31 |
|
||||
| 部分完成 | 4 |
|
||||
| 未完成 | 0 |
|
||||
|
||||
## 已完成
|
||||
@@ -26,6 +26,7 @@
|
||||
| 暂存槽 | 基础 | 解锁 Hold | 基础出现 |
|
||||
| 最后一搏 | 基础 | 濒死时自动清除底部 3 行并续命一次 | 基础出现 |
|
||||
| 成长核心 | 基础 | 选择后永久提高 15% 得分和 15% EXP 获取,只能选择一次 | 基础出现 |
|
||||
| 炸弹方块 | 爽感 | 每隔 10 个方块生成一个炸弹方块,落地后清除周围 3x3 区域 | 基础出现 |
|
||||
| 激光方块 | 爽感 | 特殊激光块落地后清除整列 | 基础出现 |
|
||||
| 十字方块 | 爽感 | 特殊方块落地后同时清除所在行与列 | 基础出现 |
|
||||
| 连锁爆破 | 爽感 | 消行后额外清除附近若干格 | 炸弹方块 |
|
||||
@@ -54,7 +55,6 @@
|
||||
|
||||
| 强化 | 分类 | 当前状态 | 升级路径 |
|
||||
|---|---|---|---|
|
||||
| 炸弹方块 | 爽感 | 已做成概率生成的爆炸块;文档写的是“每隔 10 个方块生成 1 个炸弹方块”,出现机制还没完全对齐 | 基础出现 |
|
||||
| 狂热模式 | 爽感 | 已实现累计 20 行进入 10 秒狂热、得分/EXP x2、下落变慢;文档里的“特殊方块出现率提高”还没接入 | 基础出现 |
|
||||
| 时间缓流 | 操作/生存 | 已实现盘面过高时自动减速;文档要求是“高度超过 15 行时减速 30%,持续 8 秒”,当前是危险高度下的持续性减速逻辑 | 基础出现 |
|
||||
| 赌命四消 | 风险 | 已实现 1~3 消降益、4 消暴增;数值实现与文档“普通消行降低、四消奖励提高 300%”不完全一致 | 基础出现 |
|
||||
@@ -75,7 +75,7 @@
|
||||
|
||||
## 推荐下一批实现顺序
|
||||
|
||||
1. `炸弹方块` 出现机制对齐为“每隔 10 个方块”
|
||||
2. `狂热模式` 补上“特殊方块出现率提高”
|
||||
3. `极限玩家` 补上“30 秒未四消增加危险等级”
|
||||
4. `时间缓流 / 赌命四消` 的数值与触发条件继续向文档收敛
|
||||
1. `狂热模式` 补上“特殊方块出现率提高”
|
||||
2. `极限玩家` 补上“30 秒未四消增加危险等级”
|
||||
3. `时间缓流` 的触发条件、减速比例和持续时间继续向文档收敛
|
||||
4. `赌命四消` 的普通消行 / 四消收益数值继续向文档收敛
|
||||
|
||||
Reference in New Issue
Block a user