将必杀技 迁移到 skillconcom ,去除技能释放卡牌

This commit is contained in:
2025-07-14 10:52:43 +08:00
parent 9ebab375a9
commit 377c287eec
8 changed files with 1468 additions and 45 deletions

View File

@@ -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:"升级后奖励"},
}

View File

@@ -57,4 +57,5 @@ export enum GameEvent {
SKILL_STONE_UP = "SKILL_STONE_UP",
ShopOpen = "ShopOpen",
RestOpen = "RestOpen",
HeroLvUp = "HeroLvUp",
}

View 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;
}

View 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();
}

View 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个品质等级
- 支持等级调整功能
- 提供完整的使用示例和工具

View 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();
}

View File

@@ -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()

View File

@@ -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);
// }
// }
// }
// }
// }
}