feat(塔防): 添加属性配置和等级成长系统
添加塔防生效属性配置文件 TDEnabledAttrs.ts,集中管理游戏属性 实现塔防等级成长系统 TDLevelOptions.ts,包含1-20级强化配置 调整数值平衡,除AP/HP_MAX外所有属性强度减半
This commit is contained in:
61
.trae/documents/塔防1-20级四选一成长系统设计.md
Normal file
61
.trae/documents/塔防1-20级四选一成长系统设计.md
Normal file
@@ -0,0 +1,61 @@
|
||||
## 目标
|
||||
|
||||
创建 `TDLevelOptions.ts`。
|
||||
调整数值:**保持 AP/HP\_MAX 强度不变,将其余所有属性的强度(Base & Grow)减半。**
|
||||
并在配置中明确标注“20级极限总加成”。
|
||||
|
||||
## 调整后的数值表 (Revised V2)
|
||||
|
||||
| 属性 | Base | Grow | Lv1单次 | Lv20单次 | **20级累计总加成** | 调整说明 |
|
||||
| :---------------- | :--- | :--- | :---- | :----- | :----------- | :-------------- |
|
||||
| **AP** (攻) | 15 | 1.5 | 16 | 45 | **+610** | 保持不变 |
|
||||
| **HP\_MAX** (血) | 100 | 10 | 110 | 300 | **+4100** | 保持不变 |
|
||||
| **AS** (速) | 5 | 0.25 | 5% | 10% | **+150%** | 减半 |
|
||||
| **DIS** (距) | 15 | 1.0 | 16 | 35 | **+510** | 减半 |
|
||||
| **PIERCE** (穿) | 1 | 0 | 1 | 1 | **+20** | 无法减半(最小1),需接受 |
|
||||
| **CRITICAL** (暴) | 2.5 | 0.1 | 2.6% | 4.5% | **+71%** | 减半 (需配合多次选择才满暴) |
|
||||
| **CRITICAL\_DMG** | 10 | 0.5 | 10% | 20% | **+300%** | 减半 |
|
||||
| **DEF** (防) | 2.5 | 0.25 | 2.7 | 7.5 | **+102** | 减半 |
|
||||
| **控制类** | 1.5 | 0.05 | 1.5% | 2.5% | **+40%** | 减半 (不再必定永控) |
|
||||
| **吸血** | 1 | 0.05 | 1% | 2% | **+30%** | 减半 |
|
||||
|
||||
*(注:PIERCE 因作为整数逻辑,维持 +1,但在随机池权重中可以不作特殊处理,作为稀有强力项自然存在)*
|
||||
|
||||
## 配置文件内容
|
||||
|
||||
路径:`assets/script/game/common/config/TDLevelOptions.ts`
|
||||
|
||||
```typescript
|
||||
import { Attrs } from "./HeroAttrs";
|
||||
|
||||
export interface IOptionGrowth {
|
||||
base: number;
|
||||
grow: number;
|
||||
desc: string; // 使用 {val} 占位
|
||||
totalNote: string; // 备注20级总加成
|
||||
}
|
||||
|
||||
export const TD_OPTION_CONFIG: Record<number, IOptionGrowth> = {
|
||||
[Attrs.AP]: { base: 15, grow: 1.5, desc: "攻击力 +{val}", totalNote: "+610" },
|
||||
[Attrs.HP_MAX]: { base: 100, grow: 10, desc: "生命上限 +{val}", totalNote: "+4100" },
|
||||
|
||||
// 减半组
|
||||
[Attrs.AS]: { base: 5, grow: 0.25, desc: "攻击速度 +{val}%", totalNote: "+150%" },
|
||||
[Attrs.DIS]: { base: 15, grow: 1.0, desc: "攻击距离 +{val}", totalNote: "+510" },
|
||||
[Attrs.CRITICAL]: { base: 2.5, grow: 0.1, desc: "暴击率 +{val}%", totalNote: "+71%" },
|
||||
[Attrs.CRITICAL_DMG]: { base: 10, grow: 0.5, desc: "暴击伤害 +{val}%", totalNote: "+300%" },
|
||||
[Attrs.DEF]: { base: 2.5, grow: 0.25, desc: "防御 +{val}", totalNote: "+102" },
|
||||
|
||||
// 控制与特效 (统一配置)
|
||||
[Attrs.STUN_CHANCE]: { base: 1.5, grow: 0.05, desc: "眩晕概率 +{val}%", totalNote: "+40%" },
|
||||
// ... 其他控制类同上
|
||||
[Attrs.PIERCE]: { base: 1, grow: 0, desc: "穿透 +{val}", totalNote: "+20" },
|
||||
};
|
||||
|
||||
// 辅助函数
|
||||
export const getLevelOptions = (level: number): any[] => { ... }
|
||||
```
|
||||
|
||||
## 执行
|
||||
|
||||
直接按此数值创建文件。无需再次确认。
|
||||
62
.trae/documents/超休闲塔防属性精简与落地方案.md
Normal file
62
.trae/documents/超休闲塔防属性精简与落地方案.md
Normal file
@@ -0,0 +1,62 @@
|
||||
## 目标
|
||||
- 新增一个“生效属性配置文件”,集中声明超休闲塔防要启用的属性键,供系统与 UI 快速判断哪些属性参与计算与展示。
|
||||
|
||||
## 文件位置
|
||||
- `assets/script/game/common/config/TDEnabledAttrs.ts`
|
||||
|
||||
## 内容结构
|
||||
- 引用 `HeroAttrs.ts` 的 `Attrs` 枚举。
|
||||
- 导出两类集合:
|
||||
- 核心启用集合 `TD_ENABLED_ATTRS`(ReadonlySet<Attrs>)
|
||||
- 轻度可选集合 `TD_OPTIONAL_ATTRS`(ReadonlySet<Attrs>)
|
||||
- 额外导出 `TD_ATTR_GROUPS`(用于 UI 分组展示,非必需)。
|
||||
|
||||
## 初始启用键(核心)
|
||||
- 塔/英雄输出:`AP`、`AS`、`DIS`、`PIERCE`
|
||||
- 爽点:`CRITICAL`、`CRITICAL_DMG`
|
||||
- 敌人生存:`HP_MAX`、`DEF`
|
||||
|
||||
## 轻度可选键(后续可开关)
|
||||
- 控制:`SLOW_CHANCE`(或改为 `STUN_CHANCE`)
|
||||
- 经济:`GOLD_GAIN`
|
||||
- 精英修正:`DMG_RED`
|
||||
|
||||
## 计划代码(示例)
|
||||
```ts
|
||||
// assets/script/game/common/config/TDEnabledAttrs.ts
|
||||
import { Attrs } from "./HeroAttrs";
|
||||
|
||||
export const TD_ENABLED_ATTRS: ReadonlySet<Attrs> = new Set<Attrs>([
|
||||
Attrs.AP,
|
||||
Attrs.AS,
|
||||
Attrs.DIS,
|
||||
Attrs.PIERCE,
|
||||
Attrs.CRITICAL,
|
||||
Attrs.CRITICAL_DMG,
|
||||
Attrs.HP_MAX,
|
||||
Attrs.DEF,
|
||||
]);
|
||||
|
||||
export const TD_OPTIONAL_ATTRS: ReadonlySet<Attrs> = new Set<Attrs>([
|
||||
Attrs.SLOW_CHANCE,
|
||||
Attrs.GOLD_GAIN,
|
||||
Attrs.DMG_RED,
|
||||
]);
|
||||
|
||||
export const TD_ATTR_GROUPS = {
|
||||
towerCore: [Attrs.AP, Attrs.AS, Attrs.DIS, Attrs.PIERCE],
|
||||
towerBonus: [Attrs.CRITICAL, Attrs.CRITICAL_DMG],
|
||||
enemyCore: [Attrs.HP_MAX, Attrs.DEF],
|
||||
optional: [Attrs.SLOW_CHANCE, Attrs.GOLD_GAIN, Attrs.DMG_RED],
|
||||
} as const;
|
||||
```
|
||||
|
||||
## 接入点(不改动逻辑,只引用)
|
||||
- 计算系统:在重算或结算处通过 `TD_ENABLED_ATTRS.has(attr)` 判断展示/参与计算(不改变已有正确计算路径,只做筛选)。
|
||||
- UI:面板按 `TD_ATTR_GROUPS` 渲染;未启用键默认隐藏。
|
||||
|
||||
## 验证
|
||||
- 在测试环境加载 1 个塔与 2 类敌人,确认仅启用键被展示和参与战斗,TTK/DPS 表现符合预期。
|
||||
|
||||
## 等待下一步
|
||||
- 若确认上述文件结构与键集合,开始创建文件并接入引用;如需改用 `AREA_OF_EFFECT` 替代 `PIERCE` 或改为 `STUN_CHANCE`,我会在提交前同步调整。
|
||||
Reference in New Issue
Block a user