feat: 调整游戏难度并优化UI布局

- 降低卡池等级上限和英雄等级上限以简化前期难度
- 重新平衡前四波怪物配置,使难度曲线更平缓
- 移除卡池升级功能并隐藏相关UI按钮
- 调整角色控制器UI元素的位置和尺寸
- 修改加载界面元素的缩放比例
This commit is contained in:
walkpan
2026-04-12 22:37:00 +08:00
parent c38cafc531
commit 09f64b0855
8 changed files with 910 additions and 911 deletions

View File

@@ -1062,7 +1062,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 435.147,
"y": 487.134,
"z": 0
},
"_lrot": {
@@ -1453,7 +1453,7 @@
"__id__": 72
}
],
"_active": false,
"_active": true,
"_components": [
{
"__id__": 80
@@ -1471,7 +1471,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 220.965,
"y": 208.926,
"z": 0
},
"_lrot": {
@@ -1698,7 +1698,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": -70,
"x": -20,
"y": 0,
"z": 0
},
@@ -1840,7 +1840,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": -47.013,
"x": 0,
"y": 0,
"z": 0
},
@@ -2165,7 +2165,7 @@
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 435.147,
"_bottom": 487.134,
"_horizontalCenter": 0,
"_verticalCenter": 0,
"_isAbsLeft": true,
@@ -2507,8 +2507,8 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": -180,
"y": 154.567,
"x": 0,
"y": 442.302,
"z": 0
},
"_lrot": {
@@ -2557,7 +2557,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": -85.592,
"x": -26.797,
"y": 0,
"z": 0
},
@@ -2716,7 +2716,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 9.236,
"x": 62.916,
"y": 0,
"z": 0
},
@@ -2866,7 +2866,7 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 360,
"width": 720,
"height": 45
},
"_anchorPoint": {
@@ -2940,9 +2940,9 @@
"_alignFlags": 44,
"_target": null,
"_left": 0,
"_right": 360,
"_right": 0,
"_top": 0,
"_bottom": 132.067,
"_bottom": 419.802,
"_horizontalCenter": 0,
"_verticalCenter": 0,
"_isAbsLeft": true,
@@ -4938,7 +4938,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 180,
"x": 0,
"y": 153.275,
"z": 0
},
@@ -5032,7 +5032,7 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 360,
"width": 720,
"height": 45
},
"_anchorPoint": {
@@ -5139,8 +5139,6 @@
"__id__": 0
},
"fileId": "35dr0lJV9CO5Ld8TLk7eCZ",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -5166,7 +5164,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": -138.644,
"x": -35,
"y": 0,
"z": 0
},
@@ -5278,8 +5276,6 @@
"__id__": 0
},
"fileId": "e7dPNasr5IyqES0tbwxJX3",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -5308,7 +5304,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": -114.038,
"x": -15.457,
"y": 0,
"z": 0
},
@@ -5464,8 +5460,6 @@
"__id__": 0
},
"fileId": "65zRY1wpZPNLTXws9hsdcE",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -5482,7 +5476,7 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 360,
"width": 720,
"height": 45
},
"_anchorPoint": {
@@ -5552,7 +5546,7 @@
},
"_alignFlags": 40,
"_target": null,
"_left": 360,
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 0,
@@ -8775,7 +8769,7 @@
"__id__": 491
}
],
"_active": true,
"_active": false,
"_components": [
{
"__id__": 497
@@ -10431,7 +10425,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"x": -85,
"y": 0,
"z": 0
},
@@ -11648,7 +11642,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 240,
"x": 185,
"y": 0,
"z": 0
},
@@ -12087,14 +12081,14 @@
"node": {
"__id__": 552
},
"_enabled": true,
"_enabled": false,
"__prefab": {
"__id__": 572
},
"_alignFlags": 33,
"_target": null,
"_left": 0,
"_right": 0,
"_right": 120,
"_top": 40,
"_bottom": 1078.082,
"_horizontalCenter": 0,
@@ -12198,7 +12192,7 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 700,
"width": 590,
"height": 150
},
"_anchorPoint": {
@@ -12232,11 +12226,11 @@
"height": 40
},
"_startAxis": 0,
"_paddingLeft": 0,
"_paddingLeft": 100,
"_paddingRight": 0,
"_paddingTop": 0,
"_paddingBottom": 0,
"_spacingX": 20,
"_spacingX": 50,
"_spacingY": 0,
"_verticalDirection": 1,
"_horizontalDirection": 0,
@@ -12264,8 +12258,8 @@
},
"_alignFlags": 44,
"_target": null,
"_left": 10,
"_right": 10,
"_left": 65,
"_right": 65,
"_top": 1230,
"_bottom": 7.988,
"_horizontalCenter": 0,
@@ -12790,7 +12784,7 @@
"__id__": 809
}
],
"_active": true,
"_active": false,
"_components": [
{
"__id__": 826

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 KiB

After

Width:  |  Height:  |  Size: 242 KiB

View File

@@ -1819,8 +1819,8 @@
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1.5,
"y": 1.5,
"x": 2,
"y": 2,
"z": 1
},
"_mobility": 0,
@@ -1847,8 +1847,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 421,
"height": 132
"width": 218,
"height": 166
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -1884,12 +1884,12 @@
"a": 255
},
"_spriteFrame": {
"__uuid__": "cb93c900-b440-4571-91d1-7da1636e3d73@a557f",
"__uuid__": "cb93c900-b440-4571-91d1-7da1636e3d73@e5c7b",
"__expectedType__": "cc.SpriteFrame"
},
"_type": 0,
"_fillType": 0,
"_sizeMode": 0,
"_sizeMode": 1,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,

