From 960e8afa85aa1dfab100d82697578856e2e54854 Mon Sep 17 00:00:00 2001 From: yuexin Date: Wed, 6 Jan 2021 15:28:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=8A=B6=E6=80=81=E5=8F=98?= =?UTF-8?q?=E5=8C=96=E7=9A=84=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rooms/logic/Handler/BattleHandler.ts | 16 ++++++++-------- src/rooms/logic/Handler/PetHandler.ts | 21 ++++++++++----------- src/rooms/logic/Handler/PlayerHandler.ts | 16 ++++++++++++---- src/rooms/logic/skill/Skill.ts | 17 +++++++++-------- 4 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/rooms/logic/Handler/BattleHandler.ts b/src/rooms/logic/Handler/BattleHandler.ts index 82a6bad..652ad28 100644 --- a/src/rooms/logic/Handler/BattleHandler.ts +++ b/src/rooms/logic/Handler/BattleHandler.ts @@ -6,7 +6,7 @@ import CfgMan from "../CfgMan"; import { EffectCardType, GameCampType, GameUnitType, SkillRangeUnitType } from "../skill/SkillConst"; import { Pet } from "rooms/schema/Pet"; import {SkillParam, SkillTarget} from "../skill/SkillParam"; -import { Room } from "colyseus"; +import { nosync, Room } from "colyseus"; import { Skill } from "../skill/Skill"; import { PetHandler } from "./PetHandler"; import { SKillEffectData, SkillInfoMsg } from "message/SkillInfo"; @@ -723,11 +723,11 @@ export class BattleHandler { return this._room.sNeedChangePet(aplayer.getId()); }; - public onUpdatePetNotify(apet: PetHandler){ - return this._room.updatePet([apet.exportInfo()]); + public onUpdatePetNotify(apet: PetHandler, from?: PetHandler){ + return this._room.updatePet([apet.exportInfo()], from? from._owner.getId(): null); }; - public onUpdatePetsNotify(pets: PetHandler[]){ + public onUpdatePetsNotify(pets: PetHandler[], from?: PetHandler){ if(!pets || pets.length <= 0){ return; } @@ -735,7 +735,7 @@ export class BattleHandler { pets.forEach((item: PetHandler)=>{ lst.push(item.exportInfo()); }); - return this._room.updatePet(lst); + return this._room.updatePet(lst, from? from._owner.getId(): null); }; public onPlayerAddCardNotify(aplayer: PlayerHandler, count: number, maxcount: number, @@ -755,7 +755,7 @@ export class BattleHandler { }; public onPlayerDropCardNotify(aplayer: PlayerHandler, count: number, from?: PlayerHandler): number{ - return this._room.giveUpCard(aplayer.getId(), count); + return this._room.giveUpCard(aplayer.getId(), count, from? from.getId(): null); }; public onSkillResultNotify(skillres: SkillTarget[]){ @@ -818,8 +818,8 @@ export class BattleHandler { // }); }; - public onPlayerAddHPNotify(aplayer: PlayerHandler, addhp: number){ - return this._room.updateHp(aplayer.getId(), addhp); + public onPlayerAddHPNotify(aplayer: PlayerHandler, addhp: number, from?: PlayerHandler){ + return this._room.updateHp(aplayer.getId(), addhp, from? from.getId(): null); }; //end------------------------------------------------ diff --git a/src/rooms/logic/Handler/PetHandler.ts b/src/rooms/logic/Handler/PetHandler.ts index 694790e..5054aa5 100644 --- a/src/rooms/logic/Handler/PetHandler.ts +++ b/src/rooms/logic/Handler/PetHandler.ts @@ -233,7 +233,7 @@ export class PetHandler { return this._owner.handleSkill(skillid, count, obj, this); }; - public subAP(value: number):number { + public subAP(value: number, from: PetHandler):number { // this._exap += value; // if(this._exap < 0){ // this._baseap += this._exap; @@ -264,10 +264,10 @@ export class PetHandler { return -value; } - return this.addBaseAP(n); + return this.addBaseAP(n, from); }; - public addBaseAP(value: number): number{ + public addBaseAP(value: number, from: PetHandler): number{ if(value == 0){ return 0; } @@ -285,7 +285,7 @@ export class PetHandler { let tmp = this._baseap; this._baseap = 0; this.dataChanged(); - this.addHP(tmp); + this.addHP(tmp, from); }else{ this.dataChanged(); this.die(); @@ -298,7 +298,7 @@ export class PetHandler { return res; }; - public addExAP(value: number, skill: Skill): number{ + public addExAP(value: number, from: PetHandler): number{ // return this.addAP(value); return 0; }; @@ -319,7 +319,7 @@ export class PetHandler { return this._owner.getHP(); }; - public beHurt(value: number): number{ + public beHurt(value: number, from: PetHandler): number{ let rv = value - value * this._exredhurt; if(rv < 0){ rv = 0; @@ -331,7 +331,7 @@ export class PetHandler { } } - let res = this.subAP(rv); + let res = this.subAP(rv, from); if(res != 0){ this._owner.onBeHurt(this, res); @@ -340,7 +340,7 @@ export class PetHandler { return res; }; - public addHP(value: number){ + public addHP(value: number, from: PetHandler){ if(value == 0){ return 0; } @@ -350,8 +350,7 @@ export class PetHandler { this._owner.simpleCheckSkills([this._rebornskill], this); return 0; } - this._owner.addHP(value); - return this._owner.addHP(value); + return this._owner.addHP(value, from); } return 0; }; @@ -411,7 +410,7 @@ export class PetHandler { let bakap = apet.totalAP(); - let n = apet.beHurt(myap); + let n = apet.beHurt(myap, this); !isAtkBack && this._owner.onBeAttack(apet, param); diff --git a/src/rooms/logic/Handler/PlayerHandler.ts b/src/rooms/logic/Handler/PlayerHandler.ts index 403258d..c202201 100644 --- a/src/rooms/logic/Handler/PlayerHandler.ts +++ b/src/rooms/logic/Handler/PlayerHandler.ts @@ -304,12 +304,20 @@ export class PlayerHandler { return this._owner.onPlayerDropCardNotify(this, count, from); }; - public addHP(value: number): number{ + public addHP(value: number, from: PetHandler): number{ let oldhp = this.getHP(); - let newhp = this._owner.onPlayerAddHPNotify(this, value); + let newhp = this._owner.onPlayerAddHPNotify(this, value, from._owner); return newhp - oldhp; }; + public addBaseAP(value: number, from: PetHandler): number{ + return this._self? this._self.addBaseAP(value, from): 0; + }; + + public addExAP(value: number, from: PetHandler): number{ + return 0; + }; + public getHP(){ return this._player.hp; }; @@ -369,8 +377,8 @@ export class PlayerHandler { return this._self? this._self.attack(sk, apet, param, ev, isAtkBack): 0; }; - public beHurt(value: number): number{ - return this._self? this._self.beHurt(value): 0; + public beHurt(value: number, from: PetHandler): number{ + return this._self? this._self.beHurt(value, from): 0; }; public beSilent(count: number){ diff --git a/src/rooms/logic/skill/Skill.ts b/src/rooms/logic/skill/Skill.ts index 2014e21..d3617c2 100644 --- a/src/rooms/logic/skill/Skill.ts +++ b/src/rooms/logic/skill/Skill.ts @@ -384,7 +384,7 @@ export class Skill { switch(efftype){ case SkillEffectType.CARD_ADD: if(tgt.dsttype == GameUnitType.PLAYER){ - let n = (tgt.dst as PlayerHandler).addCard(res, tgt.srcplayer); + let n = (tgt.dst as PlayerHandler).addCard(res, tgt.srcPlayer()); if(n >= 0){ tgt.success(efftype, n); }else{ @@ -396,7 +396,7 @@ export class Skill { break; case SkillEffectType.CARD_ADD_LIMIT: if(tgt.dsttype == GameUnitType.PLAYER){ - let n = (tgt.dst as PlayerHandler).addCardLimit(res, tgt.srcplayer); + let n = (tgt.dst as PlayerHandler).addCardLimit(res, tgt.srcPlayer()); if(n >= 0){ tgt.success(efftype, n); }else{ @@ -426,7 +426,7 @@ export class Skill { let cardid = this._data.quotecardid; let ncount = this.getQuoteValue(this._data.quotecard_times, this._data.quotecard_timesmax, this._orign_effcnt); - let n = (tgt.dst as PlayerHandler).addDirectCard(cardid, ncount, tgt.srcplayer); + let n = (tgt.dst as PlayerHandler).addDirectCard(cardid, ncount, tgt.srcPlayer()); if(n >= 0){ tgt.success(efftype, n); }else{ @@ -439,7 +439,7 @@ export class Skill { case SkillEffectType.CARD_DROP: { if(tgt.dsttype == GameUnitType.PLAYER){ - let n = (tgt.dst as PlayerHandler).dropCard(res, tgt.srcplayer); + let n = (tgt.dst as PlayerHandler).dropCard(res, tgt.srcPlayer()); if(n >= 0){ tgt.success(efftype, n); }else{ @@ -459,8 +459,9 @@ export class Skill { switch(efftype){ case SkillEffectType.POWER_ENHANCE: case SkillEffectType.POWEREX_ENHANCE: - if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){ - let n = efftype == SkillEffectType.POWER_ENHANCE? (tgt.dst as PetHandler).addBaseAP(effvalue): (tgt.dst as PetHandler).addExAP(effvalue, this); + if(tgt.dsttype != GameUnitType.NONE){ + let n = efftype == SkillEffectType.POWER_ENHANCE? tgt.dst.addBaseAP(effvalue, tgt.srcPet()) + : tgt.dst.addExAP(effvalue, tgt.srcPet()); tgt.success(efftype, n); }else{ tgt.fail(efftype, -1); @@ -471,7 +472,7 @@ export class Skill { let effv = this.EMV(effvalue); if(tgt.dsttype != GameUnitType.NONE){ let oldhp = tgt.dst.getHP(); - let n = tgt.dst.beHurt(effv); + let n = tgt.dst.beHurt(effv, tgt.srcPet()); if(n != 0){ tgt.success(SkillEffectType.HURT_POWER, n); } @@ -501,7 +502,7 @@ export class Skill { let efftype = SkillEffectType.HURT_HP; if(tgt.dsttype != GameUnitType.NONE){ let effv = this.EMV(effvalue); - let n = tgt.dst.addHP(effv); + let n = tgt.dst.addHP(effv, tgt.srcPet()); tgt.success(efftype, n); }else{ tgt.fail(efftype, -1);