diff --git a/assets/script/game/hero/Hero.ts b/assets/script/game/hero/Hero.ts index 425af663..4b2999b4 100644 --- a/assets/script/game/hero/Hero.ts +++ b/assets/script/game/hero/Hero.ts @@ -83,8 +83,8 @@ export class Hero extends ecs.Entity { for (const key in hero.skills) { const skill = hero.skills[key]; if (!skill) continue; - //用于增量 计算最终技能等级:英雄等级与技能初始等级均从1开始,需各减1抵消,故-2 - model.skills[skill.uuid] = { ...skill, lv: skill.lv + hero_lv - 2, ccd: skill.cd }; + //用于增量 计算最终技能等级:英雄等级与技能初始等级均从1开始,需各减1抵消,故-2,最低等级时0 + model.skills[skill.uuid] = { ...skill, lv: Math.max(0,skill.lv + hero_lv - 2), ccd: skill.cd }; } model.updateSkillDistanceCache(); diff --git a/assets/script/game/hero/HeroAttrsComp.ts b/assets/script/game/hero/HeroAttrsComp.ts index 33774450..29b2d39c 100644 --- a/assets/script/game/hero/HeroAttrsComp.ts +++ b/assets/script/game/hero/HeroAttrsComp.ts @@ -139,8 +139,8 @@ export class HeroAttrsComp extends ecs.Comp { return this.frost_end_time > 0 } getSkillLevel(skillId: number): number { - if (!skillId) return 1; - return this.skills[skillId]?.lv ?? 1; + if (!skillId) return 0; + return this.skills[skillId]?.lv ?? 0; } getSkillIds(): number[] { diff --git a/assets/script/game/skill/SDataCom.ts b/assets/script/game/skill/SDataCom.ts index 586db0aa..a2de7063 100644 --- a/assets/script/game/skill/SDataCom.ts +++ b/assets/script/game/skill/SDataCom.ts @@ -11,7 +11,7 @@ export class SDataCom extends ecs.Comp { group:BoxSet=BoxSet.HERO fac: number = 0; // 0:hero 1:monster s_uuid:number=0 - skill_lv:number=1 + skill_lv:number=0 ext_dmg:number=0 //额外伤害 dmg_ratio:number=1 //伤害比例 hit_count:number=0 //击中数量 @@ -21,7 +21,7 @@ export class SDataCom extends ecs.Comp { this.group=BoxSet.HERO this.fac=0 this.s_uuid=0 - this.skill_lv=1 + this.skill_lv=0 this.casterEid = -1; this.hit_count=0 this.max_hit_count=0 diff --git a/assets/script/game/skill/Skill.ts b/assets/script/game/skill/Skill.ts index c6e2f69c..ec249583 100644 --- a/assets/script/game/skill/Skill.ts +++ b/assets/script/game/skill/Skill.ts @@ -101,7 +101,7 @@ export class Skill extends ecs.Entity { this.addComponents(SMoveDataComp); } load(startPos: Vec3, parent: Node, s_uuid: number, targetPos: Vec3, - caster:HeroViewComp,cAttrsComp:HeroAttrsComp, skill_lv:number=1, ext_dmg:number=0) { + caster:HeroViewComp,cAttrsComp:HeroAttrsComp, skill_lv:number=0, ext_dmg:number=0) { const config = SkillSet[s_uuid]; if (!config) { mLogger.error(this.debugMode, 'Skill', "[Skill] 技能配置不存在:", s_uuid); @@ -205,17 +205,17 @@ export class Skill extends ecs.Entity { sDataCom.casterEid=caster.ent.eid sDataCom.Attrs = {}; const SUp=SkillUpList[s_uuid] ? SkillUpList[s_uuid]:SkillUpList[1001]; - const sCrt = (config.crt ?? 0)+SUp.crt*skill_lv; - const sFrz = (config.frz ?? 0)+SUp.frz*skill_lv; - const sBck = (config.bck ?? 0)+SUp.bck*skill_lv; - const sAp =config.ap+SUp.ap*skill_lv; - const sHit=config.hit_count+SUp.hit_count*skill_lv + cAttrsComp.puncture + const sCrt = (config.crt ?? 0)+(SUp.crt*skill_lv); + const sFrz = (config.frz ?? 0)+(SUp.frz*skill_lv); + const sBck = (config.bck ?? 0)+(SUp.bck*skill_lv); + const sAp =config.ap+(SUp.ap*skill_lv); + const sHit=config.hit_count+(SUp.hit_count*skill_lv) + cAttrsComp.puncture sDataCom.Attrs[Attrs.ap] = Math.floor(cAttrsComp.ap*sAp/100); sDataCom.Attrs[Attrs.critical] = cAttrsComp.critical + sCrt; sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.freeze_chance + sFrz; sDataCom.Attrs[Attrs.back_chance] = cAttrsComp.back_chance + sBck; sDataCom.s_uuid=s_uuid - sDataCom.skill_lv = Math.max(1, skill_lv); + sDataCom.skill_lv = Math.max(0, skill_lv); sDataCom.fac=cAttrsComp.fac sDataCom.ext_dmg=ext_dmg sDataCom.hit_count = 0