View File

@@ -22,8 +22,6 @@ export enum CardLV {
LV1 = 1,
LV2 = 2,
LV3 = 3,
LV4 = 4,
LV5 = 5,
}
/** 通用卡牌配置 */
@@ -59,9 +57,9 @@ export const CARD_POOL_UPGRADE_DISCOUNT_PER_WAVE = 10
/** 卡池默认初始等级 */
export const CARD_POOL_INIT_LEVEL = CardLV.LV1
/** 卡池等级上限 */
export const CARD_POOL_MAX_LEVEL = CardLV.LV5
export const CARD_POOL_MAX_LEVEL = CardLV.LV3
/** 英雄最高等级限制 */
export const CARD_HERO_MAX_LEVEL = 3
export const CARD_HERO_MAX_LEVEL = 2
/** 基础卡池(英雄、技能、功能) */
export const CardPoolList: CardConfig[] = [
@@ -70,30 +68,30 @@ export const CardPoolList: CardConfig[] = [
{ uuid: 5201, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 1, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5301, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 1, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5003, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5102, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5302, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5003, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 1, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5102, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 1, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5302, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 1, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5002, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 3, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5103, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 3, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5202, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 3, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5002, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5103, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5202, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5004, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 4, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5104, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 4, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5303, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 4, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5004, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5104, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5303, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5105, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 5, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5304, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 5, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5105, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 3, kind: CKind.Hero, hero_lv: 1 },
{ uuid: 5304, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 3, kind: CKind.Hero, hero_lv: 1 },
// 技能卡牌 (以增益/辅助为主,因为在备战期没有敌人)
{ uuid: 6401, type: CardType.Skill, cost: 2, weight: 20, pool_lv: 1, kind: CKind.Skill, card_lv: 1, name: "单体攻击", info: "随机1个友方+5攻击", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6402, type: CardType.Skill, cost: 2, weight: 20, pool_lv: 1, kind: CKind.Skill, card_lv: 1, name: "单体生命", info: "随机1个友方+20最大生命值", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6403, type: CardType.Skill, cost: 3, weight: 20, pool_lv: 2, kind: CKind.Skill, card_lv: 1, name: "单体全能", info: "随机1个友方+2攻击,+10最大生命值", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6404, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 3, kind: CKind.Skill, card_lv: 1, name: "群体攻击", info: "随机3个友方+2攻击", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6405, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 3, kind: CKind.Skill, card_lv: 1, name: "群体生命", info: "随机3个友方+10最大生命值", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6406, type: CardType.Skill, cost: 5, weight: 20, pool_lv: 4, kind: CKind.Skill, card_lv: 1, name: "群体全能", info: "为随机3个友方单位增加攻击力和生命上限", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6304, type: CardType.Skill, cost: 3, weight: 20, pool_lv: 2, kind: CKind.Skill, card_lv: 1, name: "神圣治疗", info: "恢复场上随机3个友方单位的生命值", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6305, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 4, kind: CKind.Skill, card_lv: 1, name: "群体护盾", info: "随机3个友方获得2次伤害免疫", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6403, type: CardType.Skill, cost: 3, weight: 20, pool_lv: 1, kind: CKind.Skill, card_lv: 1, name: "单体全能", info: "随机1个友方+2攻击,+10最大生命值", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6404, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 1, kind: CKind.Skill, card_lv: 1, name: "群体攻击", info: "随机3个友方+2攻击", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6405, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 2, kind: CKind.Skill, card_lv: 1, name: "群体生命", info: "随机3个友方+10最大生命值", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6406, type: CardType.Skill, cost: 5, weight: 20, pool_lv: 2, kind: CKind.Skill, card_lv: 1, name: "群体全能", info: "为随机3个友方单位增加攻击力和生命上限", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6304, type: CardType.Skill, cost: 3, weight: 20, pool_lv: 3, kind: CKind.Skill, card_lv: 1, name: "神圣治疗", info: "恢复场上随机3个友方单位的生命值", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 6305, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 3, kind: CKind.Skill, card_lv: 1, name: "群体护盾", info: "随机3个友方获得2次伤害免疫", is_inst: true, t_times: 1, t_inv: 0 },
{ uuid: 7001, type: CardType.SpecialUpgrade, cost: 6, weight: 16, pool_lv: 1 ,kind: CKind.Card },
{ uuid: 7002, type: CardType.SpecialUpgrade, cost: 6, weight: 14, pool_lv: 2 ,kind: CKind.Card },

View File

@@ -201,11 +201,11 @@ export class MissionCardComp extends CCComp {
this.clearHeroInfoPanels();
this.layoutCardSlots();
this.clearAllCards();
if (this.cards_up) {
this.cards_up.active = true;
}
// if (this.cards_up) {
// this.cards_up.active = true;
// }
this.resetButtonScale(this.cards_chou);
this.resetButtonScale(this.cards_up);
// this.resetButtonScale(this.cards_up);
this.updateCoinAndCostUI();
this.updateHeroNumUI(false, false);
this.node.active = true;
@@ -269,9 +269,9 @@ export class MissionCardComp extends CCComp {
this.cards_chou?.on(NodeEventType.TOUCH_START, this.onDrawTouchStart, this);
this.cards_chou?.on(NodeEventType.TOUCH_END, this.onDrawTouchEnd, this);
this.cards_chou?.on(NodeEventType.TOUCH_CANCEL, this.onDrawTouchCancel, this);
this.cards_up?.on(NodeEventType.TOUCH_START, this.onUpgradeTouchStart, this);
this.cards_up?.on(NodeEventType.TOUCH_END, this.onUpgradeTouchEnd, this);
this.cards_up?.on(NodeEventType.TOUCH_CANCEL, this.onUpgradeTouchCancel, this);
// this.cards_up?.on(NodeEventType.TOUCH_START, this.onUpgradeTouchStart, this);
// this.cards_up?.on(NodeEventType.TOUCH_END, this.onUpgradeTouchEnd, this);
// this.cards_up?.on(NodeEventType.TOUCH_CANCEL, this.onUpgradeTouchCancel, this);
}
// ======================== 事件回调 ========================
@@ -318,9 +318,9 @@ export class MissionCardComp extends CCComp {
this.cards_chou?.off(NodeEventType.TOUCH_START, this.onDrawTouchStart, this);
this.cards_chou?.off(NodeEventType.TOUCH_END, this.onDrawTouchEnd, this);
this.cards_chou?.off(NodeEventType.TOUCH_CANCEL, this.onDrawTouchCancel, this);
this.cards_up?.off(NodeEventType.TOUCH_START, this.onUpgradeTouchStart, this);
this.cards_up?.off(NodeEventType.TOUCH_END, this.onUpgradeTouchEnd, this);
this.cards_up?.off(NodeEventType.TOUCH_CANCEL, this.onUpgradeTouchCancel, this);
// this.cards_up?.off(NodeEventType.TOUCH_START, this.onUpgradeTouchStart, this);
// this.cards_up?.off(NodeEventType.TOUCH_END, this.onUpgradeTouchEnd, this);
// this.cards_up?.off(NodeEventType.TOUCH_CANCEL, this.onUpgradeTouchCancel, this);
}
/**
@@ -462,18 +462,18 @@ export class MissionCardComp extends CCComp {
private onDrawTouchCancel() {
this.playButtonResetAnim(this.cards_chou);
}
/** 升级按钮按下反馈 */
private onUpgradeTouchStart() {
this.playButtonPressAnim(this.cards_up);
}
/** 升级按钮释放 → 执行升级逻辑 */
private onUpgradeTouchEnd() {
this.playButtonClickAnim(this.cards_up, () => this.onClickUpgrade());
}
/** 升级按钮取消 → 恢复缩放 */
private onUpgradeTouchCancel() {
this.playButtonResetAnim(this.cards_up);
}
// /** 升级按钮按下反馈 */
// private onUpgradeTouchStart() {
// this.playButtonPressAnim(this.cards_up);
// }
// /** 升级按钮释放 → 执行升级逻辑 */
// private onUpgradeTouchEnd() {
// this.playButtonClickAnim(this.cards_up, () => this.onClickUpgrade());
// }
// /** 升级按钮取消 → 恢复缩放 */
// private onUpgradeTouchCancel() {
// this.playButtonResetAnim(this.cards_up);
// }
/** 将四个卡槽节点映射为 CardComp形成固定顺序控制数组 */
private cacheCardComps() {
@@ -516,34 +516,34 @@ export class MissionCardComp extends CCComp {
this.dispatchCardsToSlots(cards);
}
/** 升级按钮:仅提升卡池等级,卡槽是否更新由下一次抽卡触发 */
private onClickUpgrade() {
if (this.poolLv >= CARD_POOL_MAX_LEVEL) {
mLogger.log(this.debugMode, "MissionCardComp", "pool already max", this.poolLv);
return;
}
const cost = this.getUpgradeCost(this.poolLv);
const currentCoin = this.getMissionCoin();
if (currentCoin < cost) {
oops.gui.toast(`金币不足,升级需要${cost}`);
this.updateCoinAndCostUI();
mLogger.log(this.debugMode, "MissionCardComp", "pool upgrade coin not enough", {
poolLv: this.poolLv,
currentCoin,
cost
});
return;
}
this.setMissionCoin(currentCoin - cost);
this.poolLv += 1;
this.playCoinChangeAnim(false);
this.updateCoinAndCostUI();
mLogger.log(this.debugMode, "MissionCardComp", "pool level up", {
poolLv: this.poolLv,
cost,
leftCoin: this.getMissionCoin()
});
}
// /** 升级按钮:仅提升卡池等级,卡槽是否更新由下一次抽卡触发 */
// private onClickUpgrade() {
// if (this.poolLv >= CARD_POOL_MAX_LEVEL) {
// mLogger.log(this.debugMode, "MissionCardComp", "pool already max", this.poolLv);
// return;
// }
// const cost = this.getUpgradeCost(this.poolLv);
// const currentCoin = this.getMissionCoin();
// if (currentCoin < cost) {
// oops.gui.toast(`金币不足,升级需要${cost}`);
// this.updateCoinAndCostUI();
// mLogger.log(this.debugMode, "MissionCardComp", "pool upgrade coin not enough", {
// poolLv: this.poolLv,
// currentCoin,
// cost
// });
// return;
// }
// this.setMissionCoin(currentCoin - cost);
// this.poolLv += 1;
// this.playCoinChangeAnim(false);
// this.updateCoinAndCostUI();
// mLogger.log(this.debugMode, "MissionCardComp", "pool level up", {
// poolLv: this.poolLv,
// cost,
// leftCoin: this.getMissionCoin()
// });
// }
// ======================== 阶段切换 ========================
@@ -685,23 +685,23 @@ export class MissionCardComp extends CCComp {
}
/** 更新升级按钮上的等级文案,反馈当前卡池层级 */
private updatePoolLvUI() {
if (this.cards_up) {
const nobg = this.cards_up.getChildByName("nobg");
if (nobg) {
nobg.active = !this.canUpPool();
}
const coinNode = this.cards_up.getChildByName("coin");
const label = coinNode?.getChildByName("num")?.getComponent(Label);
if (this.poolLv >= CARD_POOL_MAX_LEVEL) {
if (label) {
label.string = `0`;
}
} else {
if (label) {
label.string = `${this.getUpgradeCost(this.poolLv)}`;
}
}
}
// if (this.cards_up) {
// const nobg = this.cards_up.getChildByName("nobg");
// if (nobg) {
// nobg.active = !this.canUpPool();
// }
// const coinNode = this.cards_up.getChildByName("coin");
// const label = coinNode?.getChildByName("num")?.getComponent(Label);
// if (this.poolLv >= CARD_POOL_MAX_LEVEL) {
// if (label) {
// label.string = `0`;
// }
// } else {
// if (label) {
// label.string = `${this.getUpgradeCost(this.poolLv)}`;
// }
// }
// }
if (this.pool_lv_node) {
this.pool_lv_node.active = true;
const lv = Math.max(CARD_POOL_INIT_LEVEL, Math.min(CARD_POOL_MAX_LEVEL, Math.floor(this.poolLv)));
@@ -1059,7 +1059,7 @@ export class MissionCardComp extends CCComp {
reset() {
this.clearHeroInfoPanels();
this.resetButtonScale(this.cards_chou);
this.resetButtonScale(this.cards_up);
// this.resetButtonScale(this.cards_up);
this.node.destroy();
}
}

View File

@@ -122,13 +122,20 @@ export const WaveSlotConfig: { [wave: number]: IWaveSlot[] } = {
/** 第 1 波2 近战 + 1 近战Boss(默认占3格) */
1: [
{ type: MonType.Long, count: 2 },
{ type: MonType.Melee, count: 1 },
],
2: [
{ type: MonType.Melee, count: 1 },
{ type: MonType.Long, count: 1 },
],
3: [
{ type: MonType.Melee, count: 1 },
{ type: MonType.Long, count: 2 },
],
4: [
{ type: MonType.Melee, count: 2 },
{ type: MonType.Long, count: 2 },
],
/** 第 1 波2 近战 + 1 近战Boss(默认占3格) */
10: [
{ type: MonType.MeleeBoss, count: 1 },