aoe ++
This commit is contained in:
@@ -31,50 +31,81 @@ export class Skill extends ecs.Entity {
|
||||
angle:number=0,
|
||||
dmg:number=0
|
||||
) {
|
||||
|
||||
let FIGHTCON=parent.getComponent(FightConComp);
|
||||
const config = SkillSet[uuid];
|
||||
if (!config) return;
|
||||
if (!config) {
|
||||
console.error("[Skill] 技能配置不存在:", uuid);
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查施法者
|
||||
if (!caster) {
|
||||
console.error("[Skill] 施法者为空");
|
||||
return;
|
||||
}
|
||||
|
||||
// 加载预制体
|
||||
const path = `game/skills/${config.sp_name}`;
|
||||
const prefab = oops.res.get(path, Prefab);
|
||||
if (!prefab) {
|
||||
console.error("[Skill] 预制体加载失败:", path);
|
||||
return;
|
||||
}
|
||||
const node = instantiate(prefab);
|
||||
|
||||
// 设置节点属性
|
||||
node.parent = parent;
|
||||
node.setPosition(startPos);
|
||||
node.angle+=angle
|
||||
// console.log("加载预制体:",startPos,targetPos)
|
||||
console.log("[Skill]:node=>",startPos)
|
||||
// 添加技能组件
|
||||
const skillComp = node.getComponent(SkillCom); // 初始化技能参数
|
||||
skillComp.ap = caster.ap+dmg;
|
||||
const SComp = node.getComponent(SkillCom); // 初始化技能参数
|
||||
if (!SComp) {
|
||||
console.error("[Skill] 技能组件获取失败");
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("[Skill]:caster=>",caster,config.name+"scomp=>",SComp,"fightcon=>",FIGHTCON)
|
||||
|
||||
// 确保caster有必要的属性
|
||||
if (typeof caster.ap === 'undefined') {
|
||||
console.error("[Skill] caster.ap 未定义");
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof caster.box_group === 'undefined') {
|
||||
console.error("[Skill] caster.box_group 未定义");
|
||||
return;
|
||||
}
|
||||
|
||||
SComp.ap = caster.ap*config.ap/100;
|
||||
if(caster.fac==0){
|
||||
if(caster.is_master){
|
||||
skillComp.ap=Math.floor(skillComp.ap*(100+FIGHTCON.hero_buff.ATK)/100);
|
||||
SComp.ap=Math.floor(SComp.ap*(100+FIGHTCON.hero_buff.ATK)/100);
|
||||
}else{
|
||||
skillComp.ap=Math.floor(skillComp.ap*(100+FIGHTCON.friend_buff.ATK)/100);
|
||||
SComp.ap=Math.floor(SComp.ap*(100+FIGHTCON.friend_buff.ATK)/100);
|
||||
}
|
||||
}else{
|
||||
skillComp.ap=Math.floor(skillComp.ap*(100-FIGHTCON.enemy_buff.ATK)/100);
|
||||
SComp.ap=Math.floor(SComp.ap*(100-FIGHTCON.enemy_buff.ATK)/100);
|
||||
}
|
||||
skillComp.s_uuid = uuid;
|
||||
skillComp.animType = config.AnimType;
|
||||
skillComp.endType = config.endType;
|
||||
skillComp.speed = config.speed;
|
||||
skillComp.inTime = config.in;
|
||||
skillComp.atk_count = 0;
|
||||
skillComp.startPos = startPos
|
||||
skillComp.targetPos =targetPos
|
||||
skillComp.caster = caster;
|
||||
skillComp.prefabName = config.sp_name;
|
||||
skillComp.group = caster.box_group;
|
||||
skillComp.fac= caster.box_group==BoxSet.HERO?0:caster.box_group==BoxSet.MONSTER?1:2;
|
||||
SComp.ap=(100+dmg)/100*SComp.ap // master 主将 技能额外百分比加成
|
||||
console.log("[Skill]:caster.box_group=>",caster.box_group,config.name+"scomp.group=>",SComp.group)
|
||||
// 设置技能组件属性
|
||||
Object.assign(SComp, {
|
||||
s_uuid: uuid,
|
||||
animType: config.AnimType,
|
||||
speed: config.speed,
|
||||
atk_count: 0,
|
||||
startPos: startPos,
|
||||
targetPos: targetPos,
|
||||
caster: caster,
|
||||
prefabName: config.sp_name,
|
||||
group: caster.box_group,
|
||||
fac: caster.fac,
|
||||
animName: config.animName
|
||||
});
|
||||
|
||||
// console.log(config.sp_name+"技能配置",skillComp);
|
||||
// 初始化动画名称
|
||||
skillComp.animName = config.animName; // 从配置获取动画名称
|
||||
this.add(skillComp);
|
||||
|
||||
|
||||
this.add(SComp);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user