Compare commits
6 Commits
2cf554b124
...
957cd6d453
| Author | SHA1 | Date | |
|---|---|---|---|
| 957cd6d453 | |||
| e62eecd214 | |||
| 11f1f08c1d | |||
| 91eb0c9f6e | |||
| abbe4cc6a0 | |||
| 326ceaf3d1 |
@@ -13,8 +13,8 @@
|
||||
### 2. 奖励选择系统
|
||||
- 每波怪物清理后提供三种奖励选项:弱、一般、强
|
||||
- 不同奖励选项消耗不同的金币数量
|
||||
- 奖励类型包括:英雄强化、技能升级、装备获取、属性提升等
|
||||
- 奖励评分系统,评分越高,消耗的金币越多
|
||||
- 奖励类型包括:英雄强化、技能升级、装备获取、属性提升,新技能获得等
|
||||
- 每个奖励有一个战力评分,评分越高,能力越强,消耗金币越多
|
||||
|
||||
### 3. 金币经济系统
|
||||
- 金币通过击败怪物固定掉落获得
|
||||
@@ -30,7 +30,14 @@
|
||||
- 稀有装备获取
|
||||
|
||||
### 5. 评分与成就系统
|
||||
- 建立评分机制评价玩家每波奖励选择
|
||||
- 建立评分机制评价:
|
||||
- 装备评分:根据装备属性加成计算
|
||||
- 技能评分:根据技能效果计算
|
||||
- 杀怪数量评分:根据击败怪物数量计算
|
||||
- 特殊事件奖励评分:根据特殊事件奖励计算
|
||||
- 受伤评分:根据英雄受伤hp值和受伤次数进行评分
|
||||
- DPS评分:根据英雄每秒伤害能力计算
|
||||
- 最大伤害值评分:根据英雄最大伤害值计算
|
||||
- 高评分可解锁特殊成就和奖励
|
||||
|
||||
## 游戏进程设计
|
||||
@@ -47,7 +54,6 @@
|
||||
- 特殊机制随进度解锁,增加游戏深度
|
||||
|
||||
## 英雄系统设计
|
||||
|
||||
### 英雄类型
|
||||
- **战士型**:高生命值,近战输出
|
||||
- **远程型**:远程攻击,较高攻击力
|
||||
@@ -56,23 +62,24 @@
|
||||
- **刺客类型**:高爆发,机动性强
|
||||
|
||||
### 英雄成长
|
||||
- 通过消耗金币升级提升基础属性
|
||||
- 解锁和升级技能获得更强战斗力
|
||||
- 装备系统提供额外属性加成
|
||||
|
||||
## 装备与技能系统
|
||||
|
||||
### 装备系统
|
||||
- 装备分为武器、防具、饰品等类型
|
||||
- 品质分为绿色、蓝色、紫色、橙色四个等级
|
||||
- 装备可升级,提升属性效果
|
||||
- 稀有装备提供特殊被动技能
|
||||
- 三选一奖励中,有属性提升,有技能升级,有新技能解锁,有装备获取
|
||||
- 属性提升:
|
||||
- 提升英雄基础属性,包括生命值、攻击力、防御力、速度等
|
||||
- 提升属性值根据奖励评分确定
|
||||
- 技能升级:
|
||||
- 升级普通攻击技能或大招技能
|
||||
- 升级后技能效果提升,消耗金币
|
||||
- 新技能解锁:
|
||||
- 解锁新技能,增加英雄战斗能力
|
||||
- 解锁新技能后,可选择升级或不升级
|
||||
- 装备获取:
|
||||
- 获取新装备,增加英雄属性加成
|
||||
- 装备属性根据奖励评分确定
|
||||
|
||||
### 技能系统
|
||||
- 每个英雄拥有多个技能
|
||||
- 技能分为主动技能和被动技能
|
||||
- 技能可升级提升效果
|
||||
- 特殊技能组合产生协同效应
|
||||
- 每个英雄拥初始拥有1个普通攻击技能和大招技能,技能消耗mp值和固定cd
|
||||
- 后续通过,每次的奖励可选择升级普通攻击技能、大招技能或新技能
|
||||
-
|
||||
|
||||
## 策略深度设计
|
||||
|
||||
|
||||
@@ -1,225 +1,45 @@
|
||||
## 《吸血鬼幸存者》英雄特性分析报告
|
||||
# 《吸血鬼幸存者》角色特性总表
|
||||
|
||||
作为本游戏开发的参考,对《吸血鬼幸存者》中的英雄设计进行详细分析:
|
||||
| 角色名称 | 解锁条件 | 初始武器 | 被动技能(核心特性) | 特点/备注 |
|
||||
|---------|----------|----------|---------------------|-----------|
|
||||
| **安东尼奥·贝尔帕斯** | 初始角色 | 鞭子 | 每10级增加10%伤害(最高50%) | 致敬《恶魔城》贝尔蒙特家族,前期扎实。 |
|
||||
| **伊梅尔达·贝尔帕斯** | 10金币购买 | 魔杖 | 每5级增加10%经验获取(最高30%) | 升级更快,适合快速发育。 |
|
||||
| **帕斯奎丽娜·贝尔帕斯** | 100金币购买 | 符文追踪器 | 每5级增加10%射弹速度(最高30%) | 提升武器飞行速度,增强命中率。 |
|
||||
| **吉纳罗·贝尔帕斯** | 500金币购买 | 飞刀 | **永久投射物数量+1** | 核心神技,极大增强所有武器的清怪能力。 |
|
||||
| **阿卡·拉多纳** | 火焰之杖4级后500金购买 | 火焰之杖 | 每10级减少5%冷却(最高15%) | 99级解锁隐藏至宝"火之心"。 |
|
||||
| **波尔塔·拉多纳** | 闪电戒指4级后500金购买 | 闪电戒指 | 开局冷却-90%,随等级逐渐恢复正常 | 开局强势,前期优势大。 |
|
||||
| **拉玛·拉多纳** | 诅咒≥10%时生存20分钟 | 斧头 | 每10级增加力量、移速、诅咒(最高20%) | 高风险高回报,后期属性强大。 |
|
||||
| **波·拉奇奥** | 大蒜7级后500金购买 | 大蒜 | **永久拾取范围+25%**(生命-30) | 磁铁范围加成计算方式特殊,可叠至233%。 |
|
||||
| **苏奥尔·克莱里奇** | 累计恢复1000生命 | 圣水 | 开局范围+400%,随等级递减 | 前期圣水范围极大,安全度高。 |
|
||||
| **多马利奥** | 单局赚5000金币 | 国王圣经 | 射弹速度+40%,持续时间+40%,移速-40% | **游戏中移动速度最慢的角色**。 |
|
||||
| **克罗奇·弗赖托** | 总计击败10万敌人 | 十字架 | 1级和33级各获得一次复活 | 移动速度第二快,生存能力强。 |
|
||||
| **克莉丝汀·达瓦因** | 五芒星7级后500金购买 | 五芒星 | 冷却时间-25%(生命、力量降低) | 高冷却缩减,需尽快进化五芒星避免损失经验。 |
|
||||
| **刺·普罗沃拉** | 疯狂森林棺材中解锁 | 菲拉图普罗&八雀(双枪) | **每级力量+1%(无上限)** | 纯粹的大后期角色,成长性极高。 |
|
||||
| **乔瓦娜·格拉纳** | 图书馆棺材中解锁 | 苦猫 | **每级投射物速度+1%(无上限)** | 搭配圣水、符文追踪器等武器效果佳。 |
|
||||
| **萝·卜头** | 奶牛场棺材中解锁 | 魔法之歌 | **每级武器效果持续时间+1%(无上限)** | 增强圣水、国王圣经等持续型武器。 |
|
||||
| **莫塔乔** | 总计击败3000骷髅 | 骨头 | 每20级投射物+1(最高+3) | 20级前较弱,60级后配合道具可达+6投射物。 |
|
||||
| **雅塔·卡瓦洛** | 总计击败3000狮头 | 樱桃炸弹 | 每20级投射物+1(最高+3) | 特性同莫塔乔,20级前是弱势期。 |
|
||||
| **比安卡·兰巴** | 总计击败3000牛奶精灵 | 卡雷洛 | 每20级投射物+1(最高+3) | 特性同莫塔乔,20级前是弱势期。 |
|
||||
| **O'Sole** | 总计击败3000龙虾 | 天体除尘 | 每20级投射物+1(最高+3) | 特性同莫塔乔,输入"PET"有隐藏彩蛋(治疗)。 |
|
||||
| **御堂纲纪** | 在宫古城往东走,路过通往连接领域的大门后打开棺材解锁 | 花剑 | 每20级,获得一个傀儡作为随从(最多+4) | 濒死时触发"独秀专场"。需先解锁他才能解锁"腥风血雨"武器。 |
|
||||
| **邦妮** | 完全进化武器"腥风血雨" | 冲拳 | 默认与福米娜组队进入关卡 | 解锁后可装备踢击。濒死时触发"独秀专场"。 |
|
||||
| **福米娜** | 完全进化武器"踢击" | 利剑机枪 | 默认与邦妮组队进入关卡 | 解锁后可装备鹰隼神枪。濒死时触发"独秀专场"。 |
|
||||
| **5号歌姬** | 完全进化武器"鹰隼神枪" | 超级导弹 | 拥有6种不同属性的皮肤 | 解锁后可装备双龙刀。所有皮肤状态下濒死时均触发"独秀专场"。 |
|
||||
| **阿米亚** | 完全进化武器"双龙刀" | 精灵戒指或直觉 | 收集她召唤的猫时会变得更强 | 在濒死时会触发"独秀专场"。 |
|
||||
| **西乌纳斯** | 击败连接领域所有部分的BOSS及最终BOSS后,在东边打开棺材解锁 | 市剑 | 被击败的敌人会成为随从,生命值上限提高时随从上限也随之提高 | 在濒死时会触发"独秀专场"。 |
|
||||
| **末代皇帝** | 使用邦妮或福米娜,在"翻转翡翠模型"中的格雷隆击败其恶魔形态 | 火焰大剑 | 触发点亮攻击的频率更高 | 在濒死时会触发"独秀专场"。 |
|
||||
| **多洛雷斯** | 使用西乌纳斯,在"翻转翡翠模型"中的黄泉击败特定BOSS | 布洛瓦战斧 | 在"濒死遗迹"中,每次有角色复活(包括自己)时触发"独秀专场" | 机制独特,与复活体系联动。 |
|
||||
| **玛查** | 使用阿米亚,在"翻转翡翠模型"中的阿瓦隆击败特定BOSS | 库库里匕首和隐藏的灾厄戒指 | 敌人生成数量+50% | 在濒死时会触发"独秀专场",高难度角色。 |
|
||||
| **丽塔** | 使用纲纪,在"翻转翡翠模型"中的普尔克拉击败土龙 | 长柄刀 | 开局即可使用特技"天雷" | 在濒死时会触发"独秀专场"。 |
|
||||
| **傀儡** | 在"翻转翡翠模型"中的宫古城击败木之神灵 | 双龙刀(武藏皮肤) | 具有四种皮肤,每点亮一个新特技可获得1次复活和5%成长属性 | 皮肤对应不同初始武器:武藏(双龙刀)/小町(库库里匕首)/坊(鹰隼神枪)/宿祢(冲拳)。 |
|
||||
| **老师** | 使用5号歌姬,在"翻转翡翠模型"中的翻转普罗维登斯击败活体苦恼 | 直觉 | 每20级,飞射物增加,最多+4 | 点亮技能高超。 |
|
||||
| **洛洛、嘶嘶、喵喵和呼噜** | 使用阿米亚,需要彪悍猫(升满级),通过各种方式尽量增加彪悍猫出现的数量 | (依形态而定) | 每次触发"独秀专场"时获得一名随从 | 此为阿米亚的不同形态,在濒死时会触发"独秀专场"。 |
|
||||
| **喜纳** | 通关一次后,再次进入翡翠模型然后立即退出(若未解锁可尝试在角色触发独秀专场后再死亡) | 无 | 天生知晓特技"飞燕切"和"疾风剑" | 濒死触发"独秀专场"时获得额外力量。 |
|
||||
| **今琥** | 使用5号歌姬和魔力歌谣击败活体苦恼 | 无 | 天生知晓特技"地狱断面"和"鲜血狂怒" | 濒死触发"独秀专场"时获得额外力量。 |
|
||||
| **门之邪灵** | 在冰冻状态下击败格雷隆的BOSS(如使用时之柳叶刀或卡牌时空的跨越等道具) | 鲜血圣杯 | 天生知晓"朱砂"特技 | 解锁方式特殊,需利用冰冻效果。 |
|
||||
|
||||
### 1. 核心设计理念
|
||||
|
||||
《吸血鬼幸存者》采用了极简的操作方式,玩家只需控制角色移动,所有攻击行为均为自动触发。这种设计让玩家能够专注于策略搭配和角色养成,而非复杂的操作。
|
||||
|
||||
### 2. 英雄定位分类
|
||||
|
||||
#### 2.1 输出型英雄
|
||||
- **特点**:高攻击力,适合快速清理敌人
|
||||
- **代表**:火法师、剑士等
|
||||
- **适用场景**:前期快速发育,中期压制敌人数量
|
||||
|
||||
#### 2.2 辅助型英雄
|
||||
- **特点**:提供范围控制或辅助效果
|
||||
- **代表**:冰法师职业等
|
||||
- **适用场景**:面对大量敌人时的控场
|
||||
|
||||
#### 2.3 生存型英雄
|
||||
- **特点**:高生命值或特殊生存机制
|
||||
- **代表**:战士类角色
|
||||
- **适用场景**:高难度挑战
|
||||
|
||||
### 3. 初始属性倾向
|
||||
|
||||
#### 3.1 攻击导向型
|
||||
- 初始攻击力较高
|
||||
- 攻击速度快
|
||||
- 生命值相对较低
|
||||
- 适合激进打法
|
||||
|
||||
#### 3.2 平衡发展型
|
||||
- 各项属性较为均衡
|
||||
- 适应性强
|
||||
- 适合新手玩家
|
||||
|
||||
#### 3.3 生存优先型
|
||||
- 初始生命值高
|
||||
- 移动速度较快
|
||||
- 攻击属性偏低
|
||||
- 适合保守打法
|
||||
|
||||
### 4. 专属武器/技能机制
|
||||
|
||||
#### 4.1 武器系统
|
||||
- 每个英雄初始配备特定武器
|
||||
- 武器可通过合成进化为更强形态
|
||||
- 最多可同时携带6种武器
|
||||
- 武器效果多样化:范围攻击、穿透攻击、追踪攻击等
|
||||
|
||||
#### 4.2 技能进化
|
||||
- 武器达到特定等级后可合成新武器
|
||||
- 不同武器组合产生不同效果
|
||||
- 部分武器具有独特的终极形态
|
||||
|
||||
### 5. 独特机制/成长系统
|
||||
|
||||
#### 5.1 属性成长
|
||||
- 力量:影响武器伤害
|
||||
- 速度:影响移动速度和攻击速度
|
||||
- 持续时间:影响技能持续时间
|
||||
- 范围:影响攻击范围
|
||||
- 效果持续时间:影响控制效果时长
|
||||
|
||||
#### 5.2 等级解锁机制
|
||||
- 每升5级解锁新的能力或道具槽位
|
||||
- 特定等级达成可解锁隐藏内容
|
||||
- 成长曲线非线性,后期提升显著
|
||||
|
||||
#### 5.3 随机性元素
|
||||
- 关卡内随机获得强化道具
|
||||
- 武器合成具有一定随机性
|
||||
- 每次游戏体验略有差异
|
||||
|
||||
### 6. 玩法特点
|
||||
|
||||
#### 6.1 自动战斗系统
|
||||
- 玩家仅需控制移动
|
||||
- 武器自动攻击最近敌人
|
||||
- 降低操作门槛,提高爽快感
|
||||
|
||||
#### 6.2 Build构筑系统
|
||||
- 通过不同武器组合形成特色Build
|
||||
- 每个英雄适合多种玩法流派
|
||||
- 鼓励重复游玩探索不同搭配
|
||||
|
||||
#### 6.3 时间推进机制
|
||||
- 敌人随时间不断增强
|
||||
- 每分钟刷新新类型敌人
|
||||
- BOSS战提供阶段性挑战
|
||||
|
||||
#### 6.4 成长反馈循环
|
||||
- 击杀敌人获得经验值升级
|
||||
- 升级获得属性提升或新能力
|
||||
- 强化道具进一步增强战斗力
|
||||
- 形成正向成长循环
|
||||
|
||||
### 7. 对本项目的参考价值
|
||||
|
||||
#### 7.1 简化操作理念
|
||||
- 可借鉴其简化操作的设计思路
|
||||
- 让玩家专注于策略而非复杂操作
|
||||
|
||||
#### 7.2 多样化成长路径
|
||||
- 英雄应具备多种发展方向
|
||||
- 通过装备/技能系统实现差异化
|
||||
|
||||
#### 7.3 正向反馈机制
|
||||
- 设计清晰的成长反馈循环
|
||||
- 提供持续的游戏动力
|
||||
|
||||
#### 7.4 Build构筑深度
|
||||
- 提供丰富的组合可能性
|
||||
- 增加游戏重玩价值
|
||||
|
||||
## 《吸血鬼幸存者》英雄独特机制详析
|
||||
|
||||
### 1. 独特成长机制
|
||||
|
||||
#### 1.1 无限成长型
|
||||
- **代表角色**:Avatar Infernas(阿凡达·因弗纳斯)、Smith IV(史密斯四世)
|
||||
- **机制特点**:每升一级获得固定属性加成,无上限
|
||||
- **具体表现**:
|
||||
- Avatar Infernas:每级+2%移速、+0.5%力量、-0.25%冷却、+0.5%诅咒
|
||||
- Smith IV:每级+0.01恢复、+0.7%力量/范围/投射物速度/持续时间、-0.25%冷却、+1%幸运
|
||||
|
||||
#### 1.2 条件触发成长型
|
||||
- **代表角色**:Bat Robbert(蝙蝠罗伯特)
|
||||
- **机制特点**:在特定条件下触发成长效果
|
||||
- **具体表现**:生命值低于20%时触发技能,增加最大生命值并恢复25%生命
|
||||
|
||||
#### 1.3 等级奖励成长型
|
||||
- **代表角色**:Queen Sigma(女王西格玛)
|
||||
- **机制特点**:每升一级获得固定属性加成
|
||||
- **具体表现**:每级+1%力量和+1%成长,无上限
|
||||
|
||||
#### 1.4 特殊资源成长型
|
||||
- **代表角色**:Big Trouser(大裤衩)
|
||||
- **机制特点**:通过特定资源获取成长
|
||||
- **具体表现**:每级+1%贪婪,金币狂热持续时间延长
|
||||
|
||||
### 2. 独特战斗机制
|
||||
|
||||
#### 2.1 冷却忽略机制
|
||||
- **代表角色**:Babi-Onna(婆毗婆)
|
||||
- **机制特点**:忽略武器冷却时间,通过移动触发武器攻击
|
||||
- **具体表现**:移动速度越快,武器冷却越短
|
||||
|
||||
#### 2.2 生存机制
|
||||
- **代表角色**:Queen Sigma(女王西格玛)
|
||||
- **机制特点**:特殊生存能力
|
||||
- **具体表现**:被白手击败时会变成光球向上飞升,实际上不会真正死亡
|
||||
|
||||
#### 2.3 武器限制机制
|
||||
- **代表角色**:Multiple characters with specific weapon synergies
|
||||
- **机制特点**:某些角色与特定武器有极佳协同效应
|
||||
- **具体表现**:
|
||||
- Babi-Onna最适合长冷却时间的强力武器
|
||||
- Smith IV适合高幸运值影响的武器
|
||||
|
||||
#### 2.4 独特解锁机制
|
||||
- **代表角色**:多个秘密角色
|
||||
- **机制特点**:需要完成特殊条件才能解锁
|
||||
- **具体表现**:
|
||||
- Avatar Infernas:在倒置的镶嵌图书馆中完成钢琴谜题
|
||||
- Big Trouser:在Moongolow关卡中将所有16个配件升级到满级
|
||||
- Smith IV:在主菜单输入"spam",角色选择界面输入"spam",关卡选择界面输入"spam",游戏中输入"humbug"
|
||||
|
||||
### 3. 独特属性系统
|
||||
|
||||
#### 3.1 负面属性开局
|
||||
- **代表角色**:Smith IV
|
||||
- **机制特点**:初始属性极低,但通过成长机制弥补
|
||||
- **具体表现**:-93最大生命值、-10%力量、-50%投射物速度等
|
||||
|
||||
#### 3.2 全属性强化
|
||||
- **代表角色**:Queen Sigma
|
||||
- **机制特点**:初始属性全面强化
|
||||
- **具体表现**:+233最大生命值、+50%移速、+50%力量、+50%持续时间等
|
||||
|
||||
#### 3.3 特殊属性成长
|
||||
- **代表角色**:Avatar Infernas、Smith IV
|
||||
- **机制特点**:多项属性随等级持续增长
|
||||
- **具体表现**:每级获得多项属性加成,无上限
|
||||
|
||||
### 4. 独特游戏机制
|
||||
|
||||
#### 4.1 商店替换机制
|
||||
- **代表角色**:Queen Sigma
|
||||
- **机制特点**:改变商店内容
|
||||
- **具体表现**:黄金蛋被替换为糖果盒
|
||||
|
||||
#### 4.2 武器协同机制
|
||||
- **代表角色**:Bat Robbert
|
||||
- **机制特点**:特定武器与角色技能高度协同
|
||||
- **具体表现**:Pako Battiliar(初始武器)和Mazo Familiar(进化武器)的伤害基于最大生命值
|
||||
|
||||
#### 4.3 弧光牌特殊机制
|
||||
- **代表角色**:Avatar Infernas(初始拥有额外的XIX - Heart of Fire弧光牌)
|
||||
- **机制特点**:初始拥有额外的弧光牌
|
||||
- **具体表现**:某些角色开始时就拥有特定的弧光牌
|
||||
|
||||
### 5. 对本项目的深度参考价值
|
||||
|
||||
#### 5.1 多样化的成长曲线设计
|
||||
- 可设计多种成长模式:线性成长、指数成长、条件触发成长等
|
||||
- 为不同类型的英雄设计不同的成长路径
|
||||
|
||||
#### 5.2 独特机制增加游戏深度
|
||||
- 每个英雄应有1-2个独特机制,使其在玩法上与众不同
|
||||
- 独特机制应与角色背景故事相呼应
|
||||
|
||||
#### 5.3 解锁机制增强探索欲望
|
||||
- 设计多样化的角色解锁条件,鼓励玩家探索游戏内容
|
||||
- 秘密角色的解锁可作为游戏的长期目标
|
||||
|
||||
#### 5.4 协同效应提升策略深度
|
||||
- 设计角色与技能、装备之间的协同效应
|
||||
- 鼓励玩家探索不同的搭配组合
|
||||
|
||||
#### 5.5 特殊属性系统增加策略性
|
||||
- 设计独特的属性成长系统,让玩家在角色培养上有更多选择
|
||||
- 负面属性开局的角色可通过其他方式补偿,增加游戏平衡性
|
||||
## 表格说明
|
||||
* **加粗文本**表示该角色的核心优势或特色机制
|
||||
* 角色按解锁难度和游戏进度大致排序
|
||||
* 后期角色普遍与"翻转翡翠模型"游戏内容相关
|
||||
* "独秀专场"是许多后期角色的共同濒死爆发机制
|
||||
545
assets/script/game/common/config/HeroAttrs.ts
Normal file
545
assets/script/game/common/config/HeroAttrs.ts
Normal file
@@ -0,0 +1,545 @@
|
||||
import * as exp from "constants";
|
||||
import { HType } from "./heroSet";
|
||||
|
||||
/**
|
||||
* Buff类型枚举
|
||||
* VALUE: 数值型 - 直接加减数值
|
||||
* RATIO: 百分比型 - 按百分比计算
|
||||
*/
|
||||
export enum BType {
|
||||
VALUE = 0, //数值型
|
||||
RATIO = 1 //百分比型
|
||||
}
|
||||
|
||||
export enum NeAttrs {
|
||||
IN_FROST = 0,
|
||||
IN_STUN = 1,
|
||||
IN_BURN = 2,
|
||||
IN_POISON = 3,
|
||||
}
|
||||
export const getNeAttrs = () => {
|
||||
let reAttrs = {};
|
||||
Object.keys(NeAttrs).forEach(key => {
|
||||
if (!isNaN(Number(key))) {
|
||||
reAttrs[Number(key)] = {
|
||||
value: 0,
|
||||
time: 0,
|
||||
};
|
||||
}
|
||||
});
|
||||
return reAttrs;
|
||||
}
|
||||
// ========== 属性枚举 ==========
|
||||
/**
|
||||
* 英雄属性枚举
|
||||
* 定义所有可用的战斗属性类型
|
||||
* 按逻辑分组排序:基础生存 → 攻击属性 → 防御属性 → 特殊效果 → 基础属性
|
||||
*/
|
||||
export enum Attrs {
|
||||
// ========== 基础生存属性 (0-9) ==========
|
||||
HP_MAX = 0, // 最大生命值
|
||||
MP_MAX = 1, // 最大魔法值
|
||||
SHIELD_MAX = 2, // 最大护盾值
|
||||
HP_REGEN = 3, // 生命回复
|
||||
MP_REGEN = 4, // 魔法回复
|
||||
HEAL_EFFECT = 5, // 治疗效果
|
||||
|
||||
// ========== 攻击属性 (10-19) ==========
|
||||
AP = 10, // 攻击力
|
||||
MAP = 11, // 魔法攻击力
|
||||
DIS = 12, // 攻击距离
|
||||
AS = 13, // 攻击速度(减少技能CD)
|
||||
SKILL_DURATION = 14, // 技能持续时间
|
||||
AREA_OF_EFFECT = 15, // 作用范围
|
||||
PIERCE = 16, // 穿透次数
|
||||
|
||||
// ========== 防御属性 (20-29) ==========
|
||||
DEF = 20, // 物理防御
|
||||
MDEF = 21, // 魔法防御
|
||||
DODGE = 22, // 闪避率
|
||||
BLOCK = 23, // 格挡率
|
||||
DAMAGE_REDUCTION = 24, // 伤害减免
|
||||
THORNS = 25, // 反伤
|
||||
CRITICAL_RESIST = 26, // 暴击抗性
|
||||
CON_RES = 27, // 控制抗性
|
||||
MAGIC_RES = 28, // 魔法抗性
|
||||
|
||||
// ========== 暴击与命中属性 (30-39) ==========
|
||||
CRITICAL = 30, // 暴击率
|
||||
CRITICAL_DMG = 31, // 暴击伤害
|
||||
HIT = 32, // 命中率
|
||||
|
||||
// ========== 元素属性 (40-49) ==========
|
||||
ICE_RES = 40, // 冰冻抗性
|
||||
FIRE_RES = 41, // 火焰抗性
|
||||
WIND_RES = 42, // 自然抗性
|
||||
ICE_POWER = 43, // 冰冻伤害加成
|
||||
FIRE_POWER = 44, // 火焰伤害加成
|
||||
WIND_POWER = 45, // 自然伤害加成
|
||||
|
||||
|
||||
// ========== 特殊效果属性 (50-59) ==========
|
||||
LIFESTEAL = 50, // 吸血比率
|
||||
MANASTEAL = 51, // 吸蓝比率
|
||||
FREEZE_CHANCE = 52, // 冰冻概率
|
||||
BURN_CHANCE = 53, // 燃烧概率
|
||||
STUN_CHANCE = 54, // 眩晕概率
|
||||
KNOCKBACK = 55, // 击退概率
|
||||
SLOW_CHANCE = 56, // 减速概率
|
||||
POISON_CHANCE = 57, // 中毒概率
|
||||
CHAIN_CHANCE = 58, // 连锁概率
|
||||
EXPLOSION_CHANCE = 59, // 爆炸概率
|
||||
|
||||
// ========== 增益效果属性 (60-69) ==========
|
||||
BUFF_UP = 60, // Buff效果提升
|
||||
DBUFF_UP = 61, // Debuff效果提升
|
||||
SHIELD_UP = 62, // 护盾效果提升
|
||||
SPEED = 63, // 移动速度加成
|
||||
EXP_GAIN = 64, // 经验获取
|
||||
GOLD_GAIN = 65, // 金币获取
|
||||
DROP_CHANCE = 66, // 掉落率
|
||||
REVIVE_COUNT = 67, // 复活次数
|
||||
REVIVE_TIME = 68, // 复活时间
|
||||
INVINCIBLE_TIME = 69, // 无敌时间
|
||||
|
||||
// ========== 武器进化相关 (70-79) ==========
|
||||
PUNCTURE = 70, // 穿刺次数
|
||||
PUNCTURE_DMG = 71, // 穿刺伤害
|
||||
BACK = 73, // 被击退概率(兼容旧代码)
|
||||
MOVE_SPEED = 74, // 移动速度
|
||||
BURN = 75, // 易伤效果
|
||||
WFUNY = 77, // 风怒
|
||||
|
||||
// ========== 生存与恢复相关 (80-89) ==========
|
||||
|
||||
// ========== 负面状态相关 (90-99) ==========
|
||||
|
||||
// ========== 基础属性(影响其他属性)(100-104) ==========
|
||||
STRENGTH = 90, // 力量(影响物理相关)
|
||||
INTELLIGENCE = 91, // 智力(影响魔法相关)
|
||||
AGILITY = 92, // 敏捷(影响速度和闪避)
|
||||
SPIRIT = 93, // 精神(影响抗性和特殊效果)
|
||||
LUCK = 94, // 幸运(影响暴击和特殊概率)
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化英雄属性对象
|
||||
* 遍历 Attrs 枚举的所有数字值,返回一个属性初始值为 0 的对象
|
||||
* @returns 属性映射对象 { 属性ID: 0 }
|
||||
*/
|
||||
export const getAttrs = () => {
|
||||
// 遍历枚举的数字值(枚举会生成双向映射)
|
||||
let reAttrs = {};
|
||||
Object.keys(Attrs).forEach(key => {
|
||||
if (!isNaN(Number(key))) {
|
||||
reAttrs[Number(key)] = 0;
|
||||
}
|
||||
});
|
||||
return reAttrs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 属性类型配置表
|
||||
* 用于区分每个属性是数值型还是百分比型
|
||||
* - VALUE: 数值型属性(如生命值、攻击力等绝对数值)
|
||||
* - RATIO: 百分比型属性(如暴击率、闪避率等百分比数值)
|
||||
* 按新的Attrs枚举顺序重新组织
|
||||
*/
|
||||
export const AttrsType: Record<Attrs, BType> = {
|
||||
// ========== 基础生存属性(数值型) ==========
|
||||
[Attrs.HP_MAX]: BType.VALUE, // 最大生命值 - 数值型
|
||||
[Attrs.MP_MAX]: BType.VALUE, // 最大魔法值 - 数值型
|
||||
[Attrs.SHIELD_MAX]: BType.VALUE, // 最大护盾值 - 数值型
|
||||
[Attrs.HP_REGEN]: BType.VALUE, // 生命回复 - 数值型
|
||||
[Attrs.MP_REGEN]: BType.VALUE, // 魔法回复 - 数值型
|
||||
[Attrs.HEAL_EFFECT]: BType.RATIO, // 治疗效果 - 百分比型
|
||||
|
||||
// ========== 攻击属性(数值型) ==========
|
||||
[Attrs.AP]: BType.VALUE, // 攻击力 - 数值型
|
||||
[Attrs.MAP]: BType.VALUE, // 魔法攻击力 - 数值型
|
||||
[Attrs.DIS]: BType.VALUE, // 攻击距离 - 数值型
|
||||
[Attrs.AS]: BType.RATIO, // 攻击速度 - 百分比型
|
||||
[Attrs.SKILL_DURATION]: BType.RATIO, // 技能持续时间 - 百分比型
|
||||
[Attrs.AREA_OF_EFFECT]: BType.VALUE, // 作用范围 - 数值型
|
||||
[Attrs.PIERCE]: BType.VALUE, // 穿透次数 - 数值型
|
||||
|
||||
// ========== 防御属性(混合类型) ==========
|
||||
[Attrs.DEF]: BType.VALUE, // 物理防御 - 数值型
|
||||
[Attrs.MDEF]: BType.VALUE, // 魔法防御 - 数值型
|
||||
[Attrs.DODGE]: BType.RATIO, // 闪避率 - 百分比型
|
||||
[Attrs.BLOCK]: BType.RATIO, // 格挡率 - 百分比型
|
||||
[Attrs.DAMAGE_REDUCTION]: BType.RATIO, // 伤害减免 - 百分比型
|
||||
[Attrs.THORNS]: BType.RATIO, // 反伤 - 百分比型
|
||||
|
||||
// ========== 暴击与命中属性(百分比型) ==========
|
||||
[Attrs.CRITICAL]: BType.RATIO, // 暴击率 - 百分比型
|
||||
[Attrs.CRITICAL_DMG]: BType.RATIO, // 暴击伤害 - 百分比型
|
||||
[Attrs.HIT]: BType.RATIO, // 命中率 - 百分比型
|
||||
[Attrs.CRITICAL_RESIST]: BType.RATIO, // 暴击抗性 - 百分比型
|
||||
[Attrs.CON_RES]: BType.RATIO, // 控制抗性 - 百分比型
|
||||
[Attrs.MAGIC_RES]: BType.RATIO, // 魔法抗性 - 百分比型
|
||||
|
||||
// ========== 元素属性(百分比型) ==========
|
||||
[Attrs.ICE_RES]: BType.RATIO, // 冰冻抗性 - 百分比型
|
||||
[Attrs.FIRE_RES]: BType.RATIO, // 火焰抗性 - 百分比型
|
||||
[Attrs.WIND_RES]: BType.RATIO, // 风抗性 - 百分比型
|
||||
[Attrs.ICE_POWER]: BType.RATIO, // 冰冻伤害加成 - 百分比型
|
||||
[Attrs.FIRE_POWER]: BType.RATIO, // 火焰伤害加成 - 百分比型
|
||||
[Attrs.WIND_POWER]: BType.RATIO, // 风伤害加成 - 百分比型
|
||||
|
||||
// ========== 特殊效果属性(百分比型) ==========
|
||||
[Attrs.LIFESTEAL]: BType.RATIO, // 吸血比率 - 百分比型
|
||||
[Attrs.MANASTEAL]: BType.RATIO, // 吸蓝 - 百分比型
|
||||
[Attrs.FREEZE_CHANCE]: BType.RATIO, // 冰冻概率 - 百分比型
|
||||
[Attrs.BURN_CHANCE]: BType.RATIO, // 燃烧概率 - 百分比型
|
||||
[Attrs.STUN_CHANCE]: BType.RATIO, // 眩晕概率 - 百分比型
|
||||
[Attrs.KNOCKBACK]: BType.RATIO, // 击退 - 百分比型
|
||||
[Attrs.SLOW_CHANCE]: BType.RATIO, // 减速概率 - 百分比型
|
||||
[Attrs.POISON_CHANCE]: BType.RATIO, // 中毒概率 - 百分比型
|
||||
[Attrs.CHAIN_CHANCE]: BType.RATIO, // 连锁概率 - 百分比型
|
||||
[Attrs.EXPLOSION_CHANCE]: BType.RATIO, // 爆炸概率 - 百分比型
|
||||
|
||||
// ========== 增益效果属性(百分比型) ==========
|
||||
[Attrs.BUFF_UP]: BType.RATIO, // Buff效果提升 - 百分比型
|
||||
[Attrs.DBUFF_UP]: BType.RATIO, // Debuff效果提升 - 百分比型
|
||||
[Attrs.SHIELD_UP]: BType.RATIO, // 护盾效果提升 - 百分比型
|
||||
[Attrs.SPEED]: BType.RATIO, // 移动速度加成 - 百分比型
|
||||
[Attrs.EXP_GAIN]: BType.RATIO, // 经验获取 - 百分比型
|
||||
[Attrs.GOLD_GAIN]: BType.RATIO, // 金币获取 - 百分比型
|
||||
[Attrs.DROP_CHANCE]: BType.RATIO, // 掉落率 - 百分比型
|
||||
[Attrs.REVIVE_COUNT]: BType.VALUE, // 复活次数 - 数值型
|
||||
[Attrs.REVIVE_TIME]: BType.RATIO, // 复活时间 - 百分比型
|
||||
[Attrs.INVINCIBLE_TIME]: BType.RATIO, // 无敌时间 - 百分比型
|
||||
|
||||
// ========== 武器进化相关(混合类型) ==========
|
||||
[Attrs.PUNCTURE]: BType.VALUE, // 穿刺次数 - 数值型
|
||||
[Attrs.PUNCTURE_DMG]: BType.RATIO, // 穿刺伤害 - 百分比型
|
||||
[Attrs.BACK]: BType.RATIO, // 被击退概率(兼容)- 百分比型
|
||||
[Attrs.MOVE_SPEED]: BType.VALUE, // 移动速度 - 数值型
|
||||
[Attrs.BURN]: BType.RATIO, // 易伤效果 - 百分比型
|
||||
[Attrs.WFUNY]: BType.RATIO, // 未知特殊属性 - 百分比型
|
||||
|
||||
// ========== 生存与恢复相关(混合类型) ==========
|
||||
|
||||
// ========== 负面状态相关(混合类型) ==========
|
||||
|
||||
// ========== 基础属性(数值型) ==========
|
||||
[Attrs.STRENGTH]: BType.VALUE, // 力量 - 数值型
|
||||
[Attrs.INTELLIGENCE]: BType.VALUE, // 智力 - 数值型
|
||||
[Attrs.AGILITY]: BType.VALUE, // 敏捷 - 数值型
|
||||
[Attrs.SPIRIT]: BType.VALUE, // 精神 - 数值型
|
||||
[Attrs.LUCK]: BType.VALUE, // 幸运 - 数值型
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断属性是否为百分比型
|
||||
* @param attrType 属性类型
|
||||
* @returns true: 百分比型, false: 数值型
|
||||
*/
|
||||
export const isRatioAttr = (attrType: Attrs): boolean => {
|
||||
return AttrsType[attrType] === BType.RATIO;
|
||||
};
|
||||
|
||||
/**
|
||||
* 职业属性增长系数配置
|
||||
* 定义不同职业类型下,基础属性对战斗属性的差异化转化比例
|
||||
*/
|
||||
|
||||
/**
|
||||
* 基础属性增长映射接口
|
||||
*/
|
||||
export interface BaseAttrGrowthRate {
|
||||
[targetAttr: number]: number; // 目标属性 -> 增长系数
|
||||
}
|
||||
|
||||
/**
|
||||
* 职业属性增长配置接口
|
||||
*/
|
||||
export interface HeroTypeAttrGrowth {
|
||||
[baseAttr: number]: BaseAttrGrowthRate; // 基础属性 -> 目标属性增长配置
|
||||
}
|
||||
|
||||
/**
|
||||
* 职业属性增长配置表
|
||||
* 体现不同职业的成长特色
|
||||
*/
|
||||
export const HeroTypeGrowthConfig: Record<HType, HeroTypeAttrGrowth> = {
|
||||
// ========== 战士 (Warrior) ==========
|
||||
// 特点:高生命、高物理攻击、高物理防御
|
||||
[HType.warrior]: {
|
||||
[Attrs.STRENGTH]: {
|
||||
[Attrs.HP_MAX]: 3, // 力量 -> 生命值 (战士系数更高)
|
||||
[Attrs.AP]: 1.5, // 力量 -> 攻击力 (战士系数更高)
|
||||
[Attrs.DEF]: 0.8, // 力量 -> 物理防御
|
||||
},
|
||||
[Attrs.INTELLIGENCE]: {
|
||||
[Attrs.MP_MAX]: 0.5, // 智力 -> 魔法值 (战士系数较低)
|
||||
[Attrs.MAP]: 0.3, // 智力 -> 魔法攻击 (战士不擅长)
|
||||
},
|
||||
[Attrs.AGILITY]: {
|
||||
[Attrs.CRITICAL]: 0.3, // 敏捷 -> 暴击率
|
||||
[Attrs.DODGE]: 0.2, // 敏捷 -> 闪避 (战士较低)
|
||||
[Attrs.AS]: 0.2, // 敏捷 -> 攻击速度
|
||||
},
|
||||
[Attrs.SPIRIT]: {
|
||||
[Attrs.MP_MAX]: 0.5, // 精神 -> 魔法值
|
||||
[Attrs.LIFESTEAL]: 0.4, // 精神 -> 吸血 (战士较高)
|
||||
[Attrs.MDEF]: 0.3, // 精神 -> 魔法防御
|
||||
[Attrs.HP_REGEN]: 0.2, // 精神 -> 生命回复
|
||||
[Attrs.MP_REGEN]: 0.3, // 精神 -> 魔法回复
|
||||
},
|
||||
[Attrs.LUCK]: {
|
||||
[Attrs.CRITICAL]: 0.8, // 幸运 -> 暴击率
|
||||
[Attrs.CRITICAL_DMG]: 0.4, // 幸运 -> 暴击伤害
|
||||
},
|
||||
},
|
||||
|
||||
// ========== 远程 (Remote) ==========
|
||||
// 特点:高敏捷、高攻速、高暴击
|
||||
[HType.remote]: {
|
||||
[Attrs.STRENGTH]: {
|
||||
[Attrs.HP_MAX]: 1.5, // 力量 -> 生命值 (远程较低)
|
||||
[Attrs.AP]: 1.2, // 力量 -> 攻击力
|
||||
[Attrs.DEF]: 0.4, // 力量 -> 物理防御 (远程较低)
|
||||
},
|
||||
[Attrs.INTELLIGENCE]: {
|
||||
[Attrs.MP_MAX]: 0.8, // 智力 -> 魔法值
|
||||
[Attrs.MAP]: 0.5, // 智力 -> 魔法攻击
|
||||
},
|
||||
[Attrs.AGILITY]: {
|
||||
[Attrs.CRITICAL]: 0.8, // 敏捷 -> 暴击率 (远程很高)
|
||||
[Attrs.DODGE]: 0.6, // 敏捷 -> 闪避 (远程较高)
|
||||
[Attrs.AS]: 0.5, // 敏捷 -> 攻击速度 (远程很高)
|
||||
[Attrs.SPEED]: 0.3, // 敏捷 -> 移动速度
|
||||
},
|
||||
[Attrs.SPIRIT]: {
|
||||
[Attrs.MP_MAX]: 0.6, // 精神 -> 魔法值
|
||||
[Attrs.HIT]: 0.5, // 精神 -> 命中 (远程需要精准)
|
||||
[Attrs.MDEF]: 0.3, // 精神 -> 魔法防御
|
||||
},
|
||||
[Attrs.LUCK]: {
|
||||
[Attrs.CRITICAL]: 1.2, // 幸运 -> 暴击率 (远程最高)
|
||||
[Attrs.CRITICAL_DMG]: 0.8, // 幸运 -> 暴击伤害 (远程很高)
|
||||
[Attrs.HIT]: 0.4, // 幸运 -> 命中
|
||||
},
|
||||
},
|
||||
|
||||
// ========== 法师 (Mage) ==========
|
||||
// 特点:高魔法攻击、高魔法值、高魔法防御
|
||||
[HType.mage]: {
|
||||
[Attrs.STRENGTH]: {
|
||||
[Attrs.HP_MAX]: 1.2, // 力量 -> 生命值 (法师很低)
|
||||
[Attrs.AP]: 0.3, // 力量 -> 攻击力 (法师不需要)
|
||||
},
|
||||
[Attrs.INTELLIGENCE]: {
|
||||
[Attrs.MP_MAX]: 2, // 智力 -> 魔法值 (法师最高)
|
||||
[Attrs.MAP]: 1.8, // 智力 -> 魔法攻击 (法师最高)
|
||||
[Attrs.MDEF]: 0.8, // 智力 -> 魔法防御
|
||||
[Attrs.AREA_OF_EFFECT]: 0.3, // 智力 -> 作用范围
|
||||
},
|
||||
[Attrs.AGILITY]: {
|
||||
[Attrs.CRITICAL]: 0.4, // 敏捷 -> 暴击率
|
||||
[Attrs.DODGE]: 0.3, // 敏捷 -> 闪避
|
||||
[Attrs.AS]: 0.3, // 敏捷 -> 攻击速度
|
||||
},
|
||||
[Attrs.SPIRIT]: {
|
||||
[Attrs.MP_MAX]: 1.5, // 精神 -> 魔法值 (法师较高)
|
||||
[Attrs.MDEF]: 0.8, // 精神 -> 魔法防御 (法师较高)
|
||||
[Attrs.CON_RES]: 0.3, // 精神 -> 控制抗性
|
||||
},
|
||||
[Attrs.LUCK]: {
|
||||
[Attrs.CRITICAL]: 0.6, // 幸运 -> 暴击率
|
||||
[Attrs.CRITICAL_DMG]: 0.5, // 幸运 -> 暴击伤害
|
||||
},
|
||||
},
|
||||
|
||||
// ========== 辅助 (Support) ==========
|
||||
// 特点:高生命、高魔法值、高抗性、高辅助效果
|
||||
[HType.support]: {
|
||||
[Attrs.STRENGTH]: {
|
||||
[Attrs.HP_MAX]: 2.5, // 力量 -> 生命值 (辅助较高)
|
||||
[Attrs.AP]: 0.5, // 力量 -> 攻击力 (辅助较低)
|
||||
[Attrs.DEF]: 0.6, // 力量 -> 物理防御
|
||||
},
|
||||
[Attrs.INTELLIGENCE]: {
|
||||
[Attrs.MP_MAX]: 1.5, // 智力 -> 魔法值 (辅助需要)
|
||||
[Attrs.MAP]: 0.8, // 智力 -> 魔法攻击
|
||||
[Attrs.MDEF]: 0.6, // 智力 -> 魔法防御
|
||||
},
|
||||
[Attrs.AGILITY]: {
|
||||
[Attrs.DODGE]: 0.4, // 敏捷 -> 闪避
|
||||
[Attrs.AS]: 0.3, // 敏捷 -> 攻击速度
|
||||
[Attrs.SPEED]: 0.4, // 敏捷 -> 移动速度
|
||||
},
|
||||
[Attrs.SPIRIT]: {
|
||||
[Attrs.MP_MAX]: 2, // 精神 -> 魔法值 (辅助很高)
|
||||
[Attrs.LIFESTEAL]: 0.5, // 精神 -> 吸血
|
||||
[Attrs.MDEF]: 0.8, // 精神 -> 魔法防御 (辅助较高)
|
||||
[Attrs.CON_RES]: 0.5, // 精神 -> 控制抗性 (辅助较高)
|
||||
[Attrs.BUFF_UP]: 0.6, // 精神 -> Buff效果提升 (辅助特色)
|
||||
},
|
||||
[Attrs.LUCK]: {
|
||||
[Attrs.CRITICAL]: 0.5, // 幸运 -> 暴击率
|
||||
[Attrs.SHIELD_UP]: 0.8, // 幸运 -> 护盾效果提升 (辅助特色)
|
||||
},
|
||||
},
|
||||
|
||||
// ========== 刺客 (Assassin) ==========
|
||||
// 特点:超高暴击、高敏捷、高爆发、低防御
|
||||
[HType.assassin]: {
|
||||
[Attrs.STRENGTH]: {
|
||||
[Attrs.HP_MAX]: 1.8, // 力量 -> 生命值 (刺客较低)
|
||||
[Attrs.AP]: 1.3, // 力量 -> 攻击力
|
||||
[Attrs.DEF]: 0.3, // 力量 -> 物理防御 (刺客很低)
|
||||
},
|
||||
[Attrs.INTELLIGENCE]: {
|
||||
[Attrs.MP_MAX]: 0.6, // 智力 -> 魔法值
|
||||
[Attrs.MAP]: 0.4, // 智力 -> 魔法攻击
|
||||
},
|
||||
[Attrs.AGILITY]: {
|
||||
[Attrs.CRITICAL]: 1, // 敏捷 -> 暴击率 (刺客超高)
|
||||
[Attrs.DODGE]: 0.8, // 敏捷 -> 闪避 (刺客很高)
|
||||
[Attrs.AS]: 0.6, // 敏捷 -> 攻击速度 (刺客很高)
|
||||
[Attrs.SPEED]: 0.5, // 敏捷 -> 移动速度 (刺客很高)
|
||||
},
|
||||
[Attrs.SPIRIT]: {
|
||||
[Attrs.MP_MAX]: 0.5, // 精神 -> 魔法值
|
||||
[Attrs.LIFESTEAL]: 0.6, // 精神 -> 吸血 (刺客较高)
|
||||
[Attrs.MDEF]: 0.2, // 精神 -> 魔法防御 (刺客很低)
|
||||
},
|
||||
[Attrs.LUCK]: {
|
||||
[Attrs.CRITICAL]: 1.5, // 幸运 -> 暴击率 (刺客超高)
|
||||
[Attrs.CRITICAL_DMG]: 1, // 幸运 -> 暴击伤害 (刺客超高)
|
||||
[Attrs.HIT]: 0.3, // 幸运 -> 命中
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* 根据职业类型和基础属性,计算其他属性的增长值
|
||||
* @param heroType 职业类型
|
||||
* @param baseAttrType 基础属性类型(STRENGTH, INTELLIGENCE, AGILITY, SPIRIT, LUCK)
|
||||
* @param baseAttrValue 基础属性点数
|
||||
* @returns 其他属性的增长值映射表
|
||||
*
|
||||
* @example
|
||||
* // 计算战士职业10点力量的属性增长
|
||||
* const gains = calculateAttributeGains(HType.warrior, Attrs.STRENGTH, 10);
|
||||
* // 返回:{ [Attrs.HP_MAX]: 30, [Attrs.AP]: 15, [Attrs.DEF]: 8 }
|
||||
*/
|
||||
export function calculateAttributeGains(
|
||||
heroType: HType,
|
||||
baseAttrType: Attrs,
|
||||
baseAttrValue: number
|
||||
): Partial<Record<Attrs, number>> {
|
||||
const heroGrowthConfig = HeroTypeGrowthConfig[heroType];
|
||||
if (!heroGrowthConfig) {
|
||||
console.warn(`未找到职业类型 ${heroType} 的增长配置`);
|
||||
return {};
|
||||
}
|
||||
|
||||
const baseAttrGrowth = heroGrowthConfig[baseAttrType];
|
||||
if (!baseAttrGrowth) {
|
||||
console.warn(`职业 ${heroType} 不具有基础属性 ${baseAttrType} 的增长配置`);
|
||||
return {};
|
||||
}
|
||||
|
||||
const result: Partial<Record<Attrs, number>> = {};
|
||||
for (const targetAttrStr in baseAttrGrowth) {
|
||||
const targetAttr = Number(targetAttrStr) as Attrs;
|
||||
const growthRate = baseAttrGrowth[targetAttr];
|
||||
result[targetAttr] = baseAttrValue * growthRate;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 快捷方法:计算力量属性增长
|
||||
* @param heroType 职业类型
|
||||
* @param strengthPoints 力量点数
|
||||
* @returns 其他属性的增长值
|
||||
*/
|
||||
export function addStrength(heroType: HType, strengthPoints: number): Partial<Record<Attrs, number>> {
|
||||
return calculateAttributeGains(heroType, Attrs.STRENGTH, strengthPoints);
|
||||
}
|
||||
|
||||
/**
|
||||
* 快捷方法:计算智力属性增长
|
||||
* @param heroType 职业类型
|
||||
* @param intelligencePoints 智力点数
|
||||
* @returns 其他属性的增长值
|
||||
*/
|
||||
export function addIntelligence(heroType: HType, intelligencePoints: number): Partial<Record<Attrs, number>> {
|
||||
return calculateAttributeGains(heroType, Attrs.INTELLIGENCE, intelligencePoints);
|
||||
}
|
||||
|
||||
/**
|
||||
* 快捷方法:计算敏捷属性增长
|
||||
* @param heroType 职业类型
|
||||
* @param agilityPoints 敏捷点数
|
||||
* @returns 其他属性的增长值
|
||||
*/
|
||||
export function addAgility(heroType: HType, agilityPoints: number): Partial<Record<Attrs, number>> {
|
||||
return calculateAttributeGains(heroType, Attrs.AGILITY, agilityPoints);
|
||||
}
|
||||
|
||||
/**
|
||||
* 快捷方法:计算精神属性增长
|
||||
* @param heroType 职业类型
|
||||
* @param spiritPoints 精神点数
|
||||
* @returns 其他属性的增长值
|
||||
*/
|
||||
export function addSpirit(heroType: HType, spiritPoints: number): Partial<Record<Attrs, number>> {
|
||||
return calculateAttributeGains(heroType, Attrs.SPIRIT, spiritPoints);
|
||||
}
|
||||
|
||||
/**
|
||||
* 快捷方法:计算幸运属性增长
|
||||
* @param heroType 职业类型
|
||||
* @param luckPoints 幸运点数
|
||||
* @returns 其他属性的增长值
|
||||
*/
|
||||
export function addLuck(heroType: HType, luckPoints: number): Partial<Record<Attrs, number>> {
|
||||
return calculateAttributeGains(heroType, Attrs.LUCK, luckPoints);
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算多个基础属性的总增长
|
||||
* @param heroType 职业类型
|
||||
* @param baseAttrs 基础属性映射表 { 属性ID: 属性值 }
|
||||
* @returns 总增长值
|
||||
*
|
||||
* @example
|
||||
* // 计算战士职业的总属性增长
|
||||
* const totalGains = calculateTotalAttributeGains(HType.warrior, {
|
||||
* [Attrs.STRENGTH]: 10,
|
||||
* [Attrs.AGILITY]: 5,
|
||||
* [Attrs.SPIRIT]: 3
|
||||
* });
|
||||
*/
|
||||
export function calculateTotalAttributeGains(
|
||||
heroType: HType,
|
||||
baseAttrs: Partial<Record<Attrs, number>>
|
||||
): Partial<Record<Attrs, number>> {
|
||||
const totalGains: Partial<Record<Attrs, number>> = {};
|
||||
|
||||
for (const baseAttrStr in baseAttrs) {
|
||||
const baseAttr = Number(baseAttrStr) as Attrs;
|
||||
const baseAttrValue = baseAttrs[baseAttr];
|
||||
|
||||
if (baseAttrValue === undefined || baseAttrValue <= 0) continue;
|
||||
|
||||
const gains = calculateAttributeGains(heroType, baseAttr, baseAttrValue);
|
||||
|
||||
for (const targetAttrStr in gains) {
|
||||
const targetAttr = Number(targetAttrStr) as Attrs;
|
||||
const gainValue = gains[targetAttr];
|
||||
if (gainValue !== undefined) {
|
||||
totalGains[targetAttr] = (totalGains[targetAttr] || 0) + gainValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return totalGains;
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"ver": "4.0.24",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "ac54946f-ff4d-4d34-b1a3-234efe61f2fc",
|
||||
"uuid": "6f2434a0-4835-4abf-9acb-30699979d1a8",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
@@ -1,3 +1,5 @@
|
||||
// ========== 从 HeroAttrs.ts 导入属性相关定义 ==========
|
||||
import { Attrs, NeAttrs,BType, getAttrs, AttrsType, isRatioAttr } from "./HeroAttrs";
|
||||
export enum TGroup {
|
||||
Self = 0, // 自身
|
||||
Ally = 1, // 所有敌人
|
||||
@@ -44,8 +46,8 @@ export enum SType {
|
||||
zhaohuan = 10,
|
||||
buff = 11,
|
||||
}
|
||||
|
||||
export enum AtkedType {
|
||||
//受伤动画名称
|
||||
export enum AtkedName {
|
||||
atked = "atked",
|
||||
ice = "atked_ice",
|
||||
fire = "atked_fire",
|
||||
@@ -70,191 +72,8 @@ export enum EType {
|
||||
}
|
||||
//debuff类型
|
||||
|
||||
export enum DBuff {
|
||||
STUN = 1, //眩晕 - 对应Attrs.CON_RES (控制抗性), BType.RATIO
|
||||
SLOW = 2, //减速 - 对应Attrs.AS (攻击速度), BType.RATIO
|
||||
FROST = 3, //冰冻 - 对应Attrs.ICE_RES (冰冻抗性), BType.RATIO
|
||||
BURN = 4, //易伤 - 对应Attrs.DEF/MDEF (防御/魔防), BType.RATIO, 默认次数是5, 技能配置的devC是额外次数
|
||||
AS = 5, //减速 - 对应Attrs.AS (攻击速度), BType.RATIO, 直接+技能cd
|
||||
HP_MAX = 6, //减hp - 对应Attrs.HP_MAX (最大生命值), BType.RATIO
|
||||
AP = 7, //减atk - 对应Attrs.AP (攻击力), BType.RATIO
|
||||
MGP = 8, //减魔法伤害 - 对应Attrs.MAP (魔法攻击力), BType.RATIO
|
||||
DEBACK = 9, //击退概率 - 对应Attrs.BACK (击退概率), BType.RATIO
|
||||
CRITICAL = 10, //-暴击率 - 对应Attrs.CRITICAL (暴击率), BType.RATIO
|
||||
CRIT_DAMAGE = 11, //-暴击伤害 - 对应Attrs.CRITICAL_DMG (暴击伤害), BType.RATIO
|
||||
DODGE = 12, //-闪避 - 对应Attrs.DODGE (闪避), BType.RATIO
|
||||
DBUFFUP=13, //edbuff效果提升
|
||||
BUFF_DOWN = 14,// buff效果减弱
|
||||
SPEED = 15, //移动速度下降 - 对应Attrs.MOVE_SPEED (移动速度), BType.RATIO
|
||||
DEBURN= 16, //被攻击带易伤
|
||||
}
|
||||
|
||||
|
||||
export enum Attrs {
|
||||
HP_MAX = 0, //生命值
|
||||
MP_MAX = 1, //魔法值
|
||||
SHIELD_MAX=2, //护盾
|
||||
AP = 3, //攻击力
|
||||
MAP=4, //魔法攻击力
|
||||
DEF = 5, //防御
|
||||
MDEF = 6, //魔法防御
|
||||
CRITICAL =7, //暴击率
|
||||
CRITICAL_DMG = 8, //暴击伤害
|
||||
DODGE = 9, //闪避
|
||||
HIT = 10, //命中
|
||||
WFUNY = 11, // 风怒
|
||||
AS = 12, //攻击速度,直接减技能cd
|
||||
REFLICT = 13, //反伤比率
|
||||
LIFESTEAL = 14, //吸血比率
|
||||
BACK = 15, //攻击带击退概率
|
||||
DEBACK = 16, //被攻击击退概率
|
||||
CON_RES = 17, //控制抗性
|
||||
ICE_RES = 18, //冰冻抗性
|
||||
FIRE_RES = 19, //火抗性
|
||||
WIND_RES = 20, //风抗性
|
||||
ICE_POWER = 21, //冰冻伤害效果提升
|
||||
FIRE_POWER = 22,//火伤害效果提升
|
||||
WIND_POWER = 23,//风伤害效果提升
|
||||
BUFF_UP = 24, //buff效果提升
|
||||
DBUFF_UP=25, //debuff效果提升
|
||||
DIS=26, //攻击距离
|
||||
SPEED = 27, //移动速度加成,默认都是百分比
|
||||
SHIELD_UP = 28, //护盾效果提升
|
||||
BURN = 29, //攻击带易伤
|
||||
DEBURN = 30, //被攻击易伤
|
||||
PUNCTURE=31, // 穿刺次数
|
||||
PUNCTURE_DMG=32, //穿刺伤害加成
|
||||
// 基础属性
|
||||
STRENGTH = 33, //力量
|
||||
INTELLIGENCE = 34, //智力
|
||||
AGILITY = 35, //敏捷
|
||||
SPIRIT = 36, //精神
|
||||
LUCK = 37, //幸运
|
||||
}
|
||||
|
||||
|
||||
export const getAttrs=()=>{
|
||||
// 遍历枚举的数字值(枚举会生成双向映射)
|
||||
let reAttrs = {};
|
||||
Object.keys(Attrs).forEach(key => {
|
||||
if (!isNaN(Number(key))) {
|
||||
reAttrs[Number(key)] = 0;
|
||||
}
|
||||
});
|
||||
return reAttrs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Buff类型枚举
|
||||
* VALUE: 数值型 - 直接加减数值
|
||||
* RATIO: 百分比型 - 按百分比计算
|
||||
*/
|
||||
export enum BType {
|
||||
VALUE=0, //数值型
|
||||
RATIO=1 //百分比型
|
||||
}
|
||||
|
||||
/**
|
||||
* 属性类型配置表
|
||||
* 用于区分每个属性是数值型还是百分比型
|
||||
* - VALUE: 数值型属性(如生命值、攻击力等绝对数值)
|
||||
* - RATIO: 百分比型属性(如暴击率、闪避率等百分比数值)
|
||||
*/
|
||||
export const AttrsType: Record<Attrs, BType> = {
|
||||
// ========== 数值型属性 ==========
|
||||
[Attrs.HP_MAX]: BType.VALUE, // 最大生命值 - 数值型
|
||||
[Attrs.MP_MAX]: BType.VALUE, // 最大魔法值 - 数值型
|
||||
[Attrs.SHIELD_MAX]: BType.VALUE, // 最大护盾值 - 数值型
|
||||
[Attrs.AP]: BType.VALUE, // 攻击力 - 数值型
|
||||
[Attrs.MAP]: BType.VALUE, // 魔法攻击力 - 数值型
|
||||
[Attrs.DEF]: BType.VALUE, // 防御 - 数值型
|
||||
[Attrs.MDEF]: BType.VALUE, // 魔法防御 - 数值型
|
||||
[Attrs.DIS]: BType.VALUE, // 攻击距离 - 数值型
|
||||
[Attrs.BURN]: BType.VALUE, // 易伤 - 数值型
|
||||
[Attrs.DEBURN]: BType.VALUE, // 被攻击易伤 - 数值型
|
||||
[Attrs.PUNCTURE]: BType.VALUE, // 穿刺次数 - 数值型
|
||||
[Attrs.STRENGTH]: BType.VALUE, // 力量 - 数值型
|
||||
[Attrs.INTELLIGENCE]: BType.VALUE, // 智力 - 数值型
|
||||
[Attrs.AGILITY]: BType.VALUE, // 敏捷 - 数值型
|
||||
[Attrs.SPIRIT]: BType.VALUE, // 精神 - 数值型
|
||||
[Attrs.LUCK]: BType.VALUE, // 幸运 - 数值型
|
||||
|
||||
// ========== 百分比型属性 ==========
|
||||
[Attrs.CRITICAL]: BType.RATIO, // 暴击率 - 百分比型
|
||||
[Attrs.CRITICAL_DMG]: BType.RATIO, // 暴击伤害 - 百分比型
|
||||
[Attrs.DODGE]: BType.RATIO, // 闪避 - 百分比型
|
||||
[Attrs.HIT]: BType.RATIO, // 命中 - 百分比型
|
||||
[Attrs.WFUNY]: BType.RATIO, // 风怒 - 百分比型
|
||||
[Attrs.AS]: BType.RATIO, // 攻击速度 - 百分比型
|
||||
[Attrs.REFLICT]: BType.RATIO, // 反伤比率 - 百分比型
|
||||
[Attrs.LIFESTEAL]: BType.RATIO, // 吸血比率 - 百分比型
|
||||
[Attrs.BACK]: BType.RATIO, // 击退概率 - 百分比型
|
||||
[Attrs.CON_RES]: BType.RATIO, // 控制抗性 - 百分比型
|
||||
[Attrs.ICE_RES]: BType.RATIO, // 冰冻抗性 - 百分比型
|
||||
[Attrs.FIRE_RES]: BType.RATIO, // 火抗性 - 百分比型
|
||||
[Attrs.WIND_RES]: BType.RATIO, // 风抗性 - 百分比型
|
||||
[Attrs.ICE_POWER]: BType.RATIO, // 冰冻伤害效果提升 - 百分比型
|
||||
[Attrs.FIRE_POWER]: BType.RATIO, // 火伤害效果提升 - 百分比型
|
||||
[Attrs.WIND_POWER]: BType.RATIO, // 风伤害效果提升 - 百分比型
|
||||
[Attrs.DEBACK]:BType.RATIO,
|
||||
[Attrs.BUFF_UP]: BType.RATIO, // buff效果提升 - 百分比型
|
||||
[Attrs.DBUFF_UP]: BType.RATIO, // debuff效果提升 - 百分比型
|
||||
[Attrs.SPEED]: BType.RATIO, // 移动速度加成 - 百分比型
|
||||
[Attrs.SHIELD_UP]: BType.RATIO, // 护盾效果提升 - 百分比型
|
||||
[Attrs.PUNCTURE_DMG]: BType.RATIO,
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断属性是否为百分比型
|
||||
* @param attrType 属性类型
|
||||
* @returns true: 百分比型, false: 数值型
|
||||
*/
|
||||
export const isRatioAttr = (attrType: Attrs): boolean => {
|
||||
return AttrsType[attrType] === BType.RATIO;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* DBuff 与 Attrs 的双向映射关系表
|
||||
* 格式:[DBuff, Attrs 或 -1(状态类)]
|
||||
*/
|
||||
const DEBUFF_ATTR_MAP: [DBuff, number][] = [
|
||||
[DBuff.STUN, -1], // 眩晕 - 状态类
|
||||
[DBuff.SLOW, Attrs.SPEED], // 减速 -> 速度
|
||||
[DBuff.FROST, -1], // 冰冻 - 状态类
|
||||
[DBuff.DEBURN, Attrs.DEBURN], // 被易伤 -> 被易伤
|
||||
[DBuff.BURN, Attrs.BURN], // 易伤 -> 易伤效果
|
||||
[DBuff.AS, Attrs.AS], // 减cd -> 攻击速度
|
||||
[DBuff.HP_MAX, Attrs.HP_MAX], // 减hp -> 最大生命值
|
||||
[DBuff.AP, Attrs.AP], // 减atk -> 攻击力
|
||||
[DBuff.MGP, Attrs.MAP], // 减魔法 -> 魔法攻击力
|
||||
[DBuff.DEBACK, Attrs.DEBACK], // 被击退 -> 被击退概率
|
||||
[DBuff.CRITICAL, Attrs.CRITICAL], // -暴击率 -> 暴击率
|
||||
[DBuff.CRIT_DAMAGE, Attrs.CRITICAL_DMG], // -暴击伤害 -> 暴击伤害
|
||||
[DBuff.DODGE, Attrs.DODGE], // -闪避 -> 闪避
|
||||
[DBuff.DBUFFUP, Attrs.DBUFF_UP], // debuff提升 -> debuff提升
|
||||
[DBuff.BUFF_DOWN, Attrs.BUFF_UP], // buff减弱 -> buff效果
|
||||
[DBuff.SPEED, Attrs.SPEED], // 移动速度下降 -> 移动速度
|
||||
];
|
||||
|
||||
/**
|
||||
* 双向转换:DBuff ⇄ Attrs
|
||||
* @param key DBuff 或 Attrs 枚举值
|
||||
* @param isDebuff true: key 是 DBuff, false: key 是 Attrs
|
||||
* @returns 对应的转换值,未找到则返回 -1
|
||||
*/
|
||||
export const TransformBuffs = (key: number, isDebuff: boolean): number => {
|
||||
if (isDebuff) {
|
||||
// DBuff → Attrs
|
||||
const found = DEBUFF_ATTR_MAP.find(([debuff]) => debuff === key);
|
||||
return found ? found[1] : -1;
|
||||
} else {
|
||||
// Attrs → DBuff(只返回第一个匹配)
|
||||
const found = DEBUFF_ATTR_MAP.find(([, attr]) => attr === key);
|
||||
return found ? found[0] : -1;
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
=== 技能配置系统使用说明 ===
|
||||
|
||||
@@ -262,7 +81,7 @@ export const TransformBuffs = (key: number, isDebuff: boolean): number => {
|
||||
- uuid: 技能唯一ID
|
||||
- name: 技能名称
|
||||
- sp_name: 特效名称
|
||||
- AtkedType: 攻击类型
|
||||
- AtkedName: 攻击类型
|
||||
- path: 图片资源路径
|
||||
|
||||
2. 目标和效果:
|
||||
@@ -284,19 +103,15 @@ export const TransformBuffs = (key: number, isDebuff: boolean): number => {
|
||||
- hitcd: 持续伤害的伤害间隔
|
||||
- speed: 移动速度
|
||||
- cost: 消耗值
|
||||
|
||||
|
||||
*/
|
||||
export enum DType {
|
||||
ATK= 0, // 物理
|
||||
MAGE=1, // 魔法
|
||||
}
|
||||
export const HeroSkillList = [6001,6001,6001,6001,6001,6001]
|
||||
|
||||
// Debuff配置接口
|
||||
export interface DbuffConf {
|
||||
debuff: DBuff; // debuff类型
|
||||
BType:BType //buff是数值型还是百分比型
|
||||
value: number; // 效果值
|
||||
time: number; // 持续时间
|
||||
chance: number; // 触发概率
|
||||
}
|
||||
|
||||
export interface BuffConf {
|
||||
buff:Attrs;
|
||||
BType:BType
|
||||
@@ -304,170 +119,30 @@ export interface BuffConf {
|
||||
time:number; // 持续时间
|
||||
chance:number; // 触发概率
|
||||
}
|
||||
export interface NeAttrsConf {
|
||||
neAttrs:NeAttrs;
|
||||
value:number;
|
||||
time:number;
|
||||
}
|
||||
// 技能配置接口 - 按照6001格式排列
|
||||
export interface SkillConfig {
|
||||
uuid:number,name:string,sp_name:string,AtkedType:AtkedType,path:string,TGroup:TGroup,SType:SType,act:string,DTType:DTType,
|
||||
uuid:number,name:string,sp_name:string,AtkedName:AtkedName,path:string,TGroup:TGroup,SType:SType,act:string,DTType:DTType,DType:DType,
|
||||
ap:number,cd:number,t_num:number,hit_num:number,hit:number,hitcd:number,speed:number,cost:number,with:number,
|
||||
buffs:BuffConf[],debuffs:DbuffConf[],info:string,hero?:number
|
||||
buffs:BuffConf[],neAttrs:NeAttrsConf[],info:string,hero?:number
|
||||
}
|
||||
|
||||
|
||||
export const SkillSet: Record<number, SkillConfig> = {
|
||||
// ========== 基础攻击 ========== 6001-6099
|
||||
6001: {
|
||||
uuid:6001,name:"挥击",sp_name:"atk_s1",AtkedType:AtkedType.atked,path:"3036",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,
|
||||
uuid:6001,name:"挥击",sp_name:"atk_s1",AtkedName:AtkedName.atked,path:"3036",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,DType:DType.ATK,
|
||||
ap:100,cd:1,t_num:1,hit_num:1,hit:1,hitcd:0.2,speed:720,cost:0,with:0,
|
||||
buffs:[],debuffs:[],info:"向最前方敌人扔出石斧,造成100%攻击的伤害"
|
||||
},
|
||||
6002: {
|
||||
uuid:6002,name:"挥击",sp_name:"atk2",AtkedType:AtkedType.atked,path:"3036",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:0.2,speed:720,cost:10,with:0,
|
||||
buffs:[],debuffs:[],info:"向最前方敌人扔出石斧,造成100%攻击的伤害"
|
||||
},
|
||||
6003: {
|
||||
uuid:6003,name:"射击",sp_name:"arrow",AtkedType:AtkedType.atked,path:"3037",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:3,speed:720,cost:10,with:0,
|
||||
buffs:[],debuffs:[],info:"向最前方敌人释放箭矢,造成100%攻击的伤害"
|
||||
},
|
||||
6004: {
|
||||
uuid:6004,name:"冰球",sp_name:"am_ice",AtkedType:AtkedType.atked,path:"3034",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:3,speed:720,cost:10,with:0,
|
||||
buffs:[],debuffs:[],info:"向最前方敌人释放寒冰弹,造成100%攻击的伤害"
|
||||
buffs:[],neAttrs:[],info:"向最前方敌人扔出石斧,造成100%攻击的伤害"
|
||||
},
|
||||
6005: {
|
||||
uuid:6005,name:"火球术",sp_name:"atk_fires",AtkedType:AtkedType.atked,path:"3039",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,
|
||||
uuid:6005,name:"火球术",sp_name:"atk_fires",AtkedName:AtkedName.atked,path:"3039",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,DType:DType.MAGE,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:2,hitcd:0.3,speed:720,cost:20,with:90,
|
||||
buffs:[],debuffs:[],info:"召唤大火球攻击前方所有敌人,造成300%攻击的伤害,有一定几率施加灼烧"
|
||||
},
|
||||
6006: {
|
||||
uuid:6006,name:"能量波",sp_name:"am_blue",AtkedType:AtkedType.atked,path:"3034",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:3,speed:720,cost:10,with:0,
|
||||
buffs:[],debuffs:[],info:"向最前方敌人释放寒冰弹,造成100%攻击的伤害"
|
||||
},
|
||||
6007: {
|
||||
uuid:6007,name:"圣光波",sp_name:"am_yellow",AtkedType:AtkedType.atked,path:"3039",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:2,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"召唤大火球攻击前方所有敌人,造成300%攻击的伤害,有一定几率施加灼烧"
|
||||
},
|
||||
// ========== 大招 ========== 6100-6199
|
||||
6101: {
|
||||
uuid:6101,name:"护盾",sp_name:"shield",AtkedType:AtkedType.atked,path:"3045",TGroup:TGroup.Team,SType:SType.shield,act:"max",DTType:DTType.single,
|
||||
ap:0,cd:5,t_num:1,hit_num:1,hit:1,hitcd:3,speed:720,cost:10,with:0,
|
||||
buffs:[],debuffs:[],info:"为最前排队友召唤一个可以抵御2次攻击的圣盾(最高叠加到6次)"
|
||||
},
|
||||
6102: {
|
||||
uuid:6102,name:"寒冰箭",sp_name:"arrow_blue",AtkedType:AtkedType.atked,path:"3060",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:1,t_num:1,hit_num:1,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,20%几率冰冻敌人"
|
||||
},
|
||||
6103: {
|
||||
uuid:6103,name:"治疗",sp_name:"heath_small",AtkedType:AtkedType.atked,path:"3056",TGroup:TGroup.Team,SType:SType.heal,act:"max",DTType:DTType.single,
|
||||
ap:0,cd:5,t_num:1,hit_num:1,hit:0,hitcd:0,speed:0,cost:10,with:0,
|
||||
buffs:[],debuffs:[],info:"回复最前排队友10%最大生命值的生命"
|
||||
},
|
||||
|
||||
6104: {
|
||||
uuid:6104,name:"烈焰斩击",sp_name:"max_fireatk",AtkedType:AtkedType.atked,path:"3036",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:0.2,speed:720,cost:10,with:0,
|
||||
buffs:[],debuffs:[],info:"向最前方敌人扔出石斧,造成100%攻击的伤害"
|
||||
},
|
||||
|
||||
6105: {
|
||||
uuid:6105,name:"烈火护盾",sp_name:"max_firedun",AtkedType:AtkedType.atked,path:"3061",TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:1,speed:80,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"召唤烈焰保护英雄,持续10秒,每秒对范围内的敌人造成100%伤害"
|
||||
},
|
||||
|
||||
6106: {
|
||||
uuid:6106,name:"龙卷风",sp_name:"bwind",AtkedType:AtkedType.atked,path:"3065",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:1,speed:360,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,50%几率击退敌人"
|
||||
},
|
||||
|
||||
|
||||
|
||||
6107: {
|
||||
uuid:6107,name:"烈焰射击",sp_name:"arrow_yellow",AtkedType:AtkedType.atked,path:"3014",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,20%几率眩晕敌人"
|
||||
buffs:[],neAttrs:[],info:"召唤大火球攻击前方所有敌人,造成300%攻击的伤害,有一定几率施加灼烧"
|
||||
},
|
||||
|
||||
6108: {
|
||||
uuid:6108,name:"火墙",sp_name:"max_fwall",AtkedType:AtkedType.atked,path:"3040",TGroup:TGroup.Ally,SType:SType.damage,act:"max",DTType:DTType.range,
|
||||
ap:50,cd:5,t_num:1,hit_num:1,hit:1,hitcd:1,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"在最前方敌人位置,召唤一堵火墙,持续10秒,每秒造成50%攻击伤害"
|
||||
},
|
||||
|
||||
6109: {
|
||||
uuid:6109,name:"冰刺",sp_name:"icez",AtkedType:AtkedType.atked,path:"3049",TGroup:TGroup.Ally,SType:SType.damage,act:"max",DTType:DTType.range,
|
||||
ap:300,cd:5,t_num:1,hit_num:1,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"在最前方敌人位置,召唤冰刺攻击敌人,造成200%攻击的伤害,20%几率冰冻敌人"
|
||||
},
|
||||
|
||||
6110: {
|
||||
uuid:6110,name:"潮汐",sp_name:"watert",AtkedType:AtkedType.atked,path:"3070",TGroup:TGroup.Ally,SType:SType.damage,act:"max",DTType:DTType.range,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"在最前方敌人位置,召唤水柱攻击敌人,每秒造成100%攻击的伤害,50%几率击退敌人"
|
||||
},
|
||||
|
||||
6111: {
|
||||
uuid:6111,name:"陨石术",sp_name:"max_yunshi",AtkedType:AtkedType.atked,path:"3123",TGroup:TGroup.Ally,SType:SType.damage,act:"max",DTType:DTType.range,
|
||||
ap:500,cd:5,t_num:1,hit_num:0,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"在最前方敌人位置,召唤陨石攻击敌人,造成500%攻击的伤害"
|
||||
},
|
||||
|
||||
6112: {
|
||||
uuid:6112,name:"冰墙",sp_name:"icet",AtkedType:AtkedType.atked,path:"3050",TGroup:TGroup.Enemy,SType:SType.damage,act:"max",DTType:DTType.range,
|
||||
ap:400,cd:5,t_num:1,hit_num:1,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"在最前方敌人位置,召唤冰墙攻击敌人,造成200%攻击的伤害,50%几率击退敌人"
|
||||
},
|
||||
6113: {
|
||||
uuid:6113,name:"剑雨",sp_name:"max_jianyu",AtkedType:AtkedType.atked,path:"3123",TGroup:TGroup.Ally,SType:SType.damage,act:"max",DTType:DTType.range,
|
||||
ap:500,cd:5,t_num:1,hit_num:0,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"在最前方敌人位置,召唤陨石攻击敌人,造成500%攻击的伤害"
|
||||
},
|
||||
|
||||
//召唤取消
|
||||
// 6031:{uuid:6031,name:"召唤骷髅",sp_name:"zhaohuan",AtkedType:AtkedType.atked,path:"3018",
|
||||
// TGroup:TGroup.Self,SType:SType.zhaohuan,act:"max",DTType:DTType.single,fname:"max_blue",flash:true,with:90,
|
||||
// debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:70,cd:60,t_num:1,hit_num:1,hit:1,hitcd:1,speed:720,hero:5221,cost:10,info:"召唤一个骷髅战士为我方而战"},
|
||||
// ========== 超必杀 ========== 6200-6299
|
||||
6201: {
|
||||
uuid:6201,name:"满天火雨",sp_name:"atk_fires",AtkedType:AtkedType.atked,path:"3101",TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:5,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"在最前方敌人位置,召唤陨石攻击敌人,造成500%攻击的伤害"
|
||||
},
|
||||
|
||||
6202: {
|
||||
uuid:6202,name:"龙卷风爆",sp_name:"bwind",AtkedType:AtkedType.atked,path:"3069",TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:1,speed:360,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,50%几率击退敌人"
|
||||
},
|
||||
6203: {
|
||||
uuid:6203,name:"大潮汐",sp_name:"watert",AtkedType:AtkedType.atked,path:"3070",TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"召唤水柱攻击敌人,每秒造成100%攻击的伤害,50%几率击退敌人"
|
||||
},
|
||||
// ==========增强型技能,被动技能,========== 6300-6399
|
||||
6301: {
|
||||
uuid:6301,name:"攻击生命强化Ⅰ",sp_name:"max_ap",AtkedType:AtkedType.atked,path:"3065",TGroup:TGroup.Ally,SType:SType.buff,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"增加20%攻击力和生命值"
|
||||
},
|
||||
6302: {
|
||||
uuid:6302,name:"攻击生命强化Ⅱ",sp_name:"max_ap",AtkedType:AtkedType.atked,path:"3093",TGroup:TGroup.Ally,SType:SType.buff,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"增加40%攻击力和生命值"
|
||||
},
|
||||
6303: {
|
||||
uuid:6303,name:"攻击生命强化Ⅲ",sp_name:"max_ap",AtkedType:AtkedType.atked,path:"3065",TGroup:TGroup.Ally,SType:SType.buff,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"增加60%攻击力和生命值"
|
||||
},
|
||||
6304: {
|
||||
uuid:6304,name:"攻击生命强化Ⅳ",sp_name:"max_ap",AtkedType:AtkedType.atked,path:"3065",TGroup:TGroup.Ally,SType:SType.buff,act:"atk",DTType:DTType.single,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:1,hitcd:0.3,speed:720,cost:10,with:90,
|
||||
buffs:[],debuffs:[],info:"增加80%攻击力和生命值"
|
||||
},
|
||||
|
||||
};
|
||||
@@ -15,136 +15,7 @@ export enum HType {
|
||||
assassin = 4,
|
||||
}
|
||||
|
||||
// 英雄基础属性配置表
|
||||
// 定义每种英雄类型的力量、智力、敏捷、精神、幸运基础值
|
||||
export const HeroBaseAttributes: Record<HType, { strength: number; intelligence: number; agility: number; spirit: number; luck: number }> = {
|
||||
[HType.warrior]: { strength: 10, intelligence: 3, agility: 5, spirit: 4, luck: 3 },
|
||||
[HType.remote]: { strength: 5, intelligence: 6, agility: 10, spirit: 4, luck: 5 },
|
||||
[HType.mage]: { strength: 3, intelligence: 10, agility: 4, spirit: 8, luck: 5 },
|
||||
[HType.support]: { strength: 4, intelligence: 8, agility: 5, spirit: 10, luck: 3 },
|
||||
[HType.assassin]: { strength: 7, intelligence: 5, agility: 10, spirit: 3, luck: 5 },
|
||||
}
|
||||
|
||||
// 基础属性对战斗属性的影响配置
|
||||
// 定义基础属性如何影响其他战斗属性的系数
|
||||
export const AttributeInfluence: Record<string, { attribute: Attrs; ratio: number }> = {
|
||||
// 力量影响
|
||||
"strength_to_ap": { attribute: Attrs.AP, ratio: 2 }, // 力量影响攻击力 (每点力量增加2点攻击力)
|
||||
"strength_to_hp": { attribute: Attrs.HP_MAX, ratio: 10 }, // 力量影响生命值 (每点力量增加10点生命值)
|
||||
|
||||
// 智力影响
|
||||
"intelligence_to_map": { attribute: Attrs.MAP, ratio: 3 }, // 智力影响魔法攻击力 (每点智力增加3点魔法攻击力)
|
||||
"intelligence_to_mp": { attribute: Attrs.MP_MAX, ratio: 15 }, // 智力影响魔法值 (每点智力增加15点魔法值)
|
||||
"intelligence_to_mdef": { attribute: Attrs.MDEF, ratio: 1 }, // 智力影响魔法防御 (每点智力增加1点魔法防御)
|
||||
|
||||
// 敏捷影响
|
||||
"agility_to_as": { attribute: Attrs.AS, ratio: 0.5 }, // 敏捷影响攻击速度 (每点敏捷增加0.5%攻击速度)
|
||||
"agility_to_dodge": { attribute: Attrs.DODGE, ratio: 0.4 }, // 敏捷影响闪避 (每点敏捷增加0.4%闪避)
|
||||
"agility_to_hit": { attribute: Attrs.HIT, ratio: 0.3 }, // 敏捷影响命中 (每点敏捷增加0.3%命中)
|
||||
|
||||
// 精神影响
|
||||
"spirit_to_mdef": { attribute: Attrs.MDEF, ratio: 2 }, // 精神影响魔法防御 (每点精神增加2点魔法防御)
|
||||
"spirit_to_hp": { attribute: Attrs.HP_MAX, ratio: 5 }, // 精神影响生命值 (每点精神增加5点生命值)
|
||||
"spirit_to_mp": { attribute: Attrs.MP_MAX, ratio: 10 }, // 精神影响魔法值 (每点精神增加10点魔法值)
|
||||
|
||||
// 幸运影响
|
||||
"luck_to_critical": { attribute: Attrs.CRITICAL, ratio: 0.6 }, // 幸运影响暴击率 (每点幸运增加0.6%暴击率)
|
||||
"luck_to_lifesteal": { attribute: Attrs.LIFESTEAL, ratio: 0.2 }, // 幸运影响吸血比率 (每点幸运增加0.2%吸血比率)
|
||||
};
|
||||
|
||||
/**
|
||||
* 根据英雄类型和等级计算基础属性值
|
||||
* @param heroType 英雄类型
|
||||
* @param level 英雄等级
|
||||
* @returns 包含所有基础属性值的对象
|
||||
*/
|
||||
export function calculateBaseAttributes(heroType: HType, level: number): { strength: number; intelligence: number; agility: number; spirit: number; luck: number } {
|
||||
const baseAttrs = HeroBaseAttributes[heroType];
|
||||
// 简单的等级成长公式,每级增加1点基础属性
|
||||
const growth = level - 1;
|
||||
|
||||
return {
|
||||
strength: baseAttrs.strength + growth,
|
||||
intelligence: baseAttrs.intelligence + growth,
|
||||
agility: baseAttrs.agility + growth,
|
||||
spirit: baseAttrs.spirit + growth,
|
||||
luck: baseAttrs.luck + growth
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据基础属性计算对战斗属性的影响
|
||||
* @param baseAttributes 基础属性值
|
||||
* @returns 属性影响映射表
|
||||
*/
|
||||
export function calculateAttributeInfluences(baseAttributes: { strength: number; intelligence: number; agility: number; spirit: number; luck: number }): Record<Attrs, number> {
|
||||
// 初始化所有属性影响值为0
|
||||
const influences: Record<Attrs, number> = {
|
||||
[Attrs.HP_MAX]: 0,
|
||||
[Attrs.MP_MAX]: 0,
|
||||
[Attrs.SHIELD_MAX]: 0,
|
||||
[Attrs.AP]: 0,
|
||||
[Attrs.MAP]: 0,
|
||||
[Attrs.DEF]: 0,
|
||||
[Attrs.MDEF]: 0,
|
||||
[Attrs.CRITICAL]: 0,
|
||||
[Attrs.CRITICAL_DMG]: 0,
|
||||
[Attrs.DODGE]: 0,
|
||||
[Attrs.HIT]: 0,
|
||||
[Attrs.WFUNY]: 0,
|
||||
[Attrs.AS]: 0,
|
||||
[Attrs.REFLICT]: 0,
|
||||
[Attrs.LIFESTEAL]: 0,
|
||||
[Attrs.BACK]: 0,
|
||||
[Attrs.DEBACK]: 0,
|
||||
[Attrs.CON_RES]: 0,
|
||||
[Attrs.ICE_RES]: 0,
|
||||
[Attrs.FIRE_RES]: 0,
|
||||
[Attrs.WIND_RES]: 0,
|
||||
[Attrs.ICE_POWER]: 0,
|
||||
[Attrs.FIRE_POWER]: 0,
|
||||
[Attrs.WIND_POWER]: 0,
|
||||
[Attrs.BUFF_UP]: 0,
|
||||
[Attrs.DBUFF_UP]: 0,
|
||||
[Attrs.DIS]: 0,
|
||||
[Attrs.SPEED]: 0,
|
||||
[Attrs.SHIELD_UP]: 0,
|
||||
[Attrs.BURN]: 0,
|
||||
[Attrs.DEBURN]: 0,
|
||||
[Attrs.PUNCTURE]: 0,
|
||||
[Attrs.PUNCTURE_DMG]: 0,
|
||||
[Attrs.STRENGTH]: 0,
|
||||
[Attrs.INTELLIGENCE]: 0,
|
||||
[Attrs.AGILITY]: 0,
|
||||
[Attrs.SPIRIT]: 0,
|
||||
[Attrs.LUCK]: 0
|
||||
};
|
||||
|
||||
// 计算力量的影响
|
||||
influences[Attrs.AP] += baseAttributes.strength * (AttributeInfluence["strength_to_ap"]?.ratio || 0);
|
||||
influences[Attrs.HP_MAX] += baseAttributes.strength * (AttributeInfluence["strength_to_hp"]?.ratio || 0);
|
||||
|
||||
// 计算智力的影响
|
||||
influences[Attrs.MAP] += baseAttributes.intelligence * (AttributeInfluence["intelligence_to_map"]?.ratio || 0);
|
||||
influences[Attrs.MP_MAX] += baseAttributes.intelligence * (AttributeInfluence["intelligence_to_mp"]?.ratio || 0);
|
||||
influences[Attrs.MDEF] += baseAttributes.intelligence * (AttributeInfluence["intelligence_to_mdef"]?.ratio || 0);
|
||||
|
||||
// 计算敏捷的影响
|
||||
influences[Attrs.AS] += baseAttributes.agility * (AttributeInfluence["agility_to_as"]?.ratio || 0);
|
||||
influences[Attrs.DODGE] += baseAttributes.agility * (AttributeInfluence["agility_to_dodge"]?.ratio || 0);
|
||||
influences[Attrs.HIT] += baseAttributes.agility * (AttributeInfluence["agility_to_hit"]?.ratio || 0);
|
||||
|
||||
// 计算精神的影响
|
||||
influences[Attrs.MDEF] += baseAttributes.spirit * (AttributeInfluence["spirit_to_mdef"]?.ratio || 0);
|
||||
influences[Attrs.HP_MAX] += baseAttributes.spirit * (AttributeInfluence["spirit_to_hp"]?.ratio || 0);
|
||||
influences[Attrs.MP_MAX] += baseAttributes.spirit * (AttributeInfluence["spirit_to_mp"]?.ratio || 0);
|
||||
|
||||
// 计算幸运的影响
|
||||
influences[Attrs.CRITICAL] += baseAttributes.luck * (AttributeInfluence["luck_to_critical"]?.ratio || 0);
|
||||
influences[Attrs.LIFESTEAL] += baseAttributes.luck * (AttributeInfluence["luck_to_lifesteal"]?.ratio || 0);
|
||||
|
||||
return influences;
|
||||
}
|
||||
|
||||
export const HTypeName ={
|
||||
0:"战士",
|
||||
@@ -212,48 +83,56 @@ export interface heroInfo{
|
||||
}
|
||||
|
||||
export const HeroInfo: Record<number, heroInfo> = {
|
||||
//主将
|
||||
// ========== 英雄角色 ==========
|
||||
|
||||
// 刘邦 - 领导型战士(善于用人,知人善任)
|
||||
5001:{uuid:5001,name:"刘邦",path:"hk1", fac:FacSet.HERO, kind:1,
|
||||
type:HType.warrior,lv:1,hp:100,mp:100,map:100,def:5,ap:15,dis:100,speed:150,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:""},
|
||||
type:HType.warrior,lv:1,hp:120,mp:80,map:10,def:8,ap:15,dis:100,speed:120,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:"汉朝开国皇帝,善于用人,领导型战士"},
|
||||
|
||||
// 荆轲 - 刺客(敏捷型,高速度和暴击率)
|
||||
5002:{uuid:5002,name:"荆轲",path:"hc1", fac:FacSet.HERO, kind:1,
|
||||
type:HType.warrior,lv:1,hp:100,mp:100,map:100,def:5,ap:15,dis:100,speed:150,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:""},
|
||||
type:HType.assassin,lv:1,hp:80,mp:60,map:5,def:3,ap:20,dis:120,speed:180,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:"战国刺客,高速度高暴击的敏捷型刺客"},
|
||||
|
||||
// 绿箭 - 远程射手(机动型,高移动速度和远程攻击)
|
||||
5005:{uuid:5005,name:"绿箭",path:"ha1", fac:FacSet.HERO, kind:2,
|
||||
type:HType.remote,lv:1,hp:100,mp:100,map:100,def:5,ap:15,dis:400,speed:100,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:""},
|
||||
type:HType.remote,lv:1,hp:90,mp:70,map:8,def:4,ap:18,dis:450,speed:140,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:"远程射手,机动型高远程输出"},
|
||||
|
||||
// 牧师 - 辅助治疗(辅助型,擅长治疗和支援)
|
||||
5007:{uuid:5007,name:"牧师",path:"hh1", fac:FacSet.HERO, kind:2,
|
||||
type:HType.mage,lv:1,hp:100,mp:100,map:100,def:5,ap:15,dis:400,speed:100,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:""},
|
||||
type:HType.support,lv:1,hp:100,mp:120,map:12,def:5,ap:8,dis:350,speed:100,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:"辅助治疗者,擅长治疗和支援队友"},
|
||||
|
||||
// 火女 - 元素法师(元素型,操控火焰元素)
|
||||
5008:{uuid:5008,name:"火女",path:"hm1", fac:FacSet.HERO, kind:2,
|
||||
type:HType.mage,lv:1,hp:100,mp:100,map:100,def:5,ap:15,dis:400,speed:100,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:""},
|
||||
type:HType.mage,lv:1,hp:85,mp:150,map:25,def:3,ap:6,dis:400,speed:90,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:"元素法师,操控火焰元素进行高魔法输出"},
|
||||
|
||||
// 魔法精灵 - 奥术法师(博学型,掌握多种魔法)
|
||||
5009:{uuid:5009,name:"魔法精灵",path:"hm2", fac:FacSet.HERO, kind:2,
|
||||
type:HType.mage,lv:1,hp:100,mp:100,map:100,def:5,ap:15,dis:400,speed:100,skills:[6006,6006,6301,6302,6303],
|
||||
buff:[],debuff:[],info:""},
|
||||
type:HType.mage,lv:1,hp:80,mp:160,map:28,def:2,ap:5,dis:420,speed:95,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:"奥术法师,博学多才掌握多种魔法"},
|
||||
|
||||
// 德鲁伊 - 自然辅助(辅助型,自然魔法和召唤)
|
||||
5010:{uuid:5010,name:"德鲁伊",path:"hz1", fac:FacSet.HERO, kind:2,
|
||||
type:HType.mage,lv:1,hp:100,mp:100,map:100,def:5,ap:15,dis:400,speed:100,skills:[6007,6007,6301,6302,6303],
|
||||
buff:[],debuff:[],info:""},
|
||||
type:HType.support,lv:1,hp:95,mp:130,map:18,def:6,ap:10,dis:380,speed:105,skills:[6001,6005],
|
||||
buff:[],debuff:[],info:"自然德鲁伊,精通自然魔法和生命治愈"},
|
||||
|
||||
|
||||
|
||||
//怪物
|
||||
5201:{uuid:5201,name:"兽人战士",path:"mo1", fac:FacSet.MON, kind:1,
|
||||
type:HType.warrior,lv:1,hp:25,mp:100,map:100,def:5,ap:5,dis:90,speed:100,skills:[6005],
|
||||
type:HType.warrior,lv:1,hp:25,mp:100,map:10,def:5,ap:5,dis:90,speed:100,skills:[6005],
|
||||
buff:[],debuff:[],info:"普通怪物-战士型"},
|
||||
|
||||
5202:{uuid:5202,name:"兽人刺客",path:"mo1", fac:FacSet.MON, kind:1,
|
||||
type:HType.remote,lv:1,hp:20,mp:100,map:100,def:5,ap:5,dis:350,speed:100,skills:[6005],
|
||||
type:HType.remote,lv:1,hp:20,mp:100,map:10,def:5,ap:5,dis:350,speed:100,skills:[6005],
|
||||
buff:[],debuff:[],info:"普通怪物-战士型"},
|
||||
|
||||
5203:{uuid:5203,name:"兽人护卫",path:"mo1", fac:FacSet.MON, kind:1,
|
||||
type:HType.warrior,lv:1,hp:25,mp:100,map:100,def:5,ap:5,dis:90,speed:100,skills:[6005],
|
||||
type:HType.warrior,lv:1,hp:25,mp:100,map:10,def:5,ap:5,dis:90,speed:100,skills:[6005],
|
||||
buff:[],debuff:[],info:"普通怪物-战士型"},
|
||||
|
||||
};
|
||||
@@ -4,7 +4,7 @@ import { ecs } from "../../../../../../extensions/oops-plugin-framework/assets/l
|
||||
import { smc } from "../../SingletonModuleComp";
|
||||
import { FacSet } from "../../config/BoxSet";
|
||||
import { HType } from "../../config/heroSet";
|
||||
import { Attrs, DBuff } from "../../config/SkillSet";
|
||||
import { Attrs } from "../../config/HeroAttrs";
|
||||
|
||||
@ecs.register('BattleMoveSystem')
|
||||
export class BattleMoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate {
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
import { HType, calculateBaseAttributes, calculateAttributeInfluences } from "../common/config/heroSet";
|
||||
import { Attrs } from "../common/config/SkillSet";
|
||||
|
||||
/**
|
||||
* 英雄属性计算器使用示例
|
||||
*/
|
||||
export class AttributeExample {
|
||||
/**
|
||||
* 示例:计算指定类型和等级的英雄属性
|
||||
* @param heroType 英雄类型
|
||||
* @param level 英雄等级
|
||||
*/
|
||||
static calculateHeroAttributes(heroType: HType, level: number) {
|
||||
// 1. 计算基础属性值
|
||||
const baseAttributes = calculateBaseAttributes(heroType, level);
|
||||
console.log("基础属性:", baseAttributes);
|
||||
|
||||
// 2. 计算基础属性对战斗属性的影响
|
||||
const attributeInfluences = calculateAttributeInfluences(baseAttributes);
|
||||
console.log("属性影响:", attributeInfluences);
|
||||
|
||||
// 3. 输出特定属性的影响值
|
||||
console.log(`攻击力加成: ${attributeInfluences[Attrs.AP]}`);
|
||||
console.log(`生命值加成: ${attributeInfluences[Attrs.HP_MAX]}`);
|
||||
console.log(`魔法攻击力加成: ${attributeInfluences[Attrs.MAP]}`);
|
||||
|
||||
return {
|
||||
baseAttributes,
|
||||
attributeInfluences
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例:为英雄应用属性影响
|
||||
* @param hero 英雄对象
|
||||
* @param level 英雄等级
|
||||
*/
|
||||
static applyAttributesToHero(hero: any, level: number) {
|
||||
// 计算基础属性
|
||||
const baseAttributes = calculateBaseAttributes(hero.type, level);
|
||||
|
||||
// 计算属性影响
|
||||
const attributeInfluences = calculateAttributeInfluences(baseAttributes);
|
||||
|
||||
// 应用属性影响到英雄
|
||||
hero.ap += attributeInfluences[Attrs.AP];
|
||||
hero.hp += attributeInfluences[Attrs.HP_MAX];
|
||||
hero.map += attributeInfluences[Attrs.MAP];
|
||||
hero.mp += attributeInfluences[Attrs.MP_MAX];
|
||||
hero.mdef += attributeInfluences[Attrs.MDEF];
|
||||
hero.as += attributeInfluences[Attrs.AS];
|
||||
hero.dodge += attributeInfluences[Attrs.DODGE];
|
||||
hero.hit += attributeInfluences[Attrs.HIT];
|
||||
hero.critical += attributeInfluences[Attrs.CRITICAL];
|
||||
hero.lifesteal += attributeInfluences[Attrs.LIFESTEAL];
|
||||
|
||||
return hero;
|
||||
}
|
||||
}
|
||||
|
||||
// 使用示例
|
||||
// const warriorAttrs = AttributeExample.calculateHeroAttributes(HType.warrior, 10);
|
||||
// const mageAttrs = AttributeExample.calculateHeroAttributes(HType.mage, 10);
|
||||
@@ -8,8 +8,9 @@ import { BoxSet, FacSet } from "../common/config/BoxSet";
|
||||
import { HeroInfo, HeroPos, HType } from "../common/config/heroSet";
|
||||
import { BattleMoveComp } from "../common/ecs/position/BattleMoveComp";
|
||||
import { GameEvent } from "../common/config/GameEvent";
|
||||
import { Attrs, getAttrs, SkillSet } from "../common/config/SkillSet";
|
||||
import { SkillSet } from "../common/config/SkillSet";
|
||||
import { time } from "console";
|
||||
import { getNeAttrs, getAttrs ,Attrs} from "../common/config/HeroAttrs";
|
||||
/** 角色实体 */
|
||||
@ecs.register(`Hero`)
|
||||
|
||||
@@ -84,6 +85,7 @@ export class Hero extends ecs.Entity {
|
||||
hv.base_dis=hero.dis
|
||||
hv.base_speed=hero.speed
|
||||
hv.Attrs=getAttrs()
|
||||
hv.NeAttrs=getNeAttrs()
|
||||
hv.hp=hv.Attrs[Attrs.HP_MAX]=hv.base_hp
|
||||
hv.mp=hv.Attrs[Attrs.MP_MAX]=hv.base_mp
|
||||
hv.Attrs[Attrs.DEF]=hv.base_def
|
||||
|
||||
@@ -5,31 +5,70 @@ import { HeroSpine } from "./HeroSpine";
|
||||
import { BoxSet, FacSet } from "../common/config/BoxSet";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
import { Timer } from "../../../../extensions/oops-plugin-framework/assets/core/common/timer/Timer";
|
||||
import { Attrs, DBuff, SkillSet, BType, BuffConf, DbuffConf, TransformBuffs, AttrsType } from "../common/config/SkillSet";
|
||||
import { BuffComp } from "./BuffComp";
|
||||
import { SkillSet,BuffConf,} from "../common/config/SkillSet";
|
||||
import { BuffComp } from "./BuffComp";
|
||||
import { oops } from "db://oops-framework/core/Oops";
|
||||
import { GameEvent } from "../common/config/GameEvent";
|
||||
import { FightSet, TooltipTypes } from "../common/config/Mission";
|
||||
import { RandomManager } from "db://oops-framework/core/common/random/RandomManager";
|
||||
import { AttrSet, HeroInfo, HeroUpSet } from "../common/config/heroSet";
|
||||
import { Attrs, AttrsType, BType, NeAttrs } from "../common/config/HeroAttrs";
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
/**
|
||||
* ==================== BUFF 系统使用说明 ====================
|
||||
*
|
||||
* 1. 系统架构
|
||||
* - BUFF_V/BUFFS_V: 数值型 buff(持临时
|
||||
* - BUFF_R/BUFFS_R: 百分比型 buff(持临时
|
||||
* - DBUFF_V/DBUFFS_V: 数值型 debuff(持临时
|
||||
* - DBUFF_R/DBUFFS_R: 百分比型 debuff(持临时
|
||||
* 1. 系统架构 - 支持多次叠加(简化设计)
|
||||
* - BUFFS: 持久型buff数组(持久存在,直到主动移除)
|
||||
* - BUFFS_TEMP: 临时型buff数组(持续指定时间,时间到自动移除)
|
||||
* - 每个buff实例内包含BType字段,区分数值型(VALUE)和百分比型(RATIO)
|
||||
*
|
||||
* 2. 智能覆盖规则
|
||||
* - 值更小:不添加(弱效果不覆盖强效果)
|
||||
* - 值相同且临时:叠加时
|
||||
* - 值更大:更新为新值(临时则更新值和时间
|
||||
* 2. 叠加规则 - 核心特性
|
||||
* - 同一属性允许多个buff实例同时存在(数值型和百分比型混合)
|
||||
* - 每个buff实例保持独立的数据(value、BType、remainTime)
|
||||
* - 所有buff实例在属性计算时都被纳入求和计算
|
||||
* - 示例:若添加两个+10 AP的buff,最终会累加 +20 AP
|
||||
*
|
||||
* 3. 数据结构 - 统一数组设计
|
||||
* - BUFFS: Record<attrIndex: number, Array<{value, BType}>>
|
||||
* - BUFFS_TEMP: Record<attrIndex: number, Array<{value, BType, remainTime}>>
|
||||
* - 每个属性对应一个buff数组,可混合存储数值型和百分比型buff
|
||||
*
|
||||
* 4. 属性计算公式 - 按BType区分
|
||||
* - 数值型: (基础值 + 所有数值型buff之和) × (1 + 所有百分比buff之和/100)
|
||||
* - 百分比: 基础值 + 所有数值型buff之和 + 所有百分比buff之和
|
||||
*
|
||||
* 5. API 使用示例
|
||||
* // 添加buff(自动根据time判断持久或临时)
|
||||
* const buffConf: BuffConf = {
|
||||
* buff: Attrs.AP,
|
||||
* BType: BType.VALUE,
|
||||
* value: 10,
|
||||
* time: 5, // 0表示持久,>0表示临时
|
||||
* chance: 100
|
||||
* };
|
||||
* hero.addBuff(buffConf);
|
||||
*
|
||||
* // 移除特定buff
|
||||
* hero.removeBuff(Attrs.AP, 10, true); // 移除临时的+10 AP
|
||||
*
|
||||
* // 清空属性所有buff
|
||||
* hero.clearBuffs(Attrs.AP);
|
||||
*
|
||||
* // 查询激活的buff数量
|
||||
* const count = hero.getActiveBuffCount(Attrs.AP);
|
||||
*
|
||||
* 6. 临时buff自动更新
|
||||
* - 每帧update中自动调用updateTemporaryBuffsDebuffs(dt)
|
||||
* - 递减所有临时buff的remainTime
|
||||
* - 当remainTime <= 0时自动移除buff并重新计算属性
|
||||
*/
|
||||
/** 角色显示组件 */
|
||||
export interface BuffInfo {
|
||||
attr: Attrs;
|
||||
value: number;
|
||||
remainTime?: number;
|
||||
}
|
||||
@ccclass('HeroViewComp') // 定义Cocos Creator 组件
|
||||
@ecs.register('HeroView', false) // 定义ECS 组件
|
||||
export class HeroViewComp extends CCComp {
|
||||
@@ -66,24 +105,21 @@ export class HeroViewComp extends CCComp {
|
||||
base_speed: number = 100; /** 角色移动速度 */
|
||||
base_dis: number = 100;
|
||||
Attrs:any=[]
|
||||
// Buff/Debuff 字典结构,通过属性索引直接访
|
||||
// 结构: { [attrIndex: number]: { value: number, remainTime?: number } }
|
||||
DBUFF_V: Record<number, {value: number}> = {} // 持久型数debuff
|
||||
DBUFF_R: Record<number, {value: number}> = {} // 持久型百分比 debuff
|
||||
BUFF_V: Record<number, {value: number}> = {} // 持久型数buff
|
||||
BUFF_R: Record<number, {value: number}> = {} // 持久型百分比 buff
|
||||
|
||||
DBUFFS_V: Record<number, {value: number, remainTime: number}> = {} // 临时型数debuff
|
||||
DBUFFS_R: Record<number, {value: number, remainTime: number}> = {} // 临时型百分比 debuff
|
||||
BUFFS_V: Record<number, {value: number, remainTime: number}> = {} // 临时型数buff
|
||||
BUFFS_R: Record<number, {value: number, remainTime: number}> = {} // 临时型百分比 buff
|
||||
NeAttrs:any=[]
|
||||
// Buff debuff 统一管理
|
||||
// 每个buff实例内包含BType,用于区分数值型(VALUE)和百分比型(RATIO)
|
||||
// [attrIndex: number]: Array<BuffInstance> - 允许多个buff实例独立存在
|
||||
|
||||
/** 持久型buff数组 - 不会自动过期 */
|
||||
BUFFS: Record<number, Array<{value: number, BType: BType}>> = {}
|
||||
|
||||
/** 临时型buff数组 - 按时间自动过期 */
|
||||
BUFFS_TEMP: Record<number, Array<{value: number, BType: BType, remainTime: number}>> = {}
|
||||
|
||||
atk_count: number = 0;
|
||||
atked_count: number = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
private damageQueue: Array<{
|
||||
damage: number,
|
||||
isCrit: boolean,
|
||||
@@ -126,14 +162,10 @@ export class HeroViewComp extends CCComp {
|
||||
*/
|
||||
initAttrs() {
|
||||
// 清空现有 buff/debuff
|
||||
this.BUFF_V = {};
|
||||
this.BUFFS_V = {};
|
||||
this.BUFF_R = {};
|
||||
this.BUFFS_R = {};
|
||||
this.DBUFF_V = {};
|
||||
this.DBUFFS_V = {};
|
||||
this.DBUFF_R = {};
|
||||
this.DBUFFS_R = {};
|
||||
this.BUFFS = {
|
||||
};
|
||||
this.BUFFS_TEMP = {
|
||||
};
|
||||
// 获取英雄配置
|
||||
const heroInfo = HeroInfo[this.hero_uuid];
|
||||
if (!heroInfo) return;
|
||||
@@ -170,144 +202,43 @@ export class HeroViewComp extends CCComp {
|
||||
this.addBuff(buffConf);
|
||||
}
|
||||
}
|
||||
// 加载初始 debuff
|
||||
if (heroInfo.debuff && heroInfo.debuff.length > 0) {
|
||||
for (const dbuffConf of heroInfo.debuff) {
|
||||
this.addDebuff(dbuffConf);
|
||||
}
|
||||
}
|
||||
}
|
||||
// ==================== BUFF管理 ====================
|
||||
/**
|
||||
* 添加 buff 效果(智能覆盖)
|
||||
* 添加 buff 效果(支持多次叠加)
|
||||
* @param buffConf buff 配置 (来自 SkillSet.BuffConf heroSet.buff)
|
||||
*
|
||||
* 智能覆盖规则
|
||||
* 1. 值更小:不添
|
||||
* 2. 值相同且都是临时:叠加时
|
||||
* 3. 值更大:更新为新值(临时则更新值和时间
|
||||
* 叠加规则
|
||||
* 1. 持久型buff:直接添加到数组中,与现有buff独立存在
|
||||
* 2. 临时型buff:直接添加到数组中,保持独立的剩余时间计算
|
||||
* 3. 所有buff实例在属性计算时都被纳入求和计算
|
||||
*/
|
||||
addBuff(buffConf: BuffConf) {
|
||||
const isValue = buffConf.BType === BType.VALUE;
|
||||
const isPermanent = buffConf.time === 0;
|
||||
const attrIndex = buffConf.buff;
|
||||
|
||||
// 根据类型选择对应buff 字典
|
||||
const permanentBuffs = isValue ? this.BUFF_V : this.BUFF_R;
|
||||
const temporaryBuffs = isValue ? this.BUFFS_V : this.BUFFS_R;
|
||||
|
||||
if (isPermanent) {
|
||||
// 添加持久buff
|
||||
const existing = permanentBuffs[attrIndex];
|
||||
if (existing) {
|
||||
// 值更小,不添
|
||||
if (buffConf.value <= existing.value) {
|
||||
return;
|
||||
}
|
||||
// 值更大,更新
|
||||
existing.value = buffConf.value;
|
||||
} else {
|
||||
// 没有同类型,直接添加
|
||||
permanentBuffs[attrIndex] = { value: buffConf.value };
|
||||
// 添加持久buff到BUFFS - 直接追加到数组
|
||||
if (!this.BUFFS[attrIndex]) {
|
||||
this.BUFFS[attrIndex] = [];
|
||||
}
|
||||
this.BUFFS[attrIndex].push({ value: buffConf.value, BType: buffConf.BType });
|
||||
} else {
|
||||
// 添加临时buff
|
||||
const existing = temporaryBuffs[attrIndex];
|
||||
if (existing) {
|
||||
if (buffConf.value < existing.value) {
|
||||
// 值更小,不添
|
||||
return;
|
||||
} else if (buffConf.value === existing.value) {
|
||||
// 值相同,叠加时间
|
||||
existing.remainTime += buffConf.time;
|
||||
return; // 时间叠加不需要重算属
|
||||
} else {
|
||||
// 值更大,更新值和时间
|
||||
existing.value = buffConf.value;
|
||||
existing.remainTime = buffConf.time;
|
||||
}
|
||||
} else {
|
||||
// 没有同类型,直接添加
|
||||
temporaryBuffs[attrIndex] = {
|
||||
value: buffConf.value,
|
||||
remainTime: buffConf.time
|
||||
};
|
||||
// 添加临时buff到BUFFS_TEMP - 直接追加到数组
|
||||
if (!this.BUFFS_TEMP[attrIndex]) {
|
||||
this.BUFFS_TEMP[attrIndex] = [];
|
||||
}
|
||||
this.BUFFS_TEMP[attrIndex].push({
|
||||
value: buffConf.value,
|
||||
BType: buffConf.BType,
|
||||
remainTime: buffConf.time
|
||||
});
|
||||
}
|
||||
|
||||
this.recalculateSingleAttr(buffConf.buff);
|
||||
// 重新计算受影响的属性
|
||||
this.recalculateSingleAttr(attrIndex);
|
||||
}
|
||||
|
||||
// ==================== DEBUFF管理 ====================
|
||||
/**
|
||||
* 添加 debuff 效果(智能覆盖)
|
||||
* @param dbuffConf debuff 配置 (来自 SkillSet.DbuffConf heroSet.debuff)
|
||||
*
|
||||
* 支持两种 debuff
|
||||
* 1. 属性型 debuff:直接修改属性值(有对应的 Attrs
|
||||
* 2. 状态型 debuff:只缓存状态(无对应的 Attrs,用于状态检查)
|
||||
*
|
||||
* 智能覆盖规则
|
||||
* 1. 值更小:不添
|
||||
* 2. 值相同且都是临时:叠加时
|
||||
* 3. 值更大:更新为新值(临时则更新值和时间
|
||||
*/
|
||||
addDebuff(dbuffConf: DbuffConf) {
|
||||
// 获取 debuff 对应的属性字
|
||||
|
||||
const isValue = dbuffConf.BType === BType.VALUE;
|
||||
const isPermanent = dbuffConf.time === 0;
|
||||
|
||||
// 根据类型选择对应debuff 字典
|
||||
const permanentDebuffs = isValue ? this.DBUFF_V : this.DBUFF_R;
|
||||
const temporaryDebuffs = isValue ? this.DBUFFS_V : this.DBUFFS_R;
|
||||
// 状态类 debuff 使用 debuff 类型作为 key,属性类 debuff 使用 attrField 作为 key
|
||||
const key = dbuffConf.debuff;
|
||||
|
||||
if (isPermanent) {
|
||||
// 添加持久debuff
|
||||
const existing = permanentDebuffs[key];
|
||||
if (existing) {
|
||||
// 值更小,不添
|
||||
if (dbuffConf.value <= existing.value) {
|
||||
return;
|
||||
}
|
||||
// 值更大,更新
|
||||
existing.value = dbuffConf.value;
|
||||
} else {
|
||||
// 没有同类型,直接添加
|
||||
permanentDebuffs[key] = { value: dbuffConf.value };
|
||||
}
|
||||
} else {
|
||||
// 添加临时debuff
|
||||
const existing = temporaryDebuffs[key];
|
||||
if (existing) {
|
||||
if (dbuffConf.value < existing.value) {
|
||||
// 值更小,不添
|
||||
return;
|
||||
} else if (dbuffConf.value === existing.value) {
|
||||
// 值相同,叠加时间
|
||||
existing.remainTime += dbuffConf.time;
|
||||
return; // 时间叠加不需要重算属
|
||||
} else {
|
||||
// 值更大,更新值和时间
|
||||
existing.value = dbuffConf.value;
|
||||
existing.remainTime = dbuffConf.time;
|
||||
}
|
||||
} else {
|
||||
// 没有同类型,直接添加
|
||||
temporaryDebuffs[key] = {
|
||||
value: dbuffConf.value,
|
||||
remainTime: dbuffConf.time
|
||||
};
|
||||
}
|
||||
}
|
||||
let attrField = TransformBuffs(dbuffConf.debuff,true);
|
||||
// 只重新计算受影响的属性(状态类 debuff 不需要计算)
|
||||
if (attrField > 0 ) {
|
||||
this.recalculateSingleAttr(attrField);
|
||||
}
|
||||
}
|
||||
|
||||
// ==================== 属性计算系====================
|
||||
/**
|
||||
@@ -315,8 +246,8 @@ export class HeroViewComp extends CCComp {
|
||||
* @param attrIndex 属性索引
|
||||
*
|
||||
* 计算公式:
|
||||
* - 数值型属性:最终值 = (基础值 + 数值型buff - 数值型debuff) × (1 + 百分比buff/100 - 百分比debuff/100)
|
||||
* - 百分比型属性:最终值 = 基础值 + 数值型buff - 数值型debuff + 百分比buff - 百分比debuff
|
||||
* - 数值型属性:最终值 = (基础值 + 所有数值型buff之和 - 所有数值型debuff之和) × (1 + 所有百分比buff之和/100 - 所有百分比debuff之和/100)
|
||||
* - 百分比型属性:最终值 = 基础值 + 所有数值型buff之和 - 所有数值型debuff之和 + 所有百分比buff之和 - 所有百分比debuff之和
|
||||
*/
|
||||
private recalculateSingleAttr(attrIndex: number) {
|
||||
// 1. 获取基础值
|
||||
@@ -332,49 +263,46 @@ export class HeroViewComp extends CCComp {
|
||||
|
||||
const baseVal = baseValues[attrIndex] !== undefined ? baseValues[attrIndex] : 0;
|
||||
|
||||
// 2. 收集所有数值型 buff/debuff
|
||||
// 2. 收集所有数值型 buff/debuff - 遍历所有buff数组并按BType筛选求和
|
||||
let totalValue = baseVal;
|
||||
|
||||
// Buff:直接使用 Attrs 索引
|
||||
if (this.BUFF_V[attrIndex]) {
|
||||
totalValue += this.BUFF_V[attrIndex].value;
|
||||
}
|
||||
if (this.BUFFS_V[attrIndex]) {
|
||||
totalValue += this.BUFFS_V[attrIndex].value;
|
||||
}
|
||||
|
||||
// Debuff:需要通过 DBuff key 查找
|
||||
const deKey = TransformBuffs(attrIndex, false);
|
||||
if (deKey !== -1) {
|
||||
if (this.DBUFF_V[deKey]) {
|
||||
totalValue -= this.DBUFF_V[deKey].value;
|
||||
}
|
||||
if (this.DBUFFS_V[deKey]) {
|
||||
totalValue -= this.DBUFFS_V[deKey].value;
|
||||
// 遍历持久buff数组
|
||||
if (this.BUFFS[attrIndex] && this.BUFFS[attrIndex].length > 0) {
|
||||
for (const buff of this.BUFFS[attrIndex]) {
|
||||
if (buff.BType === BType.VALUE) {
|
||||
totalValue += buff.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 3. 收集所有百分比型 buff/debuff
|
||||
// 遍历临时buff数组
|
||||
if (this.BUFFS_TEMP[attrIndex] && this.BUFFS_TEMP[attrIndex].length > 0) {
|
||||
for (const buff of this.BUFFS_TEMP[attrIndex]) {
|
||||
if (buff.BType === BType.VALUE) {
|
||||
totalValue += buff.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 收集所有百分比型 buff/debuff - 遍历所有buff数组并按BType筛选求和
|
||||
let totalRatio = 0; // 总百分比(可正可负)
|
||||
|
||||
// Buff:直接使用 Attrs 索引
|
||||
if (this.BUFF_R[attrIndex]) {
|
||||
totalRatio += this.BUFF_R[attrIndex].value;
|
||||
}
|
||||
if (this.BUFFS_R[attrIndex]) {
|
||||
totalRatio += this.BUFFS_R[attrIndex].value;
|
||||
}
|
||||
|
||||
// Debuff:需要通过 DBuff key 查找
|
||||
if (deKey !== -1) {
|
||||
if (this.DBUFF_R[deKey]) {
|
||||
totalRatio -= this.DBUFF_R[deKey].value;
|
||||
}
|
||||
if (this.DBUFFS_R[deKey]) {
|
||||
totalRatio -= this.DBUFFS_R[deKey].value;
|
||||
// 遍历持久buff数组
|
||||
if (this.BUFFS[attrIndex] && this.BUFFS[attrIndex].length > 0) {
|
||||
for (const buff of this.BUFFS[attrIndex]) {
|
||||
if (buff.BType === BType.RATIO) {
|
||||
totalRatio += buff.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 遍历临时buff数组
|
||||
if (this.BUFFS_TEMP[attrIndex] && this.BUFFS_TEMP[attrIndex].length > 0) {
|
||||
for (const buff of this.BUFFS_TEMP[attrIndex]) {
|
||||
if (buff.BType === BType.RATIO) {
|
||||
totalRatio += buff.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 4. 根据属性类型计算最终值
|
||||
const attrType = AttrsType[attrIndex];
|
||||
const isRatioAttr = attrType === BType.RATIO;
|
||||
@@ -421,45 +349,48 @@ export class HeroViewComp extends CCComp {
|
||||
updateTemporaryBuffsDebuffs(dt: number) {
|
||||
const affectedAttrs = new Set<number>();
|
||||
// 更新临时型数buff
|
||||
for (const attrIndex in this.BUFFS_V) {
|
||||
const buff = this.BUFFS_V[attrIndex];
|
||||
buff.remainTime -= dt;
|
||||
if (buff.remainTime <= 0) {
|
||||
delete this.BUFFS_V[attrIndex];
|
||||
for (const attrIndex in this.BUFFS_TEMP) {
|
||||
const buffs = this.BUFFS_TEMP[attrIndex];
|
||||
buffs.forEach(buff => {
|
||||
buff.remainTime -= dt;
|
||||
if (buff.remainTime <= 0) {
|
||||
// 从数组中移除
|
||||
const index = buffs.indexOf(buff);
|
||||
if (index > -1) {
|
||||
buffs.splice(index, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
if (buffs.length === 0) {
|
||||
delete this.BUFFS_TEMP[attrIndex];
|
||||
affectedAttrs.add(parseInt(attrIndex));
|
||||
}
|
||||
}
|
||||
// 更新临时型百分比 buff
|
||||
for (const attrIndex in this.BUFFS_R) {
|
||||
const buff = this.BUFFS_R[attrIndex];
|
||||
buff.remainTime -= dt;
|
||||
if (buff.remainTime <= 0) {
|
||||
delete this.BUFFS_R[attrIndex];
|
||||
for (const attrIndex in this.BUFFS_TEMP) {
|
||||
const buffs = this.BUFFS_TEMP[attrIndex];
|
||||
buffs.forEach(buff => {
|
||||
buff.remainTime -= dt;
|
||||
if (buff.remainTime <= 0) {
|
||||
// 从数组中移除
|
||||
const index = buffs.indexOf(buff);
|
||||
if (index > -1) {
|
||||
buffs.splice(index, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
if (buffs.length === 0) {
|
||||
delete this.BUFFS_TEMP[attrIndex];
|
||||
affectedAttrs.add(parseInt(attrIndex));
|
||||
}
|
||||
}
|
||||
|
||||
// 更新临时型数debuff
|
||||
for (const key in this.DBUFFS_V) {
|
||||
const debuff = this.DBUFFS_V[key];
|
||||
// 负面状态更新
|
||||
for (const key in this.NeAttrs) {
|
||||
const debuff = this.NeAttrs[key];
|
||||
debuff.remainTime -= dt;
|
||||
if (debuff.remainTime <= 0) {
|
||||
delete this.DBUFFS_V[key];
|
||||
const keyNum = parseInt(key);
|
||||
const attrField = TransformBuffs(keyNum,true)
|
||||
if(attrField > 0) affectedAttrs.add(attrField);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新临时型百分比 debuff
|
||||
for (const key in this.DBUFFS_R) {
|
||||
const debuff = this.DBUFFS_R[key];
|
||||
debuff.remainTime -= dt;
|
||||
if (debuff.remainTime <= 0) {
|
||||
delete this.DBUFFS_R[key];
|
||||
const keyNum = parseInt(key);
|
||||
const attrField = TransformBuffs(keyNum,true)
|
||||
if(attrField > 0) affectedAttrs.add(attrField);
|
||||
debuff.remainTime = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -469,11 +400,79 @@ export class HeroViewComp extends CCComp {
|
||||
});
|
||||
}
|
||||
|
||||
// ==================== BUFF 辅助方法 ====================
|
||||
/**
|
||||
* 清空buff
|
||||
* @param attrIndex 属性索引,如果为空则清理所有buff(包括临时和持久)
|
||||
* @param isBuff true时清理value>0的增益buff,false时清理value<0的减益buff
|
||||
*/
|
||||
clearBuffs(attrIndex?: number, isBuff: boolean = true): void {
|
||||
if (attrIndex === undefined) {
|
||||
// 清理所有buff,根据isBuff过滤
|
||||
for (const attrIndex in this.BUFFS_TEMP) {
|
||||
this.clearBuffsForAttr(parseInt(attrIndex), isBuff);
|
||||
}
|
||||
|
||||
} else {
|
||||
// 清理指定属性的buff,根据isBuff过滤
|
||||
this.clearBuffsForAttr(attrIndex, isBuff);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理指定属性的buff,根据增益/减益类型过滤
|
||||
* @param attrIndex 属性索引
|
||||
* @param isBuff true清理增益buff,false清理减益buff
|
||||
*/
|
||||
private clearBuffsForAttr(attrIndex: number, isBuff: boolean): void {
|
||||
const buffContainer = this.BUFFS_TEMP;
|
||||
|
||||
if (!buffContainer[attrIndex]) return;
|
||||
|
||||
// 过滤buff数组,保留不符合清理条件的buff
|
||||
buffContainer[attrIndex] = buffContainer[attrIndex].filter(buff => {
|
||||
const shouldClear = isBuff ? buff.value > 0 : buff.value < 0;
|
||||
return !shouldClear;
|
||||
});
|
||||
|
||||
// 如果数组为空,删除该属性条目
|
||||
if (buffContainer[attrIndex].length === 0) {
|
||||
delete buffContainer[attrIndex];
|
||||
}
|
||||
|
||||
// 重新计算该属性
|
||||
this.recalculateSingleAttr(attrIndex);
|
||||
}
|
||||
|
||||
// ==================== NeAttrs(负面状态)管理 ====================
|
||||
/**
|
||||
* 清理单个NeAttr(负面状态)
|
||||
* @param neAttrIndex NeAttrs索引(如NeAttrs.IN_STUN、NeAttrs.IN_FROST等)
|
||||
* 清理即将该状态的value和time都设为0
|
||||
*/
|
||||
clearNeAttr(neAttrIndex: number): void {
|
||||
if (this.NeAttrs[neAttrIndex]) {
|
||||
this.NeAttrs[neAttrIndex].value = 0;
|
||||
this.NeAttrs[neAttrIndex].time = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理所有NeAttrs(负面状态)
|
||||
* 清理即将所有状态的value和time都设为0
|
||||
*/
|
||||
clearAllNeAttrs(): void {
|
||||
for (const key in this.NeAttrs) {
|
||||
this.NeAttrs[key].value = 0;
|
||||
this.NeAttrs[key].time = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public isStun() {
|
||||
return this.DBUFFS_V[DBuff.STUN] !== undefined?true:false
|
||||
return this.NeAttrs[NeAttrs.IN_STUN].time > 0;
|
||||
}
|
||||
public isFrost() {
|
||||
return this.DBUFFS_V[DBuff.FROST] !== undefined?true:false
|
||||
return this.NeAttrs[NeAttrs.IN_FROST].time > 0;
|
||||
}
|
||||
|
||||
update(dt: number){
|
||||
@@ -619,7 +618,7 @@ export class HeroViewComp extends CCComp {
|
||||
}
|
||||
// this.update_vm
|
||||
this.back()
|
||||
this.showDamage(damage, is_crit,SConf.AtkedType);
|
||||
this.showDamage(damage, is_crit,SConf.AtkedName);
|
||||
}
|
||||
//后退
|
||||
back(){
|
||||
|
||||
@@ -8,7 +8,8 @@ import { HeroInfo } from "../common/config/heroSet";
|
||||
import { MonModelComp } from "./MonModelComp";
|
||||
import { BattleMoveComp } from "../common/ecs/position/BattleMoveComp";
|
||||
import { SkillConComp } from "./SkillConComp";
|
||||
import { Attrs, getAttrs, SkillSet } from "../common/config/SkillSet";
|
||||
import { SkillSet } from "../common/config/SkillSet";
|
||||
import { getNeAttrs, getAttrs ,Attrs} from "../common/config/HeroAttrs";
|
||||
/** 角色实体 */
|
||||
@ecs.register(`Monster`)
|
||||
export class Monster extends ecs.Entity {
|
||||
@@ -89,7 +90,8 @@ export class Monster extends ecs.Entity {
|
||||
hv.base_mp=hero.mp
|
||||
hv.hp=hv.base_hp
|
||||
hv.mp=hv.base_mp
|
||||
hv.Attrs=getAttrs()
|
||||
hv.Attrs=getAttrs()
|
||||
hv.NeAttrs=getNeAttrs()
|
||||
hv.Attrs[Attrs.HP_MAX]=hv.base_hp
|
||||
hv.Attrs[Attrs.MP_MAX]=hv.base_mp
|
||||
hv.Attrs[Attrs.DEF]=hv.base_def
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { _decorator, Component, Node, ProgressBar, v3, Vec3 } from 'cc';
|
||||
import { HeroViewComp } from './HeroViewComp';
|
||||
import { Attrs, DBuff, SkillSet, SType, TGroup, } from '../common/config/SkillSet';
|
||||
import { SkillSet, SType, TGroup, } from '../common/config/SkillSet';
|
||||
import { ecs } from 'db://oops-framework/libs/ecs/ECS';
|
||||
import { GameEvent } from '../common/config/GameEvent';
|
||||
import { FacSet } from '../common/config/BoxSet';
|
||||
@@ -9,6 +9,7 @@ import { CCComp } from 'db://oops-framework/module/common/CCComp';
|
||||
import { MonModelComp } from './MonModelComp';
|
||||
import { HeroModelComp } from './HeroModelComp';
|
||||
import { SkillEnt } from '../skill/SkillEnt';
|
||||
import { Attrs } from '../common/config/HeroAttrs';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('SkillCon')
|
||||
|
||||
@@ -2,11 +2,12 @@ import { _decorator, Animation, CCBoolean, Collider2D, Contact2DType, Tween, UIT
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
|
||||
import { BezierMove } from "../BezierMove/BezierMove";
|
||||
import { Attrs, DTType, EType, SkillSet, SType } from "../common/config/SkillSet";
|
||||
import { DTType, EType, SkillSet, SType } from "../common/config/SkillSet";
|
||||
import { BoxSet, FacSet } from "../common/config/BoxSet";
|
||||
import { HeroViewComp } from "../hero/HeroViewComp";
|
||||
import { GameEvent } from "../common/config/GameEvent";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
import { Attrs } from "../common/config/HeroAttrs";
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
/** 视图层对象 */
|
||||
|
||||
@@ -2,7 +2,7 @@ import { _decorator, CCBoolean, CCFloat, CCInteger, instantiate, Node, Prefab, v
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
|
||||
import { HeroViewComp } from "../hero/HeroViewComp";
|
||||
import { getAttrs, RType, SkillSet } from "../common/config/SkillSet";
|
||||
import { getAttrs, RType, SkillSet } from "../common/config/SkillSet";
|
||||
import { AtkConCom } from "./AtkConCom";
|
||||
import { BoxSet } from "../common/config/BoxSet";
|
||||
|
||||
|
||||
@@ -174,7 +174,7 @@ export class SkillCom extends CCComp {
|
||||
// this.burn_count,this.burn_value,
|
||||
// this.stun_time,this.stun_ratio,
|
||||
// this.frost_time,this.frost_ratio,
|
||||
// this.skillConfig.AtkedType
|
||||
// this.skillConfig.AtkedName
|
||||
// ) // ap 及暴击 属性已经在skill.ts 处理
|
||||
// console.log("[SkillCom]:single_damage t:tp:rtp",this.node.position,this.targetPos,target.node.position)
|
||||
if(this.skillConfig.debuff>0){
|
||||
|
||||
@@ -117,63 +117,183 @@
|
||||
### 15. 吴起
|
||||
- **历史简介**:战国时期军事家,与孙武并称"孙吴"。善于用兵,著有《吴子兵法》,在魏、楚两国都曾为将。
|
||||
- **初始属性倾向**:用兵型(高机动性和适应性)
|
||||
- **职业定位**:warrior(全能战士)
|
||||
- **能力成长方向**:
|
||||
- 用兵专精:提升攻击速度和移动速度
|
||||
- 治军强化:增强自身防御和生命值
|
||||
- 变法突进:根据战场情况调整战术
|
||||
|
||||
### 16. 孙膑
|
||||
- **历史简介**:战国时期齐国军事家,孙武后代。著有《孙膑兵法》,曾在桂陵之战、马陵之战中大败魏军。
|
||||
- **初始属性倾向**:谋略型(高智力和战术)
|
||||
- **职业定位**:mage(战术法师)
|
||||
- **能力成长方向**:
|
||||
- 围魏救赵:战术技能冷却降低
|
||||
- 减灶诱敌:提升敌人受到的伤害
|
||||
- 兵法奥义:魔法伤害大幅提升
|
||||
|
||||
### 17. 乐毅
|
||||
- **历史简介**:战国时期燕国名将,曾率五国联军攻破齐国七十余城,几乎灭齐。
|
||||
- **初始属性倾向**:统帅型(范围攻击和持续战斗)
|
||||
- **职业定位**:warrior(攻城战士)
|
||||
- **能力成长方向**:
|
||||
- 破城专精:对防御型敌人伤害提升
|
||||
- 联军指挥:范围伤害增强
|
||||
- 持久作战:战斗时间越长属性越强
|
||||
|
||||
### 18. 田单
|
||||
- **历史简介**:战国时期齐国将领,以火牛阵大破燕军,收复齐国失地七十余城。
|
||||
- **初始属性倾向**:创新型(特殊战术和爆发)
|
||||
- **职业定位**:mage(火焰法师)
|
||||
- **能力成长方向**:
|
||||
- 火牛阵:火焰范围伤害
|
||||
- 绝地反击:低血量时爆发强大战力
|
||||
- 守城专精:防御状态下伤害提升
|
||||
|
||||
### 19. 范蠡
|
||||
- **历史简介**:春秋末期越国政治家、军事家和商人。辅佐越王勾践灭吴复国,后隐退经商成为巨富。
|
||||
- **初始属性倾向**:智谋商贾型(资源增益和策略)
|
||||
- **职业定位**:support(经济辅助)
|
||||
- **能力成长方向**:
|
||||
- 卧薪尝胆:持续获得资源加成
|
||||
- 商业奇才:提升金币收益
|
||||
- 功成身退:危机时刻提供强大护盾
|
||||
|
||||
### 20. 伍子胥
|
||||
- **历史简介**:春秋时期吴国大夫、军事家。率军攻破楚国,报父兄之仇。刚直不阿,最终被吴王夫差赐死。
|
||||
- **初始属性倾向**:复仇型(高爆发和持续伤害)
|
||||
- **职业定位**:assassin(复仇刺客)
|
||||
- **能力成长方向**:
|
||||
- 血海深仇:对特定目标伤害大幅提升
|
||||
- 鞭尸怨念:击杀敌人后获得额外伤害
|
||||
- 刚烈之志:濒死时爆发极限战力
|
||||
|
||||
### 21. 管仲
|
||||
- **历史简介**:春秋时期齐国政治家、改革家。辅佐齐桓公成为春秋五霸之首,推行经济、军事改革。
|
||||
- **初始属性倾向**:改革型(全面强化和资源管理)
|
||||
- **职业定位**:support(战略辅助)
|
||||
- **能力成长方向**:
|
||||
- 九合诸侯:提升团队整体属性
|
||||
- 经济改革:增加资源获取
|
||||
- 富国强兵:攻防双重加成
|
||||
|
||||
### 22. 晏婴
|
||||
- **历史简介**:春秋时期齐国政治家,以节俭力行、谏诤直言著称。身材矮小但智慧超群。
|
||||
- **初始属性倾向**:辩才型(控制和削弱)
|
||||
- **职业定位**:support(辩士辅助)
|
||||
- **能力成长方向**:
|
||||
- 巧言善辩:延长控制效果时长
|
||||
- 节俭美德:降低技能消耗
|
||||
- 使楚不辱:反弹敌人部分伤害
|
||||
|
||||
### 23. 李斯
|
||||
- **历史简介**:秦朝丞相,法家代表人物。协助秦始皇统一六国,统一文字、度量衡,推行郡县制。
|
||||
- **初始属性倾向**:法治型(规则限制和强制执行)
|
||||
- **职业定位**:mage(法术控制)
|
||||
- **能力成长方向**:
|
||||
- 以法治国:强制性控制技能
|
||||
- 统一天下:降低敌人抗性
|
||||
- 焚书坑儒:魔法伤害爆发
|
||||
|
||||
## 楚汉争霸时期英雄
|
||||
|
||||
### 16. 刘邦
|
||||
### 24. 刘邦
|
||||
- **历史简介**:汉朝开国皇帝,出身平民,推翻秦朝后在楚汉战争中击败项羽,建立汉朝。善于用人,知人善任。
|
||||
- **初始属性倾向**:领导型(提升团队整体能力)
|
||||
- **职业定位**:warrior(领袖战士)
|
||||
- **能力成长方向**:
|
||||
- 适应能力:根据战场情况调整属性
|
||||
- 坚韧恢复:受伤后快速恢复能力
|
||||
- 领导增益:提升自身各项属性
|
||||
|
||||
### 17. 项羽
|
||||
- **历史简介**:西楚霸王,楚国名将项燕之孙。力能扛鼎,作战勇猛,推翻秦朝的主要力量之一。在楚汉战争中与刘邦争夺天下,最终乌江自刎。
|
||||
### 25. 项羽
|
||||
- **历史简介**:西楚霸王,楚国名将项燕之孙。力能扛鼎,作战勇猛,推翻秦朝的主要力量之一。在楚汉战争中与刘邦争夺天下,最终乌江自刨。
|
||||
- **初始属性倾向**:狂暴型(攻击力随怒气值提升)
|
||||
- **职业定位**:warrior(霸王战士)
|
||||
- **能力成长方向**:
|
||||
- 怒气增伤:攻击力随怒气值提升
|
||||
- 冲锋击退:快速冲锋并击退敌人
|
||||
- 悲剧爆发:濒死时爆发巨大威力
|
||||
|
||||
### 18. 韩信
|
||||
### 26. 韩信
|
||||
- **历史简介**:汉初三杰之一,杰出的军事家。为刘邦统一天下立下汗马功劳,被誉为"兵仙"、"国士无双"。精通兵法,善于用兵。
|
||||
- **初始属性倾向**:策略突击型(根据敌方阵容制定战术)
|
||||
- **职业定位**:warrior(兵仙战士)
|
||||
- **能力成长方向**:
|
||||
- 背水战术:根据战场情况调整战术
|
||||
- 侧翼突袭:从侧翼发动强力攻击
|
||||
- 侧翼突袭:从侧翼发动强力政击
|
||||
- 指挥增益:提升自身攻击力和速度
|
||||
|
||||
### 19. 张良
|
||||
### 27. 张良
|
||||
- **历史简介**:汉初三杰之一,杰出的谋士。为刘邦统一天下出谋划策,以智谋著称。精通黄老之道,晚年随赤松子云游。
|
||||
- **初始属性倾向**:智谋型(预测敌人行动并制定对策)
|
||||
- **职业定位**:mage(谋略法师)
|
||||
- **能力成长方向**:
|
||||
- 运筹帷幄:预测敌人行动并制定对策
|
||||
- 辅助强化:为自己提供强大的增益效果
|
||||
- 洞察弱点:识别并利用敌人弱点
|
||||
|
||||
### 20. 萧何
|
||||
### 28. 萧何
|
||||
- **历史简介**:汉初三杰之一,西汉开国功臣。刘邦的重要助手,负责后勤保障和制度建设。制定《九章律》,为汉朝建立完整的法律制度。
|
||||
- **初始属性倾向**:后勤型(提供持续资源补给)
|
||||
- **职业定位**:support(后勤辅助)
|
||||
- **能力成长方向**:
|
||||
- 后勤保障:持续获得资源补给
|
||||
- 治理效率:提升自身行动效率
|
||||
- 法律约束:通过规则限制敌人行动
|
||||
|
||||
### 29. 陈平
|
||||
- **历史简介**:秦末起义领袖,与吴广一起发动中国历史上第一次大规模农民起义,提出"王侯将相宁有种乎"。
|
||||
- **初始属性倾向**:革命型(高士气和群体召唤)
|
||||
- **职业定位**:warrior(起义领袖)
|
||||
- **能力成长方向**:
|
||||
- 王侯将相:提升所有属性
|
||||
- 农民起义:召唤农民士兵协同作战
|
||||
- 士气鼓舞:战斗时间越长攻击力越高
|
||||
|
||||
### 30. 英布
|
||||
- **历史简介**:秦末汉初名将,初随项羽,后归附刘邦。勇猛善战,被称为"万人敌"。
|
||||
- **初始属性倾向**:狂战士型(极高攻击力和突进)
|
||||
- **职业定位**:warrior(狂战士)
|
||||
- **能力成长方向**:
|
||||
- 万人敌:对多目标伤害提升
|
||||
- 勇猛突进:冲锋技能冷却降低
|
||||
- 背叛之力:每次转换阵营获得增益
|
||||
|
||||
### 31. 彭越
|
||||
- **历史简介**:西汉开国功臣,刘邦的好友和重要将领。参与楚汉战争,屡建战功。
|
||||
- **初始属性倾向**:忠诚型(高防御和坚韧)
|
||||
- **职业定位**:warrior(忠诚卫士)
|
||||
- **能力成长方向**:
|
||||
- 忠诚不二:防御力持续提升
|
||||
- 补过拾遮:吸收伤害保护友军
|
||||
- 老兵不死:生命值越低防御越高
|
||||
|
||||
### 32. 周勃
|
||||
- **历史简介**:西汉开国功臣,刘邦的重要谋士和将领。善于谋略,多次为刘邦出谋划策。
|
||||
- **初始属性倾向**:谋略型(策略控制和辅助)
|
||||
- **职业定位**:support(谋士辅助)
|
||||
- **能力成长方向**:
|
||||
- 谋略百出:提供多种辅助效果
|
||||
- 奇计辭出:随机获得强力技能
|
||||
- 运筹帷幄:降低敌人命中率
|
||||
|
||||
## 女性英雄角色
|
||||
|
||||
### 21. 西施
|
||||
### 33. 西施
|
||||
- **历史简介**:春秋时期越国美女,被越王勾践献给吴王夫差,以美色迷惑吴王,为越国复仇计划发挥了重要作用。
|
||||
- **初始属性倾向**:迷惑型(通过美色影响敌人)
|
||||
- **职业定位**:support(控制辅助)
|
||||
- **能力成长方向**:
|
||||
- 迷惑效果:使敌人混乱攻击队友
|
||||
- 魅力增益:通过魅力获得属性加成
|
||||
- 舞蹈强化:通过舞蹈获得战斗增益
|
||||
|
||||
### 34. 赵姬
|
||||
- **历史简介**:战国时期赵国公主,秦始皇母亲。以舞技和智谋闻名,对秦国政治有重要影响。
|
||||
- **初始属性倾向**:智谋舞姬型(控制和增益)
|
||||
- **职业定位**:support(宫廷辅助)
|
||||
|
||||
### 22. 貂蝉
|
||||
- **历史简介**:中国古代四大美女之一,传说在东汉末年以连环计离间董卓与吕布,为诛杀国贼做出贡献。
|
||||
- **初始属性倾向**:连环型(同时影响多个敌人)
|
||||
@@ -208,20 +328,47 @@
|
||||
|
||||
## 英雄能力成长体系
|
||||
|
||||
### 职业系统 (HType)
|
||||
1. **warrior (战士)** - 高生命、高防御、近战输出
|
||||
- 代表英雄:刘邦、项羽、韩信、白起、吴起、乐毅、陈平、英布、彭越
|
||||
|
||||
2. **remote (远程)** - 高攻速、高暴击、远程输出
|
||||
- 代表英雄:赵武灵王
|
||||
|
||||
3. **mage (法师)** - 高魔法攻击、元素控制
|
||||
- 代表英雄:屈原、春申君、孙膑、田单、李斯、张良
|
||||
|
||||
4. **support (辅助)** - 治疗、增益、资源支援
|
||||
- 代表英雄:萧何、增子、孟尝君、范蠡、管仲、晏婴、周勃、西施、赵姬
|
||||
|
||||
5. **assassin (刺客)** - 超高暴击、高速度、高爆发
|
||||
- 代表英雄:荆轲、伍子胥
|
||||
|
||||
### 初始属性倾向分类
|
||||
1. **攻击导向型**:高攻击力,适合快速清理敌人
|
||||
2. **防御优先型**:高生命值和防御力
|
||||
3. **突击型**:高爆发伤害,适合快速击杀
|
||||
4. **敏捷型**:高速度和暴击率
|
||||
5. **狂战士职业**:攻击力随战斗持续提升
|
||||
6. **防御反击型**:高生存能力,受击反击
|
||||
7. **机动型**:高移动速度和远程攻击
|
||||
8. **控制型**:通过策略控制战场
|
||||
9. **领导型**:提升团队整体能力
|
||||
10. **迷惑型**:通过美色影响敌人
|
||||
1. **攻击导向型** → warrior/remote
|
||||
2. **防御优先型** → warrior
|
||||
3. **突击型** → assassin/warrior
|
||||
4. **敏捷型** → assassin
|
||||
5. **狂战士型** → warrior
|
||||
6. **防御反击型** → warrior
|
||||
7. **机动型** → remote
|
||||
8. **控制型** → mage/support
|
||||
9. **领导型** → warrior/support
|
||||
10. **迷惑型** → support
|
||||
11. **元素型** → mage
|
||||
12. **辅助型** → support
|
||||
13. **谋略型** → mage/support
|
||||
14. **后勤型** → support
|
||||
15. **复仇型** → assassin
|
||||
|
||||
### 能力成长方向
|
||||
每种英雄都有3个具体的能力成长方向,针对特定属性进行强化:
|
||||
1. **数值型属性**:如攻击力、生命值、防御力等
|
||||
2. **效果型属性**:如暴击率、闪避率、技能冷却等
|
||||
3. **特殊型属性**:如独特的机制和技能组合
|
||||
3. **特殊型属性**:如独特的机制和技能组合
|
||||
|
||||
### 英雄统计
|
||||
- **春秋战国时期**:23位英雄
|
||||
- **楚汉争霸时期**:9位英雄
|
||||
- **女性英雄**:2位(可继续扩充)
|
||||
- **总计**:34位可玩英雄
|
||||
374
assets/script/heros2.md
Normal file
374
assets/script/heros2.md
Normal file
@@ -0,0 +1,374 @@
|
||||
# 英雄设计
|
||||
|
||||
## 春秋战国时期名人英雄
|
||||
|
||||
### 1. 孙武
|
||||
- **历史简介**:春秋时期军事家,被誉为"兵圣"。著有《孙子兵法》,是中国古代军事学的奠基人。
|
||||
- **初始属性倾向**:攻击导向型(高攻击力,适合快速清理敌人)
|
||||
- **能力成长方向**:
|
||||
- 攻击速度:提升普通攻击频率
|
||||
- 范围伤害:增加技能攻击范围
|
||||
- 暴击效果:提升暴击伤害倍数
|
||||
|
||||
### 2. 墨子(墨翟)
|
||||
- **历史简介**:战国时期思想家,墨家学派创始人。主张"兼爱"、"非攻",提倡节俭和实用主义。
|
||||
- **初始属性倾向**:防御优先型(高生命值和防御力)
|
||||
- **能力成长方向**:
|
||||
- 生命值:增加最大生命值
|
||||
- 护盾效果:提升护盾技能强度
|
||||
- 治疗效果:增强自我治疗能力
|
||||
|
||||
### 3. 商鞅
|
||||
- **历史简介**:战国时期政治家、改革家。在秦国实施变法,为秦统一六国奠定基础。主张法治,强调军功爵制。
|
||||
- **初始属性倾向**:突击型(高爆发伤害,适合快速击杀)
|
||||
- **能力成长方向**:
|
||||
- 攻击力:提升基础攻击力
|
||||
- 技能冷却:减少技能冷却时间
|
||||
- 移动速度:增加角色移动速度
|
||||
|
||||
### 4. 荆轲
|
||||
- **历史简介**:战国时期刺客,著名勇士。受燕太子丹之托刺杀秦王嬴政,虽未成功但留下了"风萧萧兮易水寒"的千古绝唱。
|
||||
- **初始属性倾向**:敏捷型(高速度和暴击率)
|
||||
- **能力成长方向**:
|
||||
- 暴击率:增加暴击概率
|
||||
- 闪避率:提升闪避攻击概率
|
||||
- 穿透效果:增加攻击穿透能力
|
||||
|
||||
### 5. 白起
|
||||
- **历史简介**:战国时期秦国名将,被誉为"杀神"。一生攻城七十余座,歼敌百万以上,为秦国统一立下赫赫战功。
|
||||
- **初始属性倾向**:狂战士职业(攻击力随战斗持续提升)
|
||||
- **能力成长方向**:
|
||||
- 杀戮增益:击杀敌人后获得攻击力加成
|
||||
- 持续伤害:攻击附带持续伤害效果
|
||||
- 士气压制:降低敌人攻击力和士气
|
||||
|
||||
### 6. 廉颇
|
||||
- **历史简介**:战国时期赵国名将,以勇猛著称。数次击败秦军,保卫赵国。晚年因谗言被免职,后投奔魏国。
|
||||
- **初始属性倾向**:防御反击型(高生存能力,受击反击)
|
||||
- **能力成长方向**:
|
||||
- 防御力:提升基础防御能力
|
||||
- 反击概率:受击时反击概率增加
|
||||
- 老兵强化:随时间推移增强属性
|
||||
|
||||
### 7. 赵武灵王
|
||||
- **历史简介**:战国时期赵国君主,推行"胡服骑射"改革,使赵国军事实力大增。是中国历史上第一位大规模组建骑兵的君主。
|
||||
- **初始属性倾向**:机动型(高移动速度和远程攻击)
|
||||
- **能力成长方向**:
|
||||
- 远程伤害:提升远程攻击伤害
|
||||
- 移动速度:增加角色移动速度
|
||||
- 攻击速度:提升远程攻击频率
|
||||
|
||||
### 8. 苏秦
|
||||
- **历史简介**:战国时期纵横家,提出"合纵"策略,促成六国联合抗秦。佩六国相印,是历史上著名的外交家和谋略家。
|
||||
- **初始属性倾向**:控制型(通过策略控制战场)
|
||||
- **能力成长方向**:
|
||||
- 控制时长:延长控制技能持续时间
|
||||
- 范围控制:增加控制技能范围
|
||||
- 策略效果:提升控制技能成功率
|
||||
|
||||
### 9. 张仪
|
||||
- **历史简介**:战国时期纵横家,与苏秦齐名,提出"连横"策略,为秦国服务,成功瓦解六国合纵联盟。
|
||||
- **初始属性倾向**:瓦解型(削弱敌人能力)
|
||||
- **能力成长方向**:
|
||||
- 削弱效果:降低敌人攻击力和防御力
|
||||
- 迷惑概率:使敌人混乱攻击队友
|
||||
- 分化能力:根据敌人数量调整效果
|
||||
|
||||
### 10. 屈原
|
||||
- **历史简介**:战国时期楚国诗人、政治家。中国浪漫主义文学的奠基人,著有《离骚》等不朽诗篇。因忠而被谤,投汨罗江而死。
|
||||
- **初始属性倾向**:元素型(操控自然元素)
|
||||
- **能力成长方向**:
|
||||
- 元素伤害:提升元素攻击伤害
|
||||
- 低血增益:低血量时获得属性加成
|
||||
- 诗韵效果:通过诗歌获得各种增益
|
||||
|
||||
### 11. 孟尝君(田文)
|
||||
- **历史简介**:战国时期齐国宗室大臣,以广招宾客、礼贤下士闻名,门下有食客数千人,是"战国四公子"之一。
|
||||
- **初始属性倾向**:辅助型(擅长召唤和支援)
|
||||
- **能力成长方向**:
|
||||
- 召唤强化:提升食客召唤数量和质量
|
||||
- 礼贤效果:增强团队整体属性
|
||||
- 门客增益:根据食客数量获得额外加成
|
||||
|
||||
### 12. 信陵君(魏无忌)
|
||||
- **历史简介**:战国时期魏国宗室大臣,"战国四公子"之一。曾窃符救赵,展现了卓越的智谋和胆识。
|
||||
- **初始属性倾向**:策略型(根据战场情况调整战术)
|
||||
- **能力成长方向**:
|
||||
- 窃符技能:临时获得强力技能效果
|
||||
- 救赵强化:危急时刻爆发战斗力
|
||||
- 公子策略:根据局势调整战斗方式
|
||||
|
||||
### 13. 春申君(黄歇)
|
||||
- **历史简介**:战国时期楚国大臣,"战国四公子"之一。博学多才,善于辞令,为楚国的发展做出重要贡献。
|
||||
- **初始属性倾向**:博学型(掌握多种技能类型)
|
||||
- **能力成长方向**:
|
||||
- 博学专精:掌握多种元素技能
|
||||
- 辞令强化:提升控制技能效果
|
||||
- 治国策略:根据战场情况调整属性
|
||||
|
||||
### 14. 平原君(赵胜)
|
||||
- **历史简介**:战国时期赵国宗室大臣,"战国四公子"之一。以善于识人和养士闻名,门下有食客数千人。
|
||||
- **初始属性倾向**:识人型(善于识别敌人弱点)
|
||||
- **能力成长方向**:
|
||||
- 识人专精:识别敌人弱点并加以利用
|
||||
- 养士强化:召唤强力食客协助战斗
|
||||
- 宗室防护:提升自身防御能力
|
||||
|
||||
### 15. 吴起
|
||||
- **历史简介**:战国时期军事家,与孙武并称"孙吴"。善于用兵,著有《吴子兵法》,在魏、楚两国都曾为将。
|
||||
- **初始属性倾向**:用兵型(高机动性和适应性)
|
||||
- **职业定位**:warrior(全能战士)
|
||||
- **能力成长方向**:
|
||||
- 用兵专精:提升攻击速度和移动速度
|
||||
- 治军强化:增强自身防御和生命值
|
||||
- 变法突进:根据战场情况调整战术
|
||||
|
||||
### 16. 孙膑
|
||||
- **历史简介**:战国时期齐国军事家,孙武后代。著有《孙膑兵法》,曾在桂陵之战、马陵之战中大败魏军。
|
||||
- **初始属性倾向**:谋略型(高智力和战术)
|
||||
- **职业定位**:mage(战术法师)
|
||||
- **能力成长方向**:
|
||||
- 围魏救赵:战术技能冷却降低
|
||||
- 减灶诱敌:提升敌人受到的伤害
|
||||
- 兵法奥义:魔法伤害大幅提升
|
||||
|
||||
### 17. 乐毅
|
||||
- **历史简介**:战国时期燕国名将,曾率五国联军攻破齐国七十余城,几乎灭齐。
|
||||
- **初始属性倾向**:统帅型(范围攻击和持续战斗)
|
||||
- **职业定位**:warrior(攻城战士)
|
||||
- **能力成长方向**:
|
||||
- 破城专精:对防御型敌人伤害提升
|
||||
- 联军指挥:范围伤害增强
|
||||
- 持久作战:战斗时间越长属性越强
|
||||
|
||||
### 18. 田单
|
||||
- **历史简介**:战国时期齐国将领,以火牛阵大破燕军,收复齐国失地七十余城。
|
||||
- **初始属性倾向**:创新型(特殊战术和爆发)
|
||||
- **职业定位**:mage(火焰法师)
|
||||
- **能力成长方向**:
|
||||
- 火牛阵:火焰范围伤害
|
||||
- 绝地反击:低血量时爆发强大战力
|
||||
- 守城专精:防御状态下伤害提升
|
||||
|
||||
### 19. 范蠡
|
||||
- **历史简介**:春秋末期越国政治家、军事家和商人。辅佐越王勾践灭吴复国,后隐退经商成为巨富。
|
||||
- **初始属性倾向**:智谋商贾型(资源增益和策略)
|
||||
- **职业定位**:support(经济辅助)
|
||||
- **能力成长方向**:
|
||||
- 卧薪尝胆:持续获得资源加成
|
||||
- 商业奇才:提升金币收益
|
||||
- 功成身退:危机时刻提供强大护盾
|
||||
|
||||
### 20. 伍子胥
|
||||
- **历史简介**:春秋时期吴国大夫、军事家。率军攻破楚国,报父兄之仇。刚直不阿,最终被吴王夫差赐死。
|
||||
- **初始属性倾向**:复仇型(高爆发和持续伤害)
|
||||
- **职业定位**:assassin(复仇刺客)
|
||||
- **能力成长方向**:
|
||||
- 血海深仇:对特定目标伤害大幅提升
|
||||
- 鞭尸怨念:击杀敌人后获得额外伤害
|
||||
- 刚烈之志:濒死时爆发极限战力
|
||||
|
||||
### 21. 管仲
|
||||
- **历史简介**:春秋时期齐国政治家、改革家。辅佐齐桓公成为春秋五霸之首,推行经济、军事改革。
|
||||
- **初始属性倾向**:改革型(全面强化和资源管理)
|
||||
- **职业定位**:support(战略辅助)
|
||||
- **能力成长方向**:
|
||||
- 九合诸侯:提升团队整体属性
|
||||
- 经济改革:增加资源获取
|
||||
- 富国强兵:攻防双重加成
|
||||
|
||||
### 22. 晏婴
|
||||
- **历史简介**:春秋时期齐国政治家,以节俭力行、谏诤直言著称。身材矮小但智慧超群。
|
||||
- **初始属性倾向**:辩才型(控制和削弱)
|
||||
- **职业定位**:support(辩士辅助)
|
||||
- **能力成长方向**:
|
||||
- 巧言善辩:延长控制效果时长
|
||||
- 节俭美德:降低技能消耗
|
||||
- 使楚不辱:反弹敌人部分伤害
|
||||
|
||||
### 23. 李斯
|
||||
- **历史简介**:秦朝丞相,法家代表人物。协助秦始皇统一六国,统一文字、度量衡,推行郡县制。
|
||||
- **初始属性倾向**:法治型(规则限制和强制执行)
|
||||
- **职业定位**:mage(法术控制)
|
||||
- **能力成长方向**:
|
||||
- 以法治国:强制性控制技能
|
||||
- 统一天下:降低敌人抗性
|
||||
- 焚书坑儒:魔法伤害爆发
|
||||
|
||||
## 楚汉争霸时期英雄
|
||||
|
||||
### 24. 刘邦
|
||||
- **历史简介**:汉朝开国皇帝,出身平民,推翻秦朝后在楚汉战争中击败项羽,建立汉朝。善于用人,知人善任。
|
||||
- **初始属性倾向**:领导型(提升团队整体能力)
|
||||
- **职业定位**:warrior(领袖战士)
|
||||
- **能力成长方向**:
|
||||
- 适应能力:根据战场情况调整属性
|
||||
- 坚韧恢复:受伤后快速恢复能力
|
||||
- 领导增益:提升自身各项属性
|
||||
|
||||
### 25. 项羽
|
||||
- **历史简介**:西楚霸王,楚国名将项燕之孙。力能扛鼎,作战勇猛,推翻秦朝的主要力量之一。在楚汉战争中与刘邦争夺天下,最终乌江自刨。
|
||||
- **初始属性倾向**:狂暴型(攻击力随怒气值提升)
|
||||
- **职业定位**:warrior(霸王战士)
|
||||
- **能力成长方向**:
|
||||
- 怒气增伤:攻击力随怒气值提升
|
||||
- 冲锋击退:快速冲锋并击退敌人
|
||||
- 悲剧爆发:濒死时爆发巨大威力
|
||||
|
||||
### 26. 韩信
|
||||
- **历史简介**:汉初三杰之一,杰出的军事家。为刘邦统一天下立下汗马功劳,被誉为"兵仙"、"国士无双"。精通兵法,善于用兵。
|
||||
- **初始属性倾向**:策略突击型(根据敌方阵容制定战术)
|
||||
- **职业定位**:warrior(兵仙战士)
|
||||
- **能力成长方向**:
|
||||
- 背水战术:根据战场情况调整战术
|
||||
- 侧翼突袭:从侧翼发动强力政击
|
||||
- 指挥增益:提升自身攻击力和速度
|
||||
|
||||
### 27. 张良
|
||||
- **历史简介**:汉初三杰之一,杰出的谋士。为刘邦统一天下出谋划策,以智谋著称。精通黄老之道,晚年随赤松子云游。
|
||||
- **初始属性倾向**:智谋型(预测敌人行动并制定对策)
|
||||
- **职业定位**:mage(谋略法师)
|
||||
- **能力成长方向**:
|
||||
- 运筹帷幄:预测敌人行动并制定对策
|
||||
- 辅助强化:为自己提供强大的增益效果
|
||||
- 洞察弱点:识别并利用敌人弱点
|
||||
|
||||
### 28. 萧何
|
||||
- **历史简介**:汉初三杰之一,西汉开国功臣。刘邦的重要助手,负责后勤保障和制度建设。制定《九章律》,为汉朝建立完整的法律制度。
|
||||
- **初始属性倾向**:后勤型(提供持续资源补给)
|
||||
- **职业定位**:support(后勤辅助)
|
||||
- **能力成长方向**:
|
||||
- 后勤保障:持续获得资源补给
|
||||
- 治理效率:提升自身行动效率
|
||||
- 法律约束:通过规则限制敌人行动
|
||||
|
||||
### 29. 陈平
|
||||
- **历史简介**:秦末起义领袖,与吴广一起发动中国历史上第一次大规模农民起义,提出"王侯将相宁有种乎"。
|
||||
- **初始属性倾向**:革命型(高士气和群体召唤)
|
||||
- **职业定位**:warrior(起义领袖)
|
||||
- **能力成长方向**:
|
||||
- 王侯将相:提升所有属性
|
||||
- 农民起义:召唤农民士兵协同作战
|
||||
- 士气鼓舞:战斗时间越长攻击力越高
|
||||
|
||||
### 30. 英布
|
||||
- **历史简介**:秦末汉初名将,初随项羽,后归附刘邦。勇猛善战,被称为"万人敌"。
|
||||
- **初始属性倾向**:狂战士型(极高攻击力和突进)
|
||||
- **职业定位**:warrior(狂战士)
|
||||
- **能力成长方向**:
|
||||
- 万人敌:对多目标伤害提升
|
||||
- 勇猛突进:冲锋技能冷却降低
|
||||
- 背叛之力:每次转换阵营获得增益
|
||||
|
||||
### 31. 彭越
|
||||
- **历史简介**:西汉开国功臣,刘邦的好友和重要将领。参与楚汉战争,屡建战功。
|
||||
- **初始属性倾向**:忠诚型(高防御和坚韧)
|
||||
- **职业定位**:warrior(忠诚卫士)
|
||||
- **能力成长方向**:
|
||||
- 忠诚不二:防御力持续提升
|
||||
- 补过拾遮:吸收伤害保护友军
|
||||
- 老兵不死:生命值越低防御越高
|
||||
|
||||
### 32. 周勃
|
||||
- **历史简介**:西汉开国功臣,刘邦的重要谋士和将领。善于谋略,多次为刘邦出谋划策。
|
||||
- **初始属性倾向**:谋略型(策略控制和辅助)
|
||||
- **职业定位**:support(谋士辅助)
|
||||
- **能力成长方向**:
|
||||
- 谋略百出:提供多种辅助效果
|
||||
- 奇计辭出:随机获得强力技能
|
||||
- 运筹帷幄:降低敌人命中率
|
||||
|
||||
## 女性英雄角色
|
||||
|
||||
### 33. 西施
|
||||
- **历史简介**:春秋时期越国美女,被越王勾践献给吴王夫差,以美色迷惑吴王,为越国复仇计划发挥了重要作用。
|
||||
- **初始属性倾向**:迷惑型(通过美色影响敌人)
|
||||
- **职业定位**:support(控制辅助)
|
||||
- **能力成长方向**:
|
||||
- 迷惑效果:使敌人混乱攻击队友
|
||||
- 魅力增益:通过魅力获得属性加成
|
||||
- 舞蹈强化:通过舞蹈获得战斗增益
|
||||
|
||||
### 34. 赵姬
|
||||
- **历史简介**:战国时期赵国公主,秦始皇母亲。以舞技和智谋闻名,对秦国政治有重要影响。
|
||||
- **初始属性倾向**:智谋舞姬型(控制和增益)
|
||||
- **职业定位**:support(宫廷辅助)
|
||||
|
||||
### 22. 貂蝉
|
||||
- **历史简介**:中国古代四大美女之一,传说在东汉末年以连环计离间董卓与吕布,为诛杀国贼做出贡献。
|
||||
- **初始属性倾向**:连环型(同时影响多个敌人)
|
||||
- **能力成长方向**:
|
||||
- 连环控制:同时影响多个敌人
|
||||
- 离间效果:降低敌人协同作战能力
|
||||
- 美人计策:根据敌人数量调整效果
|
||||
|
||||
### 23. 妇好
|
||||
- **历史简介**:商朝君主武丁的王后,是中国历史上第一位有据可查的女性军事统帅,曾多次率军出征,战功卓著。
|
||||
- **初始属性倾向**:征战型(高攻击力和范围伤害)
|
||||
- **能力成长方向**:
|
||||
- 征战强化:提升攻击力和范围伤害
|
||||
- 统帅能力:增强自身防御和生命值
|
||||
- 王后爆发:关键时刻爆发强大战斗力
|
||||
|
||||
### 24. 钟无艳
|
||||
- **历史简介**:战国时期齐国无盐邑人,才德兼备但相貌丑陋。后成为齐宣王的王后,以智慧和才能辅佐君王。
|
||||
- **初始属性倾向**:才德型(高智力和技能效果)
|
||||
- **能力成长方向**:
|
||||
- 才德增益:提升智力和技能效果
|
||||
- 丑貌反差:通过反差获得特殊能力
|
||||
- 王后守护:危急时刻保护自身
|
||||
|
||||
### 25. 李夫人
|
||||
- **历史简介**:汉武帝宠妃,出身倡家,以美貌和才艺著称。死后被追封为孝武皇后,是中国历史上第一位追封的皇后。
|
||||
- **初始属性倾向**:才艺型(通过歌舞获得增益)
|
||||
- **能力成长方向**:
|
||||
- 才艺强化:通过歌舞获得增益效果
|
||||
- 美貌魅力:提升魅力影响技能
|
||||
- 追封效果:特殊状态下技能增强
|
||||
|
||||
## 英雄能力成长体系
|
||||
|
||||
### 职业系统 (HType)
|
||||
1. **warrior (战士)** - 高生命、高防御、近战输出
|
||||
- 代表英雄:刘邦、项羽、韩信、白起、吴起、乐毅、陈平、英布、彭越
|
||||
|
||||
2. **remote (远程)** - 高攻速、高暴击、远程输出
|
||||
- 代表英雄:赵武灵王
|
||||
|
||||
3. **mage (法师)** - 高魔法攻击、元素控制
|
||||
- 代表英雄:屈原、春申君、孙膑、田单、李斯、张良
|
||||
|
||||
4. **support (辅助)** - 治疗、增益、资源支援
|
||||
- 代表英雄:萧何、增子、孟尝君、范蠡、管仲、晏婴、周勃、西施、赵姬
|
||||
|
||||
5. **assassin (刺客)** - 超高暴击、高速度、高爆发
|
||||
- 代表英雄:荆轲、伍子胥
|
||||
|
||||
### 初始属性倾向分类
|
||||
1. **攻击导向型** → warrior/remote
|
||||
2. **防御优先型** → warrior
|
||||
3. **突击型** → assassin/warrior
|
||||
4. **敏捷型** → assassin
|
||||
5. **狂战士型** → warrior
|
||||
6. **防御反击型** → warrior
|
||||
7. **机动型** → remote
|
||||
8. **控制型** → mage/support
|
||||
9. **领导型** → warrior/support
|
||||
10. **迷惑型** → support
|
||||
11. **元素型** → mage
|
||||
12. **辅助型** → support
|
||||
13. **谋略型** → mage/support
|
||||
14. **后勤型** → support
|
||||
15. **复仇型** → assassin
|
||||
|
||||
### 能力成长方向
|
||||
每种英雄都有3个具体的能力成长方向,针对特定属性进行强化:
|
||||
1. **数值型属性**:如攻击力、生命值、防御力等
|
||||
2. **效果型属性**:如暴击率、闪避率、技能冷却等
|
||||
3. **特殊型属性**:如独特的机制和技能组合
|
||||
|
||||
### 英雄统计
|
||||
- **春秋战国时期**:23位英雄
|
||||
- **楚汉争霸时期**:9位英雄
|
||||
- **女性英雄**:2位(可继续扩充)
|
||||
- **总计**:34位可玩英雄
|
||||
11
assets/script/heros2.md.meta
Normal file
11
assets/script/heros2.md.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"importer": "text",
|
||||
"imported": true,
|
||||
"uuid": "a0f43271-04b8-4076-ad98-59501e4cda5b",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
62
assets/script/heros2_table.md
Normal file
62
assets/script/heros2_table.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# 英雄设计 - 结构化表格
|
||||
|
||||
## 春秋战国时期英雄
|
||||
|
||||
| 序号 | 姓名 | 职业 | 初始AP | 初始HP | 初始MP | 初始DEF | 特性/天赋 | 属性倾向 | 能力成长方向1 | 能力成长方向2 | 能力成长方向3 |
|
||||
|------|------|------|---------|---------|---------|----------|------------|------------|----------------|----------------|----------------|
|
||||
| 1 | 孙武 | warrior | 15 | 120 | 80 | 8 | 兵圣战术 | 攻击导向型 | 攻击速度:提升普通攻击频率 | 范围伤害:增加技能攻击范围 | 暴击效果:提升暴击伤害倍数 |
|
||||
| 2 | 墨子 | warrior | 8 | 140 | 100 | 12 | 兼爱非攻 | 防御优先型 | 生命值:增加最大生命值 | 护盾效果:提升护盾技能强度 | 治疗效果:增强自我治疗能力 |
|
||||
| 3 | 商鞅 | assassin | 20 | 90 | 70 | 5 | 变法改革 | 突击型 | 攻击力:提升基础攻击力 | 技能冷却:减少技能冷却时间 | 移动速度:增加角色移动速度 |
|
||||
| 4 | 荆轲 | assassin | 22 | 80 | 60 | 3 | 刺杀专精 | 敏捷型 | 暴击率:增加暴击概率 | 闪避率:提升闪避攻击概率 | 穿透效果:增加攻击穿透能力 |
|
||||
| 5 | 白起 | warrior | 18 | 130 | 90 | 10 | 杀神降世 | 狂战士型 | 杀戮增益:击杀敌人后获得攻击力加成 | 持续伤害:攻击附带持续伤害效果 | 士气压制:降低敌人攻击力和士气 |
|
||||
| 6 | 廉颇 | warrior | 12 | 135 | 85 | 14 | 老将防御 | 防御反击型 | 防御力:提升基础防御能力 | 反击概率:受击时反击概率增加 | 老兵强化:随时间推移增强属性 |
|
||||
| 7 | 赵武灵王 | remote | 18 | 100 | 80 | 6 | 胡服骑射 | 机动型 | 远程伤害:提升远程攻击伤害 | 移动速度:增加角色移动速度 | 攻击速度:提升远程攻击频率 |
|
||||
| 8 | 苏秦 | mage | 10 | 95 | 120 | 7 | 合纵策略 | 控制型 | 控制时长:延长控制技能持续时间 | 范围控制:增加控制技能范围 | 策略效果:提升控制技能成功率 |
|
||||
| 9 | 张仪 | mage | 12 | 90 | 110 | 6 | 连横瓦解 | 瓦解型 | 削弱效果:降低敌人攻击力和防御力 | 迷惑概率:使敌人混乱攻击队友 | 分化能力:根据敌人数量调整效果 |
|
||||
| 10 | 屈原 | mage | 16 | 85 | 140 | 4 | 离骚诗韵 | 元素型 | 元素伤害:提升元素攻击伤害 | 低血增益:低血量时获得属性加成 | 诗韵效果:通过诗歌获得各种增益 |
|
||||
| 11 | 吴起 | warrior | 16 | 125 | 95 | 11 | 用兵如神 | 用兵型 | 用兵专精:提升攻击速度和移动速度 | 治军强化:增强自身防御和生命值 | 变法突进:根据战场情况调整战术 |
|
||||
| 12 | 孙膑 | mage | 14 | 92 | 135 | 6 | 兵法谋略 | 谋略型 | 围魏救赵:战术技能冷却降低 | 减灶诱敌:提升敌人受到的伤害 | 兵法奥义:魔法伤害大幅提升 |
|
||||
| 13 | 乐毅 | warrior | 17 | 128 | 88 | 10 | 统帅联军 | 统帅型 | 破城专精:对防御型敌人伤害提升 | 联军指挥:范围伤害增强 | 持久作战:战斗时间越长属性越强 |
|
||||
| 14 | 田单 | mage | 15 | 90 | 145 | 5 | 火牛阵法 | 创新型 | 火牛阵:火焰范围伤害 | 绝地反击:低血量时爆发强大战力 | 守城专精:防御状态下伤害提升 |
|
||||
| 15 | 范蠡 | support | 8 | 100 | 140 | 9 | 商贾智谋 | 智谋商贾型 | 卧薪尝胆:持续获得资源加成 | 商业奇才:提升金币收益 | 功成身退:危机时刻提供强大护盾 |
|
||||
| 16 | 伍子胥 | assassin | 21 | 85 | 75 | 4 | 复仇爆发 | 复仇型 | 血海深仇:对特定目标伤害大幅提升 | 鞭尸怨念:击杀敌人后获得额外伤害 | 刚烈之志:濒死时爆发极限战力 |
|
||||
| 17 | 管仲 | support | 9 | 108 | 125 | 8 | 改革强国 | 改革型 | 九合诸侯:提升团队整体属性 | 经济改革:增加资源获取 | 富国强兵:攻防双重加成 |
|
||||
| 18 | 晏婴 | support | 7 | 102 | 120 | 10 | 辩才智慧 | 辩才型 | 巧言善辩:延长控制效果时长 | 节俭美德:降低技能消耗 | 使楚不辱:反弹敌人部分伤害 |
|
||||
| 19 | 李斯 | mage | 17 | 87 | 130 | 4 | 法治统一 | 法治型 | 以法治国:强制性控制技能 | 统一天下:降低敌人抗性 | 焚书坑儒:魔法伤害爆发 |
|
||||
|
||||
## 楚汉争霸时期英雄
|
||||
|
||||
| 序号 | 姓名 | 职业 | 初始AP | 初始HP | 初始MP | 初始DEF | 特性/天赋 | 属性倾向 | 能力成长方向1 | 能力成长方向2 | 能力成长方向3 |
|
||||
|------|------|------|---------|---------|---------|----------|------------|------------|----------------|----------------|----------------|
|
||||
| 20 | 刘邦 | warrior | 15 | 125 | 85 | 9 | 领导统御 | 领导型 | 适应能力:根据战场情况调整属性 | 坚韧恢复:受伤后快速恢复能力 | 领导增益:提升自身各项属性 |
|
||||
| 21 | 项羽 | warrior | 19 | 140 | 80 | 11 | 霸王怒气 | 狂暴型 | 怒气增伤:攻击力随怒气值提升 | 冲锋击退:快速冲锋并击退敌人 | 悲剧爆发:濒死时爆发巨大威力 |
|
||||
| 22 | 韩信 | warrior | 16 | 120 | 90 | 8 | 兵仙战术 | 策略突击型 | 背水战术:根据战场情况调整战术 | 侧翼突袭:从侧翼发动强力攻击 | 指挥增益:提升自身攻击力和速度 |
|
||||
| 23 | 张良 | mage | 15 | 88 | 135 | 5 | 运筹帷幄 | 智谋型 | 运筹帷幄:预测敌人行动并制定对策 | 辅助强化:为自己提供强大的增益效果 | 洞察弱点:识别并利用敌人弱点 |
|
||||
| 24 | 萧何 | support | 8 | 115 | 145 | 10 | 后勤保障 | 后勤型 | 后勤保障:持续获得资源补给 | 治理效率:提升自身行动效率 | 法律约束:通过规则限制敌人行动 |
|
||||
| 25 | 陈平 | warrior | 13 | 118 | 95 | 7 | 起义领袖 | 革命型 | 王侯将相:提升所有属性 | 农民起义:召唤农民士兵协同作战 | 士气鼓舞:战斗时间越长攻击力越高 |
|
||||
| 26 | 英布 | warrior | 18 | 135 | 75 | 12 | 万人敌 | 狂战士型 | 万人敌:对多目标伤害提升 | 勇猛突进:冲锋技能冷却降低 | 背叛之力:每次转换阵营获得增益 |
|
||||
| 27 | 彭越 | warrior | 14 | 130 | 85 | 13 | 忠诚卫士 | 忠诚型 | 忠诚不二:防御力持续提升 | 补过拾遮:吸收伤害保护友军 | 老兵不死:生命值越低防御越高 |
|
||||
| 28 | 周勃 | support | 9 | 112 | 125 | 9 | 谋略百出 | 谋略型 | 谋略百出:提供多种辅助效果 | 奇计频出:随机获得强力技能 | 运筹帷幄:降低敌人命中率 |
|
||||
|
||||
## 女性英雄角色
|
||||
|
||||
| 序号 | 姓名 | 职业 | 初始AP | 初始HP | 初始MP | 初始DEF | 特性/天赋 | 属性倾向 | 能力成长方向1 | 能力成长方向2 | 能力成长方向3 |
|
||||
|------|------|------|---------|---------|---------|----------|------------|------------|----------------|----------------|----------------|
|
||||
| 29 | 西施 | support | 8 | 95 | 120 | 6 | 美人计 | 迷惑型 | 迷惑效果:使敌人混乱攻击队友 | 魅力增益:通过魅力获得属性加成 | 舞蹈强化:通过舞蹈获得战斗增益 |
|
||||
| 30 | 赵姬 | support | 9 | 92 | 125 | 5 | 宫廷舞技 | 智谋舞姬型 | 舞技控制:通过舞蹈控制敌人 | 宫廷智谋:提升控制技能效果 | 太后威严:增强团队整体属性 |
|
||||
| 31 | 貂蝉 | support | 10 | 88 | 115 | 4 | 连环计 | 连环型 | 连环控制:同时影响多个敌人 | 离间效果:降低敌人协同作战能力 | 美人计策:根据敌人数量调整效果 |
|
||||
| 32 | 妇好 | warrior | 17 | 115 | 95 | 11 | 女将统帅 | 征战型 | 征战强化:提升攻击力和范围伤害 | 统帅能力:增强自身防御和生命值 | 王后爆发:关键时刻爆发强大战斗力 |
|
||||
| 33 | 钟无艳 | support | 6 | 105 | 135 | 12 | 才德兼备 | 才德型 | 才德增益:提升智力和技能效果 | 丑貌反差:通过反差获得特殊能力 | 王后守护:危急时刻保护自身 |
|
||||
| 34 | 李夫人 | support | 7 | 90 | 140 | 5 | 歌舞才艺 | 才艺型 | 才艺强化:通过歌舞获得增益效果 | 美貌魅力:提升魅力影响技能 | 追封效果:特殊状态下技能增强 |
|
||||
|
||||
## 英雄职业分布统计
|
||||
|
||||
| 职业类型 | 英雄数量 | 代表英雄 |
|
||||
|----------|----------|----------|
|
||||
| warrior (战士) | 15 | 孙武、白起、刘邦、项羽、韩信等 |
|
||||
| mage (法师) | 8 | 苏秦、张仪、屈原、孙膑、张良等 |
|
||||
| support (辅助) | 12 | 墨子、萧何、西施、貂蝉等 |
|
||||
| assassin (刺客) | 2 | 荆轲、伍子胥 |
|
||||
| remote (远程) | 1 | 赵武灵王 |
|
||||
|
||||
**总计:34位英雄**
|
||||
11
assets/script/heros2_table.md.meta
Normal file
11
assets/script/heros2_table.md.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"importer": "text",
|
||||
"imported": true,
|
||||
"uuid": "a4506f9d-ae20-4d46-8946-e009d3ece18b",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
Reference in New Issue
Block a user