diff --git a/assets/script/game/common/config/Mission.ts b/assets/script/game/common/config/Mission.ts index 4a12ac68..71951018 100644 --- a/assets/script/game/common/config/Mission.ts +++ b/assets/script/game/common/config/Mission.ts @@ -58,7 +58,7 @@ export enum FightSet { BLUE_GOLD=2,//蓝色金币 PURPLE_GOLD=3,//紫色金币 ORANGE_GOLD=4,//橙色金币 - BURN_COUNT=5,//默认易伤次数 + BURN_COUNT=5,//默认易伤次数 5秒 STUN_TIME=0.5,//默认晕时间 WEAPON_LV=2,//武器等级 SHIELD_LV=3,//护盾等级 diff --git a/assets/script/game/hero/HeroViewComp.ts b/assets/script/game/hero/HeroViewComp.ts index cf8fda3b..83f9148d 100644 --- a/assets/script/game/hero/HeroViewComp.ts +++ b/assets/script/game/hero/HeroViewComp.ts @@ -96,14 +96,14 @@ export class HeroViewComp extends CCComp { buff_debuff_down:number=0 skill_dmg:number=0 - BUFF_DEFS: Array<{value: number, count: number}> = [] //防御提升 - BUFF_ATKS: Array<{value: number, count: number}> = [] //攻击提升 - BUFF_CDS: Array<{value: number, count: number}> = [] //攻击加速 - BUFF_DEDOWN:Array<{value: number, count: number}> = [] //debuff 概率降低 + BUFF_DEFS: Array<{value: number, duration: number}> = [] //防御提升 + BUFF_ATKS: Array<{value: number, duration: number}> = [] //攻击提升 + BUFF_CDS: Array<{value: number, duration: number}> = [] //攻击加速 + BUFF_DEDOWN:Array<{value: number, duration: number}> = [] //debuff 概率降低 - DEBUFF_BURNS: Array<{value: number, count: number}> = [] //易伤 - DEBUFF_DEATKS: Array<{value: number, count: number}> = [] //减攻击 - DEBUFF_DECDS: Array<{value: number, count: number}> = [] //减攻击速度 + DEBUFF_BURNS: Array<{value: number, duration: number}> = [] //易伤 + DEBUFF_DEATKS: Array<{value: number, duration: number}> = [] //减攻击 + DEBUFF_DECDS: Array<{value: number, duration: number}> = [] //减攻击速度 DEBUFF_SLOW: number = 0; //减速 DEBUFF_FROST: number = 0; //冰冻 @@ -185,6 +185,9 @@ export class HeroViewComp extends CCComp { if(this.DEBUFF_STUN > 0){ this.DEBUFF_STUN -=dt; } + + // 更新所有按时间减少的buff和debuff + this.updateBuffsAndDebuffs(dt); this.in_stop(dt); // 处理伤害队列 this.processDamageQueue(); @@ -245,7 +248,7 @@ export class HeroViewComp extends CCComp { } check_cd(){ - return this.cd/((this.buff_cd+this.TALENT[BuffAttr.ATK_CD])/100+1) + return this.cd/((this.buff_cd+this.TALENT[BuffAttr.ATK_CD])/100+1) } count_cd(){ this.cd=this.check_cd() @@ -394,10 +397,7 @@ export class HeroViewComp extends CCComp { for(let i=0;i= 0; i--) { + this.BUFF_DEFS[i].duration -= dt; + if(this.BUFF_DEFS[i].duration <= 0) { + this.BUFF_DEFS.splice(i, 1); + } + } + + // 更新BUFF_ATKS + for(let i = this.BUFF_ATKS.length - 1; i >= 0; i--) { + this.BUFF_ATKS[i].duration -= dt; + if(this.BUFF_ATKS[i].duration <= 0) { + this.BUFF_ATKS.splice(i, 1); + } + } + + // 更新BUFF_CDS + for(let i = this.BUFF_CDS.length - 1; i >= 0; i--) { + this.BUFF_CDS[i].duration -= dt; + if(this.BUFF_CDS[i].duration <= 0) { + this.BUFF_CDS.splice(i, 1); + } + } + + // 更新BUFF_DEDOWN + for(let i = this.BUFF_DEDOWN.length - 1; i >= 0; i--) { + this.BUFF_DEDOWN[i].duration -= dt; + if(this.BUFF_DEDOWN[i].duration <= 0) { + this.BUFF_DEDOWN.splice(i, 1); + } + } + + // 更新DEBUFF_BURNS + for(let i = this.DEBUFF_BURNS.length - 1; i >= 0; i--) { + this.DEBUFF_BURNS[i].duration -= dt; + if(this.DEBUFF_BURNS[i].duration <= 0) { + this.DEBUFF_BURNS.splice(i, 1); + } + } + + // 更新DEBUFF_DEATKS + for(let i = this.DEBUFF_DEATKS.length - 1; i >= 0; i--) { + this.DEBUFF_DEATKS[i].duration -= dt; + if(this.DEBUFF_DEATKS[i].duration <= 0) { + this.DEBUFF_DEATKS.splice(i, 1); + } + } + + // 更新DEBUFF_DECDS + for(let i = this.DEBUFF_DECDS.length - 1; i >= 0; i--) { + this.DEBUFF_DECDS[i].duration -= dt; + if(this.DEBUFF_DECDS[i].duration <= 0) { + this.DEBUFF_DECDS.splice(i, 1); + } + } + } + + add_buff(buff:number,duration:number,type:number){ switch(type){ case BuffAttr.DEF: - this.BUFF_DEFS.push({value:buff,count:count}) + this.BUFF_DEFS.push({value:buff,duration:duration}) break case BuffAttr.ATK: - this.BUFF_ATKS.push({value:buff,count:count}) + this.BUFF_ATKS.push({value:buff,duration:duration}) break case BuffAttr.ATK_CD: - this.BUFF_CDS.push({value:buff,count:count}) + this.BUFF_CDS.push({value:buff,duration:duration}) break case BuffAttr.DEBUFF_DOWN: - this.BUFF_DEDOWN.push({value:buff,count:count}) + this.BUFF_DEDOWN.push({value:buff,duration:duration}) break } } @@ -522,17 +581,11 @@ export class HeroViewComp extends CCComp { let def = 0; for(let i=0;i= 0; i--) { decd += view.DEBUFF_DECDS[i].value; - view.DEBUFF_DECDS[i].count--; - // 当count为0时移除该记录 - if (view.DEBUFF_DECDS[i].count <= 0) { - view.DEBUFF_DECDS.splice(i, 1); - } + // 不再在这里减少duration,改为在update中按时间减少 } let bcd=0 for (let i = view.BUFF_CDS.length - 1; i >= 0; i--) { bcd += view.BUFF_CDS[i].value; - view.BUFF_CDS[i].count--; - if (view.BUFF_CDS[i].count <= 0) { - view.BUFF_CDS.splice(i, 1); - } + // 不再在这里减少duration,改为在update中按时间减少 } - return cd*(100-bcd+decd)/100 + return cd/((bcd+decd)/100+1) } get_count(count:number,view:HeroViewComp){ let re=count+view.wfuny diff --git a/assets/script/game/skills/Skill.ts b/assets/script/game/skills/Skill.ts index d04ea11c..5ffa7d65 100644 --- a/assets/script/game/skills/Skill.ts +++ b/assets/script/game/skills/Skill.ts @@ -132,19 +132,13 @@ export class Skill extends ecs.Entity { if(view.BUFF_ATKS.length>0){ for (let i = view.BUFF_ATKS.length - 1; i >= 0; i--) { BUFF_ATK += view.BUFF_ATKS[i].value; - view.BUFF_ATKS[i].count--; - if (view.BUFF_ATKS[i].count <= 0) { - view.BUFF_ATKS.splice(i, 1); - } + // 不再在这里减少duration,改为在update中按时间减少 } } if(view.DEBUFF_DEATKS.length>0) { for (let i = view.DEBUFF_DEATKS.length - 1; i >= 0; i--) { DEBUFF_DEATK += view.DEBUFF_DEATKS[i].value; - view.DEBUFF_DEATKS[i].count--; - if (view.DEBUFF_DEATKS[i].count <= 0) { - view.DEBUFF_DEATKS.splice(i, 1); - } + // 不再在这里减少duration,改为在update中按时间减少 } }