技能cd 完善
This commit is contained in:
@@ -137,7 +137,6 @@ export class Hero extends ecs.Entity {
|
||||
break
|
||||
}
|
||||
})
|
||||
hv.atk_skill=hero.skills[0]
|
||||
for(let i=0;i<hero.skills.length;i++){
|
||||
hv.skills.push({
|
||||
cd:0,
|
||||
|
||||
@@ -94,8 +94,6 @@ export class HeroViewComp extends CCComp {
|
||||
cd: number = 1.3; /**攻击速度 攻击间隔 */
|
||||
cd_buff:number=0;
|
||||
dis: number = 80;
|
||||
at: number = 0; /** 冷却时间 */
|
||||
atk_skill:number=0;
|
||||
skills:any[]=[]
|
||||
puncture:number=0; //穿刺敌人伤害后方敌人个数
|
||||
puncture_damage:number=0; //后伤害加成
|
||||
@@ -480,7 +478,7 @@ export class HeroViewComp extends CCComp {
|
||||
break
|
||||
case DebuffAttr.STUN:
|
||||
if(this.DEBUFF_STUN>0) return
|
||||
this.at=0 // 眩晕 cd归零
|
||||
this.skills[0].cd=0 // 眩晕 cd归零
|
||||
this.BUFFCOMP.in_yun(deV+FightSet.STUN_TIME) // 眩晕时间
|
||||
this.DEBUFF_STUN+=deV+FightSet.STUN_TIME // 眩晕时间
|
||||
// this.is_stop=true
|
||||
|
||||
@@ -103,7 +103,6 @@ export class Monster extends ecs.Entity {
|
||||
}
|
||||
|
||||
hv.cd = hero.cd
|
||||
hv.atk_skill=hero.skills[0]
|
||||
for(let i=0;i<hero.skills.length;i++){
|
||||
hv.skills.push({
|
||||
cd:0,
|
||||
|
||||
@@ -37,8 +37,7 @@ export class SkillConComp extends CCComp {
|
||||
onLoad(){
|
||||
this.HeroView=this.node.getComponent(HeroViewComp)
|
||||
// //console.log(this.HeroView.uid+"=>"+this.HeroView.hero_name+"=> SkillConComp onLoad")
|
||||
this.on(GameEvent.CastHeroSkill,this.cast_master_skill,this)
|
||||
this.on(GameEvent.MaxSkill,this.use_max_skill,this)
|
||||
|
||||
|
||||
}
|
||||
start() {
|
||||
@@ -51,11 +50,11 @@ export class SkillConComp extends CCComp {
|
||||
if(this.HeroView.DEBUFF_STUN <= 0&&this.HeroView.DEBUFF_FROST <= 0) {
|
||||
for(let i=0;i<this.HeroView.skills.length;i++){
|
||||
this.HeroView.skills[i].cd += dt;
|
||||
if(this.HeroView.skills[i].cd > this.HeroView.skills[i].cd_max){
|
||||
if(this.HeroView.skills[i].cd > (i==0?this.count_cd(this.HeroView.skills[i].cd_max,this.HeroView):this.HeroView.skills[i].cd_max)){
|
||||
let sc=SkillSet[this.HeroView.skills[i].uuid]
|
||||
if(!sc) return
|
||||
if(sc.SType==SType.damage&&!this.HeroView.is_atking) return
|
||||
this.castSkill(sc,false,0)
|
||||
this.castSkill(sc)
|
||||
this.HeroView.skills[i].cd = 0
|
||||
}
|
||||
}
|
||||
@@ -91,35 +90,29 @@ export class SkillConComp extends CCComp {
|
||||
}
|
||||
}
|
||||
|
||||
cast_master_skill(e:string,uuid:any){
|
||||
if(!this.HeroView) return
|
||||
if(this.HeroView.fac==FacSet.MON) return
|
||||
//console.log("hart cast_skill",uuid ,e)
|
||||
const config = SkillSet[uuid];
|
||||
this.castSkill(config,false,this.HeroView.skill_dmg)
|
||||
count_cd(cd:number,view:HeroViewComp){
|
||||
|
||||
// 汇总DEBUFF_DECD,不再按次数减少,改为按时间减少
|
||||
let decd = 0;
|
||||
for (let i = view.DEBUFF_DECDS.length - 1; i >= 0; i--) {
|
||||
decd += view.DEBUFF_DECDS[i].value;
|
||||
// 不再在这里减少duration,改为在update中按时间减少
|
||||
}
|
||||
let bcd=0
|
||||
for (let i = view.BUFF_CDS.length - 1; i >= 0; i--) {
|
||||
bcd += view.BUFF_CDS[i].value;
|
||||
// 不再在这里减少duration,改为在update中按时间减少
|
||||
}
|
||||
return cd/((bcd+decd)/100+1)
|
||||
}
|
||||
/** 施放技能 */
|
||||
castSkill(config: typeof SkillSet[keyof typeof SkillSet],is_wfuny:boolean=false,dmg:number=0) {
|
||||
castSkill(config: typeof SkillSet[keyof typeof SkillSet]) {
|
||||
// //console.log(view.uuid+"=>"+view.hero_name+"施放技能:"+config.uuid);
|
||||
|
||||
this.doSkill(config,is_wfuny,dmg);
|
||||
|
||||
|
||||
let wfuny=this.check_wfuny()
|
||||
let dmg=0
|
||||
this.doSkill(config,wfuny,dmg);
|
||||
}
|
||||
|
||||
use_max_skill(e:GameEvent,data:any){
|
||||
if(!this.HeroView) return
|
||||
if(this.HeroView.fac==FacSet.MON) return
|
||||
//console.log("[SkillConComp]:use_max_skill:",data)
|
||||
this.skill_id_counter++;
|
||||
this.aoe_queues.push({
|
||||
id: this.skill_id_counter,
|
||||
s_uuid:data.uuid,
|
||||
count:SkillSet[data.uuid].maxC,
|
||||
damage:0})
|
||||
// 初始化该技能的计时器
|
||||
this.aoe_timers.set(this.skill_id_counter, 0);
|
||||
}
|
||||
|
||||
private doSkill(config: typeof SkillSet[keyof typeof SkillSet],is_wfuny:boolean=false,dmg:number=0) {
|
||||
// 添加节点有效性检查
|
||||
|
||||
Reference in New Issue
Block a user