From 48ff9a7e8e1e3e35f063845ff72553e656331b71 Mon Sep 17 00:00:00 2001 From: yuexin Date: Thu, 14 Jan 2021 20:40:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=97=E5=87=BB=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rooms/logic/Handler/BattleHandler.ts | 19 +++++++++++------- src/rooms/logic/skill/Skill.ts | 25 ++++++++++++------------ src/rooms/logic/skill/SkillConst.ts | 8 +++++--- 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/rooms/logic/Handler/BattleHandler.ts b/src/rooms/logic/Handler/BattleHandler.ts index c9cb04d..92d404e 100644 --- a/src/rooms/logic/Handler/BattleHandler.ts +++ b/src/rooms/logic/Handler/BattleHandler.ts @@ -312,9 +312,9 @@ export class BattleHandler { return lst; }; - public getSkillTargets(skill: Skill, param: SkillParam): SkillTarget[]{ + public getSkillTargets(skill: Skill, param: SkillParam, lastph: PlayerHandler): SkillTarget[]{ let lst: SkillTarget[] = []; - let players = this.getTargetPlayers(skill._data.friendlyid, param.srcplayer, param.dstplayer); + let players = this.getTargetPlayers(skill._data.friendlyid, param.srcplayer, param.dstplayer, lastph); if(players.length > 0){ switch(skill._data.targetid){ case GameUnitType.PLAYER: @@ -362,10 +362,10 @@ export class BattleHandler { return lst; }; - public getTargetPlayers(gct: GameCampType, src:PlayerHandler, dst:PlayerHandler): PlayerHandler[]{ + public getTargetPlayers(gct: GameCampType, src:PlayerHandler, dst:PlayerHandler, last: PlayerHandler): PlayerHandler[]{ let lst: PlayerHandler[] = []; switch(gct){ - case GameCampType.SELF: + case GameCampType.SELFPLAYER: if(src && src.isAlive()){ lst.push(src); } @@ -399,7 +399,7 @@ export class BattleHandler { } } break; - case GameCampType.ALL: + case GameCampType.ALLPLAYER: for(let [key, obj] of this._players){ if(obj && obj.isAlive()){ lst.push(obj); @@ -442,17 +442,22 @@ export class BattleHandler { } } if(!bfind){ - return this.getTargetPlayers(GameCampType.RANDOM_ENEMY, src, dst); + return this.getTargetPlayers(GameCampType.RANDOM_ENEMY, src, dst, last); } } break; - case GameCampType.ALL_EXSELF: + case GameCampType.ALLPLAYER_EXSELF: for(let [key, obj] of this._players){ if(obj && obj.isAlive() && obj != src){ lst.push(obj); } } break; + case GameCampType.LAST_HURT: + if(last && last != src && last.isAlive()){ + lst.push(last); + } + break; default: break; } diff --git a/src/rooms/logic/skill/Skill.ts b/src/rooms/logic/skill/Skill.ts index 98ebb99..29d91ad 100644 --- a/src/rooms/logic/skill/Skill.ts +++ b/src/rooms/logic/skill/Skill.ts @@ -178,7 +178,7 @@ export class Skill { // 技能光环是否能影响dst canEffect(srcpet: PetHandler, dstpet: PetHandler){ - if(this._data.friendlyid != GameCampType.SELF){ + if(this._data.friendlyid != GameCampType.SELFPLAYER){ return false; } let tgok = false; @@ -224,8 +224,8 @@ export class Skill { return this._owner._owner.singleSkillTargets(this, this._petowner, this._petowner); }; - getTargets(param: SkillParam): SkillTarget[]{ - return this._owner._owner.getSkillTargets(this, param); + getTargets(param: SkillParam, lastph?: PlayerHandler): SkillTarget[]{ + return this._owner._owner.getSkillTargets(this, param, lastph); }; getOppTargets(st: SkillTarget): SkillTarget[]{ @@ -294,7 +294,8 @@ export class Skill { } }; - _triggerSubSkill(sk: Skill, skid: number, skusertype: number, skcount: number, skmaxcount: number, param: SkillParam, sts: SkillTarget[], cb?: any){ + _triggerSubSkill(sk: Skill, skid: number, skusertype: number, skcount: number, skmaxcount: number, + param: SkillParam, sts: SkillTarget[], cb: any, lastph: PlayerHandler){ if(skid && !sk){ sk = this._owner.newSkill(skid); sk.setOrignParam(this._orign_effcnt, this._orign_cardpt, this._from, this._petowner, 0); @@ -315,7 +316,7 @@ export class Skill { let ncount = this.getQuoteValue(skcount, skmaxcount, this._orign_effcnt); for(let i=0; i