From 377c287eec98fb780622a1dac97fe291f223ba77 Mon Sep 17 00:00:00 2001 From: panw Date: Mon, 14 Jul 2025 10:52:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E5=BF=85=E6=9D=80=E6=8A=80=20=20?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E5=88=B0=20skillconcom=20,=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E9=87=8A=E6=94=BE=E5=8D=A1=E7=89=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/script/game/common/config/CardSet.ts | 39 +- assets/script/game/common/config/GameEvent.ts | 1 + .../game/common/config/LevelUpEnhancement.ts | 604 ++++++++++++++++++ .../config/LevelUpEnhancementExample.ts | 258 ++++++++ .../config/README_LevelUpEnhancement.md | 311 +++++++++ .../game/common/config/TestEnhancement.ts | 232 +++++++ assets/script/game/hero/HeroViewComp.ts | 4 +- assets/script/game/map/FightConComp.ts | 64 +- 8 files changed, 1468 insertions(+), 45 deletions(-) create mode 100644 assets/script/game/common/config/LevelUpEnhancement.ts create mode 100644 assets/script/game/common/config/LevelUpEnhancementExample.ts create mode 100644 assets/script/game/common/config/README_LevelUpEnhancement.md create mode 100644 assets/script/game/common/config/TestEnhancement.ts diff --git a/assets/script/game/common/config/CardSet.ts b/assets/script/game/common/config/CardSet.ts index 0500f3b1..4d5a4f91 100644 --- a/assets/script/game/common/config/CardSet.ts +++ b/assets/script/game/common/config/CardSet.ts @@ -139,6 +139,14 @@ export const SuperCardsType={ AOE:2, //伤害技能 范围伤害 BUFF:3, //buff技能 范围buff DEBUFF:4, //debuff技能 范围debuff + LEVELUP:5, //升级后奖励 +} +export const CTarget={ + MASTER:1, //主将 + FRIEND:2, //友方 + ALLY:3, //友方全体 + ENEMY:4, //敌人 + ALL:5, //所有 } export const Quality={ WHITE:1, @@ -147,26 +155,35 @@ export const Quality={ PURPLE:4, ORANGE:5, } + export const SuperCardsList=[3001,3002,3101,3102,3103,3104,3105,3106]; export const SuperCards={ - 3001:{uuid:3001,name:"附魔宝典",quality:Quality.WHITE,path:"3001",type:SuperCardsType.SPECIAL,value1:1,value2:0,value3:0, + 3001:{uuid:3001,name:"附魔宝典",quality:Quality.WHITE,path:"3001",CTarget:CTarget.MASTER,type:SuperCardsType.SPECIAL,value1:1,value2:0,value3:0, info:"攻击触发提高英雄/伙伴属性的效果,额外添加+1攻击力"}, - 3002:{uuid:3002,name:"附魔宝典",quality:Quality.WHITE,path:"3002",type:SuperCardsType.SPECIAL,value1:1,value2:0,value3:0, + 3002:{uuid:3002,name:"附魔宝典",quality:Quality.WHITE,path:"3002",CTarget:CTarget.MASTER,type:SuperCardsType.SPECIAL,value1:1,value2:0,value3:0, info:"攻击触发高英雄/伙伴属性的效果,额外添加+1生命值"}, - 3101:{uuid:3101,name:"陨石术",quality:Quality.GREEN,path:"3101",type:SuperCardsType.AOE,value1:SkillSet[6029].uuid,value2:10,value3:0, + 3101:{uuid:3101,name:"陨石术",quality:Quality.GREEN,path:"3101",CTarget:CTarget.ENEMY,type:SuperCardsType.AOE,value1:SkillSet[6029].uuid,value2:10,value3:0, info:"召唤大量火球攻击敌人,每个火球对敌人造成英雄攻击力的300%伤害"}, - 3102:{uuid:3102,name:"冰刺",quality:Quality.BLUE,path:"3102",type:SuperCardsType.AOE,value1:SkillSet[6027].uuid,value2:10,value3:0, + 3102:{uuid:3102,name:"冰刺",quality:Quality.BLUE,path:"3102",CTarget:CTarget.ENEMY,type:SuperCardsType.AOE,value1:SkillSet[6027].uuid,value2:10,value3:0, info:"召唤大量火球攻击敌人,每个火球对敌人造成英雄攻击力的300%伤害"}, - 3103:{uuid:3103,name:"潮汐",quality:Quality.BLUE,path:"3103",type:SuperCardsType.AOE,value1:SkillSet[6028].uuid,value2:10,value3:0, + 3103:{uuid:3103,name:"潮汐",quality:Quality.BLUE,path:"3103",CTarget:CTarget.ENEMY,type:SuperCardsType.AOE,value1:SkillSet[6028].uuid,value2:10,value3:0, info:"召唤大量火球攻击敌人,每个火球对敌人造成英雄攻击力的300%伤害"}, - 3104:{uuid:3104,name:"龙卷风",quality:Quality.BLUE,path:"3104",type:SuperCardsType.AOE,value1:SkillSet[6023].uuid,value2:10,value3:0, + 3104:{uuid:3104,name:"龙卷风",quality:Quality.BLUE,path:"3104",CTarget:CTarget.ENEMY,type:SuperCardsType.AOE,value1:SkillSet[6023].uuid,value2:10,value3:0, info:"召唤大量火球攻击敌人,每个火球对敌人造成英雄攻击力的300%伤害"}, - 3105:{uuid:3105,name:"火球风暴",quality:Quality.PURPLE,path:"3105",type:SuperCardsType.AOE,value1:SkillSet[6022].uuid,value2:10,value3:0, + 3105:{uuid:3105,name:"火球风暴",quality:Quality.PURPLE,path:"3105",CTarget:CTarget.ENEMY,type:SuperCardsType.AOE,value1:SkillSet[6022].uuid,value2:10,value3:0, info:"召唤大量火球攻击敌人,每个火球对敌人造成英雄攻击力的300%伤害"}, - 3106:{uuid:3106,name:"冰雨",quality:Quality.PURPLE,path:"3106",type:SuperCardsType.AOE,value1:SkillSet[6020].uuid,value2:3,value3:0, + 3106:{uuid:3106,name:"冰雨",quality:Quality.PURPLE,path:"3106",CTarget:CTarget.ENEMY,type:SuperCardsType.AOE,value1:SkillSet[6020].uuid,value2:3,value3:0, info:"召唤大量火球攻击敌人,每个火球对敌人造成英雄攻击力的300%伤害"}, - 3201:{uuid:3201,name:"极速充能",quality:Quality.WHITE,path:"3201",type:SuperCardsType.BUFF,value1:10,value2:100,value3:0, + 3201:{uuid:3201,name:"极速充能",quality:Quality.WHITE,path:"3201",CTarget:CTarget.ALLY,type:SuperCardsType.BUFF,value1:10,value2:100,value3:0, info:"你的英雄/伙伴接下来的10次普通攻击速度提升100%"}, - 3301:{uuid:3301,name:"冰霜风暴",quality:Quality.WHITE,path:"3301",type:SuperCardsType.DEBUFF,value1:30,value2:10,value3:0, - info:"场上敌人获得30%的易伤,(下10次伤害)"}, + 3301:{uuid:3301,name:"冰霜风暴",quality:Quality.WHITE,path:"3301",CTarget:CTarget.ENEMY,type:SuperCardsType.DEBUFF,value1:30,value2:10,value3:0, + info:"场上敌人获得30%的易伤,(下10次伤害) 易伤:伤害提升30%"}, + 3401:{uuid:3401,name:"升级奖励",quality:Quality.WHITE,path:"3401",CTarget:CTarget.ENEMY,type:SuperCardsType.LEVELUP,value1:1,value2:0,value3:0, + info:"升级后奖励"}, + 3402:{uuid:3402,name:"升级奖励",quality:Quality.WHITE,path:"3402",CTarget:CTarget.ENEMY,type:SuperCardsType.LEVELUP,value1:1,value2:0,value3:0, + info:"升级后奖励"}, + 3403:{uuid:3403,name:"升级奖励",quality:Quality.WHITE,path:"3403",CTarget:CTarget.ENEMY,type:SuperCardsType.LEVELUP,value1:1,value2:0,value3:0, + info:"升级后奖励"}, + 3404:{uuid:3404,name:"升级奖励",quality:Quality.WHITE,path:"3404",CTarget:CTarget.ENEMY,type:SuperCardsType.LEVELUP,value1:1,value2:0,value3:0, + info:"升级后奖励"}, } diff --git a/assets/script/game/common/config/GameEvent.ts b/assets/script/game/common/config/GameEvent.ts index 12055177..14bb22c5 100644 --- a/assets/script/game/common/config/GameEvent.ts +++ b/assets/script/game/common/config/GameEvent.ts @@ -57,4 +57,5 @@ export enum GameEvent { SKILL_STONE_UP = "SKILL_STONE_UP", ShopOpen = "ShopOpen", RestOpen = "RestOpen", + HeroLvUp = "HeroLvUp", } \ No newline at end of file diff --git a/assets/script/game/common/config/LevelUpEnhancement.ts b/assets/script/game/common/config/LevelUpEnhancement.ts new file mode 100644 index 00000000..8c04cfd2 --- /dev/null +++ b/assets/script/game/common/config/LevelUpEnhancement.ts @@ -0,0 +1,604 @@ +/* + * 肉鸽游戏玩家升级强化选项配置表 + * 提供玩家升级后的属性强化选择 + */ + +import { BuffAttr } from "./SkillSet" +import { Quality } from "./CardSet" + +// 强化类型枚举 +export const EnhancementType = { + ATTACK: 1, // 攻击力强化 + HEALTH: 2, // 生命值强化 + ATTACK_SPEED: 3, // 攻击速度强化 + CRITICAL: 4, // 暴击率强化 + CRITICAL_DMG: 5, // 暴击伤害强化 + DODGE: 6, // 闪避率强化 + DEFENSE: 7, // 防御力强化 + SKILL_CD: 8, // 技能冷却强化 + SKILL_DMG: 9, // 技能伤害强化 + SPECIAL: 10, // 特殊效果强化 +} + +// 强化品质权重配置 +export const EnhancementQualityWeight = { + [Quality.WHITE]: 0.4, // 白色品质 40%概率 + [Quality.GREEN]: 0.3, // 绿色品质 30%概率 + [Quality.BLUE]: 0.2, // 蓝色品质 20%概率 + [Quality.PURPLE]: 0.08, // 紫色品质 8%概率 + [Quality.ORANGE]: 0.02, // 橙色品质 2%概率 +} + +// 强化选项配置表 +export const EnhancementOptions = { + // 攻击力强化选项 + [EnhancementType.ATTACK]: { + [Quality.WHITE]: { + name: "力量训练", + description: "攻击力 +5", + buffType: BuffAttr.ATK, + value: 5, + icon: "attack_white", + rarity: "common" + }, + [Quality.GREEN]: { + name: "武器精通", + description: "攻击力 +12", + buffType: BuffAttr.ATK, + value: 12, + icon: "attack_green", + rarity: "uncommon" + }, + [Quality.BLUE]: { + name: "战斗大师", + description: "攻击力 +20", + buffType: BuffAttr.ATK, + value: 20, + icon: "attack_blue", + rarity: "rare" + }, + [Quality.PURPLE]: { + name: "战神附体", + description: "攻击力 +35", + buffType: BuffAttr.ATK, + value: 35, + icon: "attack_purple", + rarity: "epic" + }, + [Quality.ORANGE]: { + name: "毁灭之力", + description: "攻击力 +50", + buffType: BuffAttr.ATK, + value: 50, + icon: "attack_orange", + rarity: "legendary" + } + }, + + // 生命值强化选项 + [EnhancementType.HEALTH]: { + [Quality.WHITE]: { + name: "体质增强", + description: "生命值 +10", + buffType: BuffAttr.HP, + value: 10, + icon: "health_white", + rarity: "common" + }, + [Quality.GREEN]: { + name: "生命源泉", + description: "生命值 +25", + buffType: BuffAttr.HP, + value: 25, + icon: "health_green", + rarity: "uncommon" + }, + [Quality.BLUE]: { + name: "不朽之躯", + description: "生命值 +40", + buffType: BuffAttr.HP, + value: 40, + icon: "health_blue", + rarity: "rare" + }, + [Quality.PURPLE]: { + name: "永恒生命", + description: "生命值 +65", + buffType: BuffAttr.HP, + value: 65, + icon: "health_purple", + rarity: "epic" + }, + [Quality.ORANGE]: { + name: "不死之身", + description: "生命值 +100", + buffType: BuffAttr.HP, + value: 100, + icon: "health_orange", + rarity: "legendary" + } + }, + + // 攻击速度强化选项 + [EnhancementType.ATTACK_SPEED]: { + [Quality.WHITE]: { + name: "快速出手", + description: "攻击速度 +8%", + buffType: BuffAttr.ATK_CD, + value: -8, // 负值表示减少CD,即提升攻击速度 + icon: "speed_white", + rarity: "common" + }, + [Quality.GREEN]: { + name: "疾风连击", + description: "攻击速度 +15%", + buffType: BuffAttr.ATK_CD, + value: -15, + icon: "speed_green", + rarity: "uncommon" + }, + [Quality.BLUE]: { + name: "闪电打击", + description: "攻击速度 +25%", + buffType: BuffAttr.ATK_CD, + value: -25, + icon: "speed_blue", + rarity: "rare" + }, + [Quality.PURPLE]: { + name: "时间加速", + description: "攻击速度 +40%", + buffType: BuffAttr.ATK_CD, + value: -40, + icon: "speed_purple", + rarity: "epic" + }, + [Quality.ORANGE]: { + name: "无限连击", + description: "攻击速度 +60%", + buffType: BuffAttr.ATK_CD, + value: -60, + icon: "speed_orange", + rarity: "legendary" + } + }, + + // 暴击率强化选项 + [EnhancementType.CRITICAL]: { + [Quality.WHITE]: { + name: "精准打击", + description: "暴击率 +5%", + buffType: BuffAttr.CRITICAL, + value: 5, + icon: "crit_white", + rarity: "common" + }, + [Quality.GREEN]: { + name: "致命瞄准", + description: "暴击率 +12%", + buffType: BuffAttr.CRITICAL, + value: 12, + icon: "crit_green", + rarity: "uncommon" + }, + [Quality.BLUE]: { + name: "弱点洞察", + description: "暴击率 +20%", + buffType: BuffAttr.CRITICAL, + value: 20, + icon: "crit_blue", + rarity: "rare" + }, + [Quality.PURPLE]: { + name: "必杀一击", + description: "暴击率 +30%", + buffType: BuffAttr.CRITICAL, + value: 30, + icon: "crit_purple", + rarity: "epic" + }, + [Quality.ORANGE]: { + name: "绝对暴击", + description: "暴击率 +45%", + buffType: BuffAttr.CRITICAL, + value: 45, + icon: "crit_orange", + rarity: "legendary" + } + }, + + // 暴击伤害强化选项 + [EnhancementType.CRITICAL_DMG]: { + [Quality.WHITE]: { + name: "重击训练", + description: "暴击伤害 +15%", + buffType: BuffAttr.CRITICAL_DMG, + value: 15, + icon: "critdmg_white", + rarity: "common" + }, + [Quality.GREEN]: { + name: "致命一击", + description: "暴击伤害 +25%", + buffType: BuffAttr.CRITICAL_DMG, + value: 25, + icon: "critdmg_green", + rarity: "uncommon" + }, + [Quality.BLUE]: { + name: "毁灭打击", + description: "暴击伤害 +40%", + buffType: BuffAttr.CRITICAL_DMG, + value: 40, + icon: "critdmg_blue", + rarity: "rare" + }, + [Quality.PURPLE]: { + name: "死亡之舞", + description: "暴击伤害 +60%", + buffType: BuffAttr.CRITICAL_DMG, + value: 60, + icon: "critdmg_purple", + rarity: "epic" + }, + [Quality.ORANGE]: { + name: "终结一击", + description: "暴击伤害 +100%", + buffType: BuffAttr.CRITICAL_DMG, + value: 100, + icon: "critdmg_orange", + rarity: "legendary" + } + }, + + // 闪避率强化选项 + [EnhancementType.DODGE]: { + [Quality.WHITE]: { + name: "灵活身法", + description: "闪避率 +5%", + buffType: BuffAttr.DODGE, + value: 5, + icon: "dodge_white", + rarity: "common" + }, + [Quality.GREEN]: { + name: "鬼魅步法", + description: "闪避率 +12%", + buffType: BuffAttr.DODGE, + value: 12, + icon: "dodge_green", + rarity: "uncommon" + }, + [Quality.BLUE]: { + name: "幻影迷踪", + description: "闪避率 +20%", + buffType: BuffAttr.DODGE, + value: 20, + icon: "dodge_blue", + rarity: "rare" + }, + [Quality.PURPLE]: { + name: "时空闪避", + description: "闪避率 +30%", + buffType: BuffAttr.DODGE, + value: 30, + icon: "dodge_purple", + rarity: "epic" + }, + [Quality.ORANGE]: { + name: "绝对闪避", + description: "闪避率 +45%", + buffType: BuffAttr.DODGE, + value: 45, + icon: "dodge_orange", + rarity: "legendary" + } + }, + + // 防御力强化选项 + [EnhancementType.DEFENSE]: { + [Quality.WHITE]: { + name: "铁布衫", + description: "防御力 +8%", + buffType: BuffAttr.DEF, + value: 8, + icon: "def_white", + rarity: "common" + }, + [Quality.GREEN]: { + name: "金刚不坏", + description: "防御力 +15%", + buffType: BuffAttr.DEF, + value: 15, + icon: "def_green", + rarity: "uncommon" + }, + [Quality.BLUE]: { + name: "护体神功", + description: "防御力 +25%", + buffType: BuffAttr.DEF, + value: 25, + icon: "def_blue", + rarity: "rare" + }, + [Quality.PURPLE]: { + name: "无敌金身", + description: "防御力 +40%", + buffType: BuffAttr.DEF, + value: 40, + icon: "def_purple", + rarity: "epic" + }, + [Quality.ORANGE]: { + name: "绝对防御", + description: "防御力 +60%", + buffType: BuffAttr.DEF, + value: 60, + icon: "def_orange", + rarity: "legendary" + } + }, + + // 技能冷却强化选项 + [EnhancementType.SKILL_CD]: { + [Quality.WHITE]: { + name: "快速施法", + description: "技能冷却 -8%", + buffType: BuffAttr.SKILL_CD, + value: -8, + icon: "skillcd_white", + rarity: "common" + }, + [Quality.GREEN]: { + name: "法术精通", + description: "技能冷却 -15%", + buffType: BuffAttr.SKILL_CD, + value: -15, + icon: "skillcd_green", + rarity: "uncommon" + }, + [Quality.BLUE]: { + name: "瞬发法术", + description: "技能冷却 -25%", + buffType: BuffAttr.SKILL_CD, + value: -25, + icon: "skillcd_blue", + rarity: "rare" + }, + [Quality.PURPLE]: { + name: "无限法术", + description: "技能冷却 -40%", + buffType: BuffAttr.SKILL_CD, + value: -40, + icon: "skillcd_purple", + rarity: "epic" + }, + [Quality.ORANGE]: { + name: "法术永动", + description: "技能冷却 -60%", + buffType: BuffAttr.SKILL_CD, + value: -60, + icon: "skillcd_orange", + rarity: "legendary" + } + }, + + // 技能伤害强化选项 + [EnhancementType.SKILL_DMG]: { + [Quality.WHITE]: { + name: "法术强化", + description: "技能伤害 +10%", + buffType: BuffAttr.SKILL_DMG, + value: 10, + icon: "skilldmg_white", + rarity: "common" + }, + [Quality.GREEN]: { + name: "法术增幅", + description: "技能伤害 +20%", + buffType: BuffAttr.SKILL_DMG, + value: 20, + icon: "skilldmg_green", + rarity: "uncommon" + }, + [Quality.BLUE]: { + name: "法术爆发", + description: "技能伤害 +35%", + buffType: BuffAttr.SKILL_DMG, + value: 35, + icon: "skilldmg_blue", + rarity: "rare" + }, + [Quality.PURPLE]: { + name: "法术毁灭", + description: "技能伤害 +55%", + buffType: BuffAttr.SKILL_DMG, + value: 55, + icon: "skilldmg_purple", + rarity: "epic" + }, + [Quality.ORANGE]: { + name: "法术终结", + description: "技能伤害 +80%", + buffType: BuffAttr.SKILL_DMG, + value: 80, + icon: "skilldmg_orange", + rarity: "legendary" + } + }, + + // 特殊效果强化选项 + [EnhancementType.SPECIAL]: { + [Quality.WHITE]: { + name: "风怒之力", + description: "攻击时有10%概率触发风怒", + buffType: BuffAttr.WFUNY, + value: 10, + icon: "special_white", + rarity: "common" + }, + [Quality.GREEN]: { + name: "穿刺箭矢", + description: "攻击穿透1个额外目标", + buffType: BuffAttr.PUNCTURE, + value: 1, + icon: "special_green", + rarity: "uncommon" + }, + [Quality.BLUE]: { + name: "冰冻打击", + description: "攻击有15%概率冰冻敌人", + buffType: BuffAttr.FROST_RATIO, + value: 15, + icon: "special_blue", + rarity: "rare" + }, + [Quality.PURPLE]: { + name: "眩晕重击", + description: "攻击有20%概率眩晕敌人", + buffType: BuffAttr.STUN_RATTO, + value: 20, + icon: "special_purple", + rarity: "epic" + }, + [Quality.ORANGE]: { + name: "多重打击", + description: "攻击穿透2个额外目标,伤害提升30%", + buffType: BuffAttr.PUNCTURE, + value: 2, + icon: "special_orange", + rarity: "legendary" + } + } +} + +// 强化选项接口定义 +export interface EnhancementOption { + name: string; + description: string; + buffType: number; + value: number; + icon: string; + rarity: string; +} + +// 获取随机强化选项 +export function getRandomEnhancementOptions(count: number = 3): EnhancementOption[] { + const options: EnhancementOption[] = []; + const enhancementTypes = Object.values(EnhancementType); + + // 随机选择强化类型 + const selectedTypes = []; + while (selectedTypes.length < count && enhancementTypes.length > 0) { + const randomIndex = Math.floor(Math.random() * enhancementTypes.length); + const type = enhancementTypes.splice(randomIndex, 1)[0]; + selectedTypes.push(type); + } + + // 为每个类型生成随机品质的选项 + selectedTypes.forEach(type => { + const quality = getRandomQuality(); + const option = EnhancementOptions[type]?.[quality]; + if (option) { + options.push(option); + } + }); + + return options; +} + +// 根据权重获取随机品质 +export function getRandomQuality(): number { + const random = Math.random(); + let cumulativeWeight = 0; + + for (const [quality, weight] of Object.entries(EnhancementQualityWeight)) { + cumulativeWeight += weight; + if (random <= cumulativeWeight) { + return parseInt(quality); + } + } + + return Quality.WHITE; // 默认返回白色品质 +} + +// 获取指定类型的强化选项(用于测试或特定需求) +export function getEnhancementOptionByType(type: number, quality: number): EnhancementOption | null { + return EnhancementOptions[type]?.[quality] || null; +} + +// 获取所有可用的强化类型 +export function getAllEnhancementTypes(): number[] { + return Object.values(EnhancementType); +} + +// 获取指定品质的所有强化选项 +export function getEnhancementOptionsByQuality(quality: number): EnhancementOption[] { + const options: EnhancementOption[] = []; + + for (const type of Object.values(EnhancementType)) { + const option = EnhancementOptions[type]?.[quality]; + if (option) { + options.push(option); + } + } + + return options; +} + +// 根据玩家等级调整强化选项(可选功能) +export function getLevelAdjustedEnhancementOptions(playerLevel: number, count: number = 3): EnhancementOption[] { + // 根据等级调整品质权重 + const levelAdjustedWeights = { ...EnhancementQualityWeight }; + + if (playerLevel >= 20) { + // 高等级玩家有更高概率获得稀有品质 + levelAdjustedWeights[Quality.WHITE] *= 0.8; + levelAdjustedWeights[Quality.GREEN] *= 1.1; + levelAdjustedWeights[Quality.BLUE] *= 1.2; + levelAdjustedWeights[Quality.PURPLE] *= 1.3; + levelAdjustedWeights[Quality.ORANGE] *= 1.5; + } + + // 重新归一化权重 + const totalWeight = Object.values(levelAdjustedWeights).reduce((sum, weight) => sum + weight, 0); + for (const quality in levelAdjustedWeights) { + levelAdjustedWeights[quality] /= totalWeight; + } + + // 使用调整后的权重生成选项 + const options: EnhancementOption[] = []; + const enhancementTypes = Object.values(EnhancementType); + + const selectedTypes = []; + while (selectedTypes.length < count && enhancementTypes.length > 0) { + const randomIndex = Math.floor(Math.random() * enhancementTypes.length); + const type = enhancementTypes.splice(randomIndex, 1)[0]; + selectedTypes.push(type); + } + + selectedTypes.forEach(type => { + const quality = getRandomQualityWithWeights(levelAdjustedWeights); + const option = EnhancementOptions[type]?.[quality]; + if (option) { + options.push(option); + } + }); + + return options; +} + +// 使用自定义权重获取随机品质 +function getRandomQualityWithWeights(weights: { [key: number]: number }): number { + const random = Math.random(); + let cumulativeWeight = 0; + + for (const [quality, weight] of Object.entries(weights)) { + cumulativeWeight += weight; + if (random <= cumulativeWeight) { + return parseInt(quality); + } + } + + return Quality.WHITE; +} \ No newline at end of file diff --git a/assets/script/game/common/config/LevelUpEnhancementExample.ts b/assets/script/game/common/config/LevelUpEnhancementExample.ts new file mode 100644 index 00000000..8cdec710 --- /dev/null +++ b/assets/script/game/common/config/LevelUpEnhancementExample.ts @@ -0,0 +1,258 @@ +/* + * 肉鸽游戏玩家升级强化系统使用示例 + * 展示如何在游戏中使用强化选项配置 + */ + +import { + getRandomEnhancementOptions, + getLevelAdjustedEnhancementOptions, + getEnhancementOptionByType, + EnhancementType, + EnhancementOption +} from "./LevelUpEnhancement" +import { BuffAttr } from "./SkillSet" +import { Quality } from "./CardSet" + +// 强化管理器类 +export class EnhancementManager { + private playerLevel: number = 1; + private appliedEnhancements: EnhancementOption[] = []; + + constructor(initialLevel: number = 1) { + this.playerLevel = initialLevel; + } + + // 玩家升级时调用,获取强化选项 + onPlayerLevelUp(): EnhancementOption[] { + console.log(`[EnhancementManager]: 玩家升级到 ${this.playerLevel + 1} 级,获取强化选项`); + + // 根据玩家等级获取调整后的强化选项 + const options = getLevelAdjustedEnhancementOptions(this.playerLevel + 1, 3); + + console.log(`[EnhancementManager]: 获得 ${options.length} 个强化选项:`, options); + return options; + } + + // 应用选中的强化选项 + applyEnhancement(option: EnhancementOption): boolean { + console.log(`[EnhancementManager]: 应用强化选项: ${option.name}`); + + // 记录应用的强化 + this.appliedEnhancements.push(option); + + // 根据强化类型应用对应的属性加成 + this.applyBuffToPlayer(option); + + return true; + } + + // 将强化效果应用到玩家属性 + private applyBuffToPlayer(option: EnhancementOption): void { + const buffType = option.buffType; + const value = option.value; + + console.log(`[EnhancementManager]: 应用Buff - 类型: ${buffType}, 数值: ${value}`); + + // 这里应该调用游戏中的属性系统来实际应用效果 + // 例如:dispatchEvent 到游戏事件系统 + this.dispatchEnhancementEvent(buffType, value); + } + + // 分发强化事件到游戏系统 + private dispatchEnhancementEvent(buffType: number, value: number): void { + // 这里应该调用游戏的事件系统 + // 例如:oops.message.dispatchEvent('EnhancementApplied', { buffType, value }); + console.log(`[EnhancementManager]: 分发强化事件 - buffType: ${buffType}, value: ${value}`); + } + + // 获取玩家当前等级 + getPlayerLevel(): number { + return this.playerLevel; + } + + // 设置玩家等级 + setPlayerLevel(level: number): void { + this.playerLevel = level; + } + + // 获取已应用的强化列表 + getAppliedEnhancements(): EnhancementOption[] { + return this.appliedEnhancements; + } + + // 获取特定类型的强化统计 + getEnhancementStats(): { [key: number]: number } { + const stats: { [key: number]: number } = {}; + + this.appliedEnhancements.forEach(enhancement => { + const buffType = enhancement.buffType; + if (!stats[buffType]) { + stats[buffType] = 0; + } + stats[buffType] += enhancement.value; + }); + + return stats; + } + + // 重置强化管理器 + reset(): void { + this.appliedEnhancements = []; + console.log("[EnhancementManager]: 强化管理器已重置"); + } +} + +// 强化UI管理器示例 +export class EnhancementUIManager { + private enhancementManager: EnhancementManager; + + constructor(enhancementManager: EnhancementManager) { + this.enhancementManager = enhancementManager; + } + + // 显示升级强化选择界面 + showLevelUpEnhancementUI(): void { + console.log("[EnhancementUIManager]: 显示升级强化选择界面"); + + // 获取强化选项 + const options = this.enhancementManager.onPlayerLevelUp(); + + // 这里应该显示UI界面,让玩家选择 + this.displayEnhancementOptions(options); + } + + // 显示强化选项 + private displayEnhancementOptions(options: EnhancementOption[]): void { + console.log("[EnhancementUIManager]: 显示强化选项:"); + + options.forEach((option, index) => { + console.log(`选项 ${index + 1}: ${option.name} - ${option.description} (${option.rarity})`); + }); + } + + // 处理玩家选择 + onPlayerSelectOption(optionIndex: number, options: EnhancementOption[]): void { + if (optionIndex >= 0 && optionIndex < options.length) { + const selectedOption = options[optionIndex]; + console.log(`[EnhancementUIManager]: 玩家选择了: ${selectedOption.name}`); + + // 应用选中的强化 + this.enhancementManager.applyEnhancement(selectedOption); + + // 关闭UI界面 + this.hideEnhancementUI(); + } + } + + // 隐藏强化UI + private hideEnhancementUI(): void { + console.log("[EnhancementUIManager]: 隐藏强化选择界面"); + } +} + +// 使用示例 +export function createEnhancementExample(): void { + console.log("=== 肉鸽游戏强化系统使用示例 ==="); + + // 创建强化管理器 + const enhancementManager = new EnhancementManager(5); + + // 创建UI管理器 + const uiManager = new EnhancementUIManager(enhancementManager); + + // 模拟玩家升级 + console.log("\n--- 模拟玩家升级 ---"); + enhancementManager.setPlayerLevel(10); + uiManager.showLevelUpEnhancementUI(); + + // 模拟玩家选择强化选项 + console.log("\n--- 模拟玩家选择强化选项 ---"); + const options = getRandomEnhancementOptions(3); + uiManager.onPlayerSelectOption(0, options); + + // 显示强化统计 + console.log("\n--- 强化统计 ---"); + const stats = enhancementManager.getEnhancementStats(); + console.log("当前强化统计:", stats); + + // 测试特定强化选项 + console.log("\n--- 测试特定强化选项 ---"); + const attackOption = getEnhancementOptionByType(EnhancementType.ATTACK, Quality.BLUE); + if (attackOption) { + console.log("获取攻击力强化选项:", attackOption); + enhancementManager.applyEnhancement(attackOption); + } + + // 显示最终统计 + console.log("\n--- 最终强化统计 ---"); + const finalStats = enhancementManager.getEnhancementStats(); + console.log("最终强化统计:", finalStats); +} + +// 强化选项预览工具 +export class EnhancementPreviewTool { + // 预览所有强化选项 + static previewAllEnhancements(): void { + console.log("=== 所有强化选项预览 ==="); + + const types = [ + { name: "攻击力", type: EnhancementType.ATTACK }, + { name: "生命值", type: EnhancementType.HEALTH }, + { name: "攻击速度", type: EnhancementType.ATTACK_SPEED }, + { name: "暴击率", type: EnhancementType.CRITICAL }, + { name: "暴击伤害", type: EnhancementType.CRITICAL_DMG }, + { name: "闪避率", type: EnhancementType.DODGE }, + { name: "防御力", type: EnhancementType.DEFENSE }, + { name: "技能冷却", type: EnhancementType.SKILL_CD }, + { name: "技能伤害", type: EnhancementType.SKILL_DMG }, + { name: "特殊效果", type: EnhancementType.SPECIAL } + ]; + + types.forEach(({ name, type }) => { + console.log(`\n--- ${name}强化选项 ---`); + const qualities = [Quality.WHITE, Quality.GREEN, Quality.BLUE, Quality.PURPLE, Quality.ORANGE]; + qualities.forEach(quality => { + const option = getEnhancementOptionByType(type, quality); + if (option) { + console.log(`${option.rarity}: ${option.name} - ${option.description}`); + } + }); + }); + } + + // 测试随机强化选项生成 + static testRandomGeneration(): void { + console.log("\n=== 测试随机强化选项生成 ==="); + + for (let i = 0; i < 5; i++) { + console.log(`\n第 ${i + 1} 次随机生成:`); + const options = getRandomEnhancementOptions(3); + options.forEach((option, index) => { + console.log(` 选项 ${index + 1}: ${option.name} (${option.rarity}) - ${option.description}`); + }); + } + } + + // 测试等级调整功能 + static testLevelAdjustment(): void { + console.log("\n=== 测试等级调整功能 ==="); + + const levels = [1, 10, 20, 30]; + levels.forEach(level => { + console.log(`\n玩家等级 ${level} 的强化选项:`); + const options = getLevelAdjustedEnhancementOptions(level, 3); + options.forEach((option, index) => { + console.log(` 选项 ${index + 1}: ${option.name} (${option.rarity}) - ${option.description}`); + }); + }); + } +} + +// 导出使用示例函数 +export function runEnhancementExamples(): void { + // 运行所有示例 + createEnhancementExample(); + EnhancementPreviewTool.previewAllEnhancements(); + EnhancementPreviewTool.testRandomGeneration(); + EnhancementPreviewTool.testLevelAdjustment(); +} \ No newline at end of file diff --git a/assets/script/game/common/config/README_LevelUpEnhancement.md b/assets/script/game/common/config/README_LevelUpEnhancement.md new file mode 100644 index 00000000..c8983440 --- /dev/null +++ b/assets/script/game/common/config/README_LevelUpEnhancement.md @@ -0,0 +1,311 @@ +# 肉鸽游戏玩家升级强化系统 + +## 概述 + +这是一个为肉鸽游戏设计的玩家升级强化选项配置系统。当玩家升级时,系统会提供多个强化选项供玩家选择,每个选项都会永久提升玩家的某项属性。 + +## 系统特性 + +### 1. 强化类型 +系统支持以下10种强化类型: +- **攻击力强化** - 提升基础攻击力 +- **生命值强化** - 提升最大生命值 +- **攻击速度强化** - 减少攻击冷却时间 +- **暴击率强化** - 提升暴击概率 +- **暴击伤害强化** - 提升暴击伤害倍率 +- **闪避率强化** - 提升闪避概率 +- **防御力强化** - 提升伤害减免 +- **技能冷却强化** - 减少技能冷却时间 +- **技能伤害强化** - 提升技能伤害 +- **特殊效果强化** - 提供特殊战斗效果 + +### 2. 品质系统 +每个强化类型都有5个品质等级: +- **白色 (Common)** - 40% 出现概率,基础强化 +- **绿色 (Uncommon)** - 30% 出现概率,中等强化 +- **蓝色 (Rare)** - 20% 出现概率,强力强化 +- **紫色 (Epic)** - 8% 出现概率,史诗强化 +- **橙色 (Legendary)** - 2% 出现概率,传说强化 + +### 3. 等级调整 +系统会根据玩家等级自动调整强化选项的品质分布: +- 低等级玩家:偏向基础品质 +- 高等级玩家(20级以上):更高概率获得稀有品质 + +## 文件结构 + +``` +assets/script/game/common/config/ +├── LevelUpEnhancement.ts # 核心强化配置 +├── LevelUpEnhancementExample.ts # 使用示例 +└── README_LevelUpEnhancement.md # 本文档 +``` + +## 使用方法 + +### 1. 基础使用 + +```typescript +import { + getRandomEnhancementOptions, + EnhancementType, + Quality +} from "./LevelUpEnhancement" + +// 获取3个随机强化选项 +const options = getRandomEnhancementOptions(3); + +// 获取指定类型和品质的强化选项 +const attackOption = getEnhancementOptionByType(EnhancementType.ATTACK, Quality.BLUE); +``` + +### 2. 等级调整使用 + +```typescript +import { getLevelAdjustedEnhancementOptions } from "./LevelUpEnhancement" + +// 根据玩家等级获取调整后的强化选项 +const playerLevel = 25; +const options = getLevelAdjustedEnhancementOptions(playerLevel, 3); +``` + +### 3. 完整管理器使用 + +```typescript +import { EnhancementManager, EnhancementUIManager } from "./LevelUpEnhancementExample" + +// 创建强化管理器 +const enhancementManager = new EnhancementManager(1); + +// 创建UI管理器 +const uiManager = new EnhancementUIManager(enhancementManager); + +// 玩家升级时 +enhancementManager.setPlayerLevel(10); +const options = enhancementManager.onPlayerLevelUp(); + +// 玩家选择强化选项 +uiManager.onPlayerSelectOption(0, options); +``` + +## 强化选项配置 + +### 攻击力强化示例 +```typescript +[EnhancementType.ATTACK]: { + [Quality.WHITE]: { + name: "力量训练", + description: "攻击力 +5", + buffType: BuffAttr.ATK, + value: 5, + icon: "attack_white", + rarity: "common" + }, + [Quality.BLUE]: { + name: "战斗大师", + description: "攻击力 +20", + buffType: BuffAttr.ATK, + value: 20, + icon: "attack_blue", + rarity: "rare" + } + // ... 其他品质 +} +``` + +### 攻击速度强化示例 +```typescript +[EnhancementType.ATTACK_SPEED]: { + [Quality.GREEN]: { + name: "疾风连击", + description: "攻击速度 +15%", + buffType: BuffAttr.ATK_CD, + value: -15, // 负值表示减少CD + icon: "speed_green", + rarity: "uncommon" + } +} +``` + +## 强化数值参考 + +### 攻击力强化 +- 白色: +5 攻击力 +- 绿色: +12 攻击力 +- 蓝色: +20 攻击力 +- 紫色: +35 攻击力 +- 橙色: +50 攻击力 + +### 生命值强化 +- 白色: +10 生命值 +- 绿色: +25 生命值 +- 蓝色: +40 生命值 +- 紫色: +65 生命值 +- 橙色: +100 生命值 + +### 攻击速度强化 +- 白色: +8% 攻击速度 +- 绿色: +15% 攻击速度 +- 蓝色: +25% 攻击速度 +- 紫色: +40% 攻击速度 +- 橙色: +60% 攻击速度 + +## 集成到现有系统 + +### 1. 与英雄系统集成 + +```typescript +// 在HeroViewComp.ts的to_update方法中添加 +to_update() { + if(!this.is_master) return + + // 原有的升级逻辑 + oops.message.dispatchEvent(GameEvent.HeroLvUp,{lv:this.lv}) + this.lv+=1 + this.next_exp=getUpExp(this.lv) + + // 新增:触发强化选择 + this.triggerEnhancementSelection(); +} + +private triggerEnhancementSelection() { + const options = getLevelAdjustedEnhancementOptions(this.lv, 3); + // 显示强化选择UI + oops.message.dispatchEvent('ShowEnhancementUI', { options }); +} +``` + +### 2. 与事件系统集成 + +```typescript +// 监听强化选择事件 +this.on('EnhancementSelected', this.onEnhancementSelected, this); + +private onEnhancementSelected(option: EnhancementOption) { + // 应用强化效果 + this.applyEnhancement(option); +} + +private applyEnhancement(option: EnhancementOption) { + switch(option.buffType) { + case BuffAttr.ATK: + this.ap = this.ap * (100 + option.value) / 100; + break; + case BuffAttr.HP: + this.hp_max = this.hp_max * (100 + option.value) / 100; + this.hp = this.hp_max; // 升级时回满血 + break; + case BuffAttr.ATK_CD: + this.cd = this.cd * (100 + option.value) / 100; + break; + // ... 其他属性 + } +} +``` + +## 扩展功能 + +### 1. 添加新的强化类型 + +```typescript +// 在EnhancementType中添加新类型 +export const EnhancementType = { + // ... 现有类型 + NEW_TYPE: 11, // 新强化类型 +} + +// 在EnhancementOptions中添加配置 +export const EnhancementOptions = { + // ... 现有配置 + [EnhancementType.NEW_TYPE]: { + [Quality.WHITE]: { + name: "新强化", + description: "新效果", + buffType: BuffAttr.NEW_BUFF, + value: 10, + icon: "new_white", + rarity: "common" + } + // ... 其他品质 + } +} +``` + +### 2. 自定义品质权重 + +```typescript +// 修改品质权重 +export const CustomQualityWeight = { + [Quality.WHITE]: 0.5, // 提高白色品质概率 + [Quality.GREEN]: 0.25, + [Quality.BLUE]: 0.15, + [Quality.PURPLE]: 0.08, + [Quality.ORANGE]: 0.02, +} +``` + +### 3. 条件强化 + +```typescript +// 根据游戏状态调整强化选项 +export function getConditionalEnhancementOptions( + playerLevel: number, + gameState: any, + count: number = 3 +): EnhancementOption[] { + let options = getLevelAdjustedEnhancementOptions(playerLevel, count); + + // 根据游戏状态过滤或调整选项 + if (gameState.isBossFight) { + // Boss战中提供更多防御选项 + options = options.filter(option => + option.buffType === BuffAttr.DEF || + option.buffType === BuffAttr.HP + ); + } + + return options; +} +``` + +## 测试和调试 + +### 1. 运行示例 + +```typescript +import { runEnhancementExamples } from "./LevelUpEnhancementExample" + +// 运行所有示例 +runEnhancementExamples(); +``` + +### 2. 预览所有选项 + +```typescript +import { EnhancementPreviewTool } from "./LevelUpEnhancementExample" + +// 预览所有强化选项 +EnhancementPreviewTool.previewAllEnhancements(); + +// 测试随机生成 +EnhancementPreviewTool.testRandomGeneration(); + +// 测试等级调整 +EnhancementPreviewTool.testLevelAdjustment(); +``` + +## 注意事项 + +1. **数值平衡**: 强化数值需要根据游戏整体平衡进行调整 +2. **UI集成**: 需要创建相应的UI界面来显示强化选项 +3. **数据持久化**: 强化效果需要保存到玩家数据中 +4. **兼容性**: 确保与现有的Buff系统兼容 +5. **测试**: 充分测试各种强化组合的效果 + +## 更新日志 + +- **v1.0.0**: 初始版本,包含基础强化系统 +- 支持10种强化类型 +- 支持5个品质等级 +- 支持等级调整功能 +- 提供完整的使用示例和工具 \ No newline at end of file diff --git a/assets/script/game/common/config/TestEnhancement.ts b/assets/script/game/common/config/TestEnhancement.ts new file mode 100644 index 00000000..04b3458f --- /dev/null +++ b/assets/script/game/common/config/TestEnhancement.ts @@ -0,0 +1,232 @@ +/* + * 强化系统测试脚本 + * 用于验证强化系统是否正常工作 + */ + +import { + getRandomEnhancementOptions, + getLevelAdjustedEnhancementOptions, + getEnhancementOptionByType, + EnhancementType, + EnhancementOptions, + EnhancementQualityWeight +} from "./LevelUpEnhancement" +import { Quality } from "./CardSet" + +// 测试函数 +export function testEnhancementSystem(): void { + console.log("=== 强化系统测试开始 ==="); + + // 测试1: 基础随机生成 + testBasicRandomGeneration(); + + // 测试2: 等级调整功能 + testLevelAdjustment(); + + // 测试3: 特定选项获取 + testSpecificOptionRetrieval(); + + // 测试4: 品质权重验证 + testQualityWeights(); + + // 测试5: 配置完整性 + testConfigurationIntegrity(); + + console.log("=== 强化系统测试完成 ==="); +} + +// 测试基础随机生成 +function testBasicRandomGeneration(): void { + console.log("\n--- 测试基础随机生成 ---"); + + try { + const options = getRandomEnhancementOptions(3); + console.log(`✓ 成功生成 ${options.length} 个强化选项`); + + options.forEach((option, index) => { + console.log(` 选项 ${index + 1}: ${option.name} (${option.rarity}) - ${option.description}`); + }); + + // 验证选项完整性 + options.forEach(option => { + if (!option.name || !option.description || !option.buffType || !option.value) { + throw new Error(`选项数据不完整: ${JSON.stringify(option)}`); + } + }); + + console.log("✓ 所有选项数据完整"); + + } catch (error) { + console.error("✗ 基础随机生成测试失败:", error); + } +} + +// 测试等级调整功能 +function testLevelAdjustment(): void { + console.log("\n--- 测试等级调整功能 ---"); + + try { + const testLevels = [1, 10, 20, 30]; + + testLevels.forEach(level => { + const options = getLevelAdjustedEnhancementOptions(level, 3); + console.log(`✓ 等级 ${level} 生成 ${options.length} 个选项`); + + // 验证高等级是否有更多稀有品质 + const rareCount = options.filter(option => + option.rarity === "rare" || + option.rarity === "epic" || + option.rarity === "legendary" + ).length; + + console.log(` 稀有品质数量: ${rareCount}`); + }); + + console.log("✓ 等级调整功能正常"); + + } catch (error) { + console.error("✗ 等级调整功能测试失败:", error); + } +} + +// 测试特定选项获取 +function testSpecificOptionRetrieval(): void { + console.log("\n--- 测试特定选项获取 ---"); + + try { + // 测试攻击力强化 + const attackWhite = getEnhancementOptionByType(EnhancementType.ATTACK, Quality.WHITE); + const attackBlue = getEnhancementOptionByType(EnhancementType.ATTACK, Quality.BLUE); + + if (attackWhite && attackBlue) { + console.log(`✓ 攻击力强化选项获取成功`); + console.log(` 白色: ${attackWhite.name} - ${attackWhite.description}`); + console.log(` 蓝色: ${attackBlue.name} - ${attackBlue.description}`); + } else { + throw new Error("无法获取攻击力强化选项"); + } + + // 测试生命值强化 + const healthPurple = getEnhancementOptionByType(EnhancementType.HEALTH, Quality.PURPLE); + if (healthPurple) { + console.log(`✓ 生命值强化选项获取成功: ${healthPurple.name}`); + } + + // 测试攻击速度强化 + const speedOrange = getEnhancementOptionByType(EnhancementType.ATTACK_SPEED, Quality.ORANGE); + if (speedOrange) { + console.log(`✓ 攻击速度强化选项获取成功: ${speedOrange.name}`); + } + + console.log("✓ 特定选项获取功能正常"); + + } catch (error) { + console.error("✗ 特定选项获取测试失败:", error); + } +} + +// 测试品质权重验证 +function testQualityWeights(): void { + console.log("\n--- 测试品质权重验证 ---"); + + try { + const totalWeight = Object.values(EnhancementQualityWeight).reduce((sum, weight) => sum + weight, 0); + + if (Math.abs(totalWeight - 1.0) < 0.001) { + console.log(`✓ 品质权重总和为 1.0 (实际: ${totalWeight.toFixed(3)})`); + } else { + throw new Error(`品质权重总和不为 1.0: ${totalWeight}`); + } + + // 验证权重分布 + console.log("品质权重分布:"); + Object.entries(EnhancementQualityWeight).forEach(([quality, weight]) => { + const qualityName = getQualityName(parseInt(quality)); + console.log(` ${qualityName}: ${(weight * 100).toFixed(1)}%`); + }); + + console.log("✓ 品质权重验证通过"); + + } catch (error) { + console.error("✗ 品质权重验证失败:", error); + } +} + +// 测试配置完整性 +function testConfigurationIntegrity(): void { + console.log("\n--- 测试配置完整性 ---"); + + try { + const enhancementTypes = Object.values(EnhancementType); + const qualities = [Quality.WHITE, Quality.GREEN, Quality.BLUE, Quality.PURPLE, Quality.ORANGE]; + + let totalOptions = 0; + let missingOptions = 0; + + enhancementTypes.forEach(type => { + qualities.forEach(quality => { + totalOptions++; + const option = EnhancementOptions[type]?.[quality]; + if (!option) { + missingOptions++; + console.log(` 缺失: 类型${type} 品质${quality}`); + } + }); + }); + + console.log(`✓ 总选项数: ${totalOptions}`); + console.log(`✓ 缺失选项数: ${missingOptions}`); + console.log(`✓ 完整度: ${((totalOptions - missingOptions) / totalOptions * 100).toFixed(1)}%`); + + if (missingOptions === 0) { + console.log("✓ 配置完整性验证通过"); + } else { + console.log("⚠ 存在缺失配置,但不影响基本功能"); + } + + } catch (error) { + console.error("✗ 配置完整性测试失败:", error); + } +} + +// 辅助函数:获取品质名称 +function getQualityName(quality: number): string { + switch (quality) { + case Quality.WHITE: return "白色"; + case Quality.GREEN: return "绿色"; + case Quality.BLUE: return "蓝色"; + case Quality.PURPLE: return "紫色"; + case Quality.ORANGE: return "橙色"; + default: return "未知"; + } +} + +// 性能测试 +export function testPerformance(): void { + console.log("\n=== 性能测试开始 ==="); + + const iterations = 1000; + const startTime = Date.now(); + + for (let i = 0; i < iterations; i++) { + getRandomEnhancementOptions(3); + } + + const endTime = Date.now(); + const duration = endTime - startTime; + + console.log(`生成 ${iterations} 次强化选项耗时: ${duration}ms`); + console.log(`平均每次耗时: ${(duration / iterations).toFixed(2)}ms`); + + if (duration < 1000) { + console.log("✓ 性能测试通过"); + } else { + console.log("⚠ 性能较慢,建议优化"); + } +} + +// 导出测试函数 +export function runAllTests(): void { + testEnhancementSystem(); + testPerformance(); +} \ No newline at end of file diff --git a/assets/script/game/hero/HeroViewComp.ts b/assets/script/game/hero/HeroViewComp.ts index b808132c..9a040710 100644 --- a/assets/script/game/hero/HeroViewComp.ts +++ b/assets/script/game/hero/HeroViewComp.ts @@ -655,8 +655,8 @@ export class HeroViewComp extends CCComp { } to_update(){ - this.add_ap(getApIncrease(this.hero_uuid,this.lv,this.lv+1)) - this.add_hp_max(getHpIncrease(this.hero_uuid,this.lv,this.lv+1)) + if(!this.is_master) return + oops.message.dispatchEvent(GameEvent.HeroLvUp,{lv:this.lv}) this.lv+=1 this.next_exp=getUpExp(this.lv) this.BUFFCOMP.vmdata_update() diff --git a/assets/script/game/map/FightConComp.ts b/assets/script/game/map/FightConComp.ts index 4a29af40..0efb063e 100644 --- a/assets/script/game/map/FightConComp.ts +++ b/assets/script/game/map/FightConComp.ts @@ -196,12 +196,12 @@ export class FightConComp extends Component { } - /** 随机选择目标 */ - private pickRandomTarget(count: number=1): ecs.Entity[] { - let entities = ecs.query(ecs.allOf(MonModelComp)) - const shuffled = [...entities].sort(() => 0.5 - Math.random()); - return shuffled.slice(0, count); - } + // /** 随机选择目标 */ + // private pickRandomTarget(count: number=1): ecs.Entity[] { + // let entities = ecs.query(ecs.allOf(MonModelComp)) + // const shuffled = [...entities].sort(() => 0.5 - Math.random()); + // return shuffled.slice(0, count); + // } private clearAlls() { this.hero_buff=getBuffNum() @@ -227,37 +227,37 @@ export class FightConComp extends Component { this.skill_id_counter = 0; // 重置技能ID计数器 } - update(deltaTime: number) { - // 并行执行多个技能 - if (this.aoe_queues.length > 0) { - console.log("[FightConComp]:aoe_queues:",this.aoe_queues) + // update(deltaTime: number) { + // // 并行执行多个技能 + // if (this.aoe_queues.length > 0) { + // console.log("[FightConComp]:aoe_queues:",this.aoe_queues) - // 遍历所有技能,更新它们的计时器 - for (let i = this.aoe_queues.length - 1; i >= 0; i--) { - let skill = this.aoe_queues[i]; - let timer = this.aoe_timers.get(skill.id) || 0; + // // 遍历所有技能,更新它们的计时器 + // for (let i = this.aoe_queues.length - 1; i >= 0; i--) { + // let skill = this.aoe_queues[i]; + // let timer = this.aoe_timers.get(skill.id) || 0; - timer += deltaTime; - this.aoe_timers.set(skill.id, timer); + // timer += deltaTime; + // this.aoe_timers.set(skill.id, timer); - // 检查是否到达执行间隔 - if (timer >= this.AOE_INTERVAL) { - // 重置计时器 - this.aoe_timers.set(skill.id, 0); + // // 检查是否到达执行间隔 + // if (timer >= this.AOE_INTERVAL) { + // // 重置计时器 + // this.aoe_timers.set(skill.id, 0); - // 执行技能 - this.aoe_skill_execute(skill); - skill.count--; + // // 执行技能 + // this.aoe_skill_execute(skill); + // skill.count--; - // 如果技能执行完毕,从队列中移除 - if (skill.count <= 0) { - this.aoe_queues.splice(i, 1); - this.aoe_timers.delete(skill.id); - } - } - } - } - } + // // 如果技能执行完毕,从队列中移除 + // if (skill.count <= 0) { + // this.aoe_queues.splice(i, 1); + // this.aoe_timers.delete(skill.id); + // } + // } + // } + // } + // } }