From 34d75144ef57d8d47869c1130a659d0838791477 Mon Sep 17 00:00:00 2001 From: yuexin Date: Fri, 18 Dec 2020 19:39:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9B=AE=E6=A0=87=E5=A4=84?= =?UTF-8?q?=E7=90=86=EF=BC=88=E6=9C=AA=E5=AE=8C=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rooms/logic/Handler/BattleHandler.ts | 26 ++++++++++++++++++++++++ src/rooms/logic/skill/Skill.ts | 3 ++- src/rooms/logic/skill/SkillConst.ts | 11 ++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/rooms/logic/Handler/BattleHandler.ts b/src/rooms/logic/Handler/BattleHandler.ts index 33d7a82..2b480bc 100644 --- a/src/rooms/logic/Handler/BattleHandler.ts +++ b/src/rooms/logic/Handler/BattleHandler.ts @@ -11,6 +11,7 @@ import { Skill } from "../skill/Skill"; import { PetHandler } from "./PetHandler"; import { SkillInfoMsg } from "message/SkillInfo"; import { PetInfo } from "message/PetInfo"; +import arrUtil from "utils/array.util"; export class BattleHandler { @@ -203,6 +204,31 @@ export class BattleHandler { lst.push(obj); } } + break; + case GameCampType.RANDOM_ENEMY: + { + let tmp: PlayerHandler[] = []; + for(let [key, obj] of this._players){ + if(obj != src && obj != src._friend && obj.isAlive()){ + tmp.push(obj); + } + } + lst.push(arrUtil.randomOne(tmp)); + } + break; + case GameCampType.RANDOM_US: + { + let tmp: PlayerHandler[] = []; + if(src){ + src.isAlive() && tmp.push(src); + let obj = this.getFriend(src); + obj && obj.isAlive() && tmp.push(obj); + } + (tmp.length > 0) && lst.push(arrUtil.randomOne(tmp)); + } + break; + case GameCampType.FACE_ENEMY: + break; default: break; diff --git a/src/rooms/logic/skill/Skill.ts b/src/rooms/logic/skill/Skill.ts index d969417..b9cb967 100644 --- a/src/rooms/logic/skill/Skill.ts +++ b/src/rooms/logic/skill/Skill.ts @@ -335,7 +335,8 @@ export class Skill { let ncount = 1 + exparam.edd_cnt; switch(efftype){ case SkillEffectType.SUMMON_NPC: - let n = tgt.dst.summonPet(this._data.quoteunitid, ncount, exparam); + let obj = tgt.srcpet? tgt.srcpet: tgt.srcplayer; + let n = obj.summonPet(this._data.quoteunitid, ncount, exparam); if(n >= 0){ tgt.success(efftype, n); } diff --git a/src/rooms/logic/skill/SkillConst.ts b/src/rooms/logic/skill/SkillConst.ts index 763d476..7b51ca8 100644 --- a/src/rooms/logic/skill/SkillConst.ts +++ b/src/rooms/logic/skill/SkillConst.ts @@ -89,6 +89,15 @@ export const enum SkillType{ }; // 技能作用范围(对单位而言) +/** + * 1.自己 + * 2.单体:即(指定单体)可以由玩家指定一个目标 + * 3.(自己外)单体:作用于一个目标,但是不包括技能的使用者 + * 4.全体:作用于全体目标 + * 5.(自己外)全体:作用于全体目标,但是不包括技能的使用者 + * 6.随机单体:在可以选择的目标范围内,随机一个目标 + * 7.(自己外)随机单体:自己除外 + */ export const enum SkillRangeUnitType{ NONE = 0, SELF = 1, @@ -96,6 +105,8 @@ export const enum SkillRangeUnitType{ OTHER = 3, ALL = 4, ALL_EXSELF = 5, + RANDOM_ONE = 6, + RANDOM_ONE_EXSELF = 7, }; // 技能效果类型