将必杀技 迁移到 skillconcom ,去除技能释放卡牌
This commit is contained in:
@@ -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:"升级后奖励"},
|
||||
}
|
||||
|
||||
@@ -57,4 +57,5 @@ export enum GameEvent {
|
||||
SKILL_STONE_UP = "SKILL_STONE_UP",
|
||||
ShopOpen = "ShopOpen",
|
||||
RestOpen = "RestOpen",
|
||||
HeroLvUp = "HeroLvUp",
|
||||
}
|
||||
604
assets/script/game/common/config/LevelUpEnhancement.ts
Normal file
604
assets/script/game/common/config/LevelUpEnhancement.ts
Normal file
@@ -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;
|
||||
}
|
||||
258
assets/script/game/common/config/LevelUpEnhancementExample.ts
Normal file
258
assets/script/game/common/config/LevelUpEnhancementExample.ts
Normal file
@@ -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();
|
||||
}
|
||||
311
assets/script/game/common/config/README_LevelUpEnhancement.md
Normal file
311
assets/script/game/common/config/README_LevelUpEnhancement.md
Normal file
@@ -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个品质等级
|
||||
- 支持等级调整功能
|
||||
- 提供完整的使用示例和工具
|
||||
232
assets/script/game/common/config/TestEnhancement.ts
Normal file
232
assets/script/game/common/config/TestEnhancement.ts
Normal file
@@ -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();
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user