From 74925e87689fa1fef8049b0277b05288990e58d5 Mon Sep 17 00:00:00 2001 From: yuexin Date: Mon, 4 Jan 2021 13:57:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=B8=E8=A1=80=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rooms/logic/Handler/BattleHandler.ts | 3 +-- src/rooms/logic/Handler/PetHandler.ts | 8 ++++++++ src/rooms/logic/skill/Skill.ts | 26 +++++++++++++++++------- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/rooms/logic/Handler/BattleHandler.ts b/src/rooms/logic/Handler/BattleHandler.ts index 25dcf5d..dfb70c5 100644 --- a/src/rooms/logic/Handler/BattleHandler.ts +++ b/src/rooms/logic/Handler/BattleHandler.ts @@ -729,8 +729,7 @@ export class BattleHandler { }; public onPlayerDropCardNotify(aplayer: PlayerHandler, count: number, from?: PlayerHandler): number{ - this._room.giveUpCard(aplayer.getId(), count); - return count; + return this._room.giveUpCard(aplayer.getId(), count); }; public onSkillResultNotify(skillres: SkillTarget[]){ diff --git a/src/rooms/logic/Handler/PetHandler.ts b/src/rooms/logic/Handler/PetHandler.ts index a2952f5..44a991c 100644 --- a/src/rooms/logic/Handler/PetHandler.ts +++ b/src/rooms/logic/Handler/PetHandler.ts @@ -466,6 +466,14 @@ export class PetHandler { return this._isSilent; }; + public canHPS(){ + return this._hps > 0; + }; + + public HPS(value: number): number{ + return this._hps * Math.abs(value); + }; + public summonPet(petid: number, count: number = 1, exparam: SkillParam):number{ return this._owner.summonPet(petid, count, exparam); }; diff --git a/src/rooms/logic/skill/Skill.ts b/src/rooms/logic/skill/Skill.ts index d544270..4b74497 100644 --- a/src/rooms/logic/skill/Skill.ts +++ b/src/rooms/logic/skill/Skill.ts @@ -462,8 +462,14 @@ export class Skill { if(dthp != 0){ tgt.success(SkillEffectType.HURT_HP, dthp); } - if(!this.canEM()){ - //todo: 吸血 + let hv = n + dthp; + let pet = tgt.srcPet(); + if(!this.canEM() && hv != 0 && pet && pet.canHPS()){ + //吸血 + let sv = pet.HPS(hv); + if(sv != 0){ + tgt.success(SkillEffectType.HURT_POWER, sv, true); + } } }else{ tgt.fail(efftype, -1); @@ -674,9 +680,9 @@ export class Skill { let obj = tgt.srcpet? tgt.srcpet: tgt.srcplayer; let v = effvalue; let oldhp = tgt.dst.getHP(); - let res = obj.attack(this, (tgt.dst as PetHandler), param, v, isAtkBack); - if(res <= 0){ - tgt.success(efftype, res); + let n = obj.attack(this, (tgt.dst as PetHandler), param, v, isAtkBack); + if(n <= 0){ + tgt.success(efftype, n); // if(this._data.quoteskillid){ // let dp = this._data.skill_users? param.oppClone(): param; // let pet = tgt.srcpet; @@ -689,8 +695,14 @@ export class Skill { if(dthp != 0){ tgt.success(SkillEffectType.HURT_HP, dthp); } - if(!this.canEM()){ - //todo: 吸血 + let hv = n + dthp; + let pet = tgt.srcPet(); + if(!this.canEM() && hv != 0 && pet && pet.canHPS()){ + //吸血 + let sv = pet.HPS(hv); + if(sv != 0){ + tgt.success(SkillEffectType.HURT_POWER, sv, true); + } } }else{ tgt.fail(efftype, -1);