From d4996d97c7414dd15071d8d4b54d92ad97ff989e Mon Sep 17 00:00:00 2001 From: yuexin Date: Thu, 24 Dec 2020 16:16:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9B=BF=E6=8D=A2pet?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rooms/logic/CfgMan.ts | 12 +++++ src/rooms/logic/Handler/BattleHandler.ts | 6 ++- src/rooms/logic/Handler/PlayerHandler.ts | 56 ++++++++++++++++++------ 3 files changed, 60 insertions(+), 14 deletions(-) diff --git a/src/rooms/logic/CfgMan.ts b/src/rooms/logic/CfgMan.ts index 7539ab2..c396aaa 100644 --- a/src/rooms/logic/CfgMan.ts +++ b/src/rooms/logic/CfgMan.ts @@ -288,6 +288,18 @@ let CfgMan = { return minv; } return Math.round(Math.random() * maxv + minv); + }, + + hasSummonPetSkill(skillids: number[]){ + let bok = false; + for(let i=0; i= 0) && this._pets.splice(idx, 1); + + this._owner.onDelPetNotify(pet); }; public getPet(pet: Pet): PetHandler{ @@ -99,6 +106,18 @@ export class PlayerHandler { }); }; + public findPet(pos: number): PetHandler{ + if(pos < 0){ + return null; + } + if(pos == 0){ + return this._self; + } + return this._pets.find((item:PetHandler)=>{ + return item._idx == pos; + }) + }; + public exportAllPets(skill: Skill, param: SkillParam, expet: PetHandler, dst: SkillTarget[]): SkillTarget[]{ if(!dst){ return null; @@ -130,14 +149,31 @@ export class PlayerHandler { return dst; }; - public useCard(obj: SkillParam) + public useCard(obj: SkillParam, oldpos?: number) { let cfg = CfgMan.findEffCardCfg(obj.cardid); if(!cfg){ return false; } + let lst = []; + cfg.quoteskill1id && lst.push(cfg.quoteskill1id); + cfg.quoteskill2id && lst.push(cfg.quoteskill2id); + cfg.quoteskill3id && lst.push(cfg.quoteskill3id); + cfg.quoteskill4id && lst.push(cfg.quoteskill4id); + + let oldpet = this.findPet(oldpos); + if(oldpet == this._self){ + oldpet = null; + } + if(cfg.type_id == EffectCardType.NPC || cfg.type_id == EffectCardType.NPC_CUSTOM){ + let exap = 0; + if(oldpet){ + exap = oldpet.totalAP(); + this.delPet(oldpet); + } + let pet = this.newPet(); if(!pet){ return false; @@ -148,14 +184,11 @@ export class PlayerHandler { obj.dstpet = pet; } } - pet.loadData(cfg.stageunit_id, obj, - [cfg.quoteskill1id, cfg.quoteskill2id, cfg.quoteskill3id, cfg.quoteskill4id]); + pet.loadData(cfg.stageunit_id, obj, lst, exap); }else if(cfg.type_id == EffectCardType.MAGIC){ - let lst = []; - cfg.quoteskill1id && lst.push(cfg.quoteskill1id); - cfg.quoteskill2id && lst.push(cfg.quoteskill2id); - cfg.quoteskill3id && lst.push(cfg.quoteskill3id); - cfg.quoteskill4id && lst.push(cfg.quoteskill4id); + if(oldpet && CfgMan.hasSummonPetSkill(lst)){ + this.delPet(oldpet); + } this.useSkills(lst, obj); } }; @@ -334,9 +367,6 @@ export class PlayerHandler { } if(apet.isDead()){ - this.onEMChanged(-apet._enmagic);//删除法强 - this._owner.onDelPetNotify(apet); - apet.clear(); this.delPet(apet); }