From 1300a629dbe8976edd72aa46eed63278c49bf080 Mon Sep 17 00:00:00 2001 From: yuexin Date: Fri, 11 Dec 2020 11:17:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=95=88=E6=9E=9C=E5=8D=A1?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E6=AF=94=E7=8E=87=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rooms/logic/Handler/BattleHandler.ts | 9 +++++++++ src/rooms/logic/Handler/PetHandler.ts | 3 ++- src/rooms/logic/Handler/PlayerHandler.ts | 13 +++++++++++++ src/rooms/logic/skill/Skill.ts | 14 +++++++------- src/rooms/logic/skill/SkillParam.ts | 8 ++++---- 5 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/rooms/logic/Handler/BattleHandler.ts b/src/rooms/logic/Handler/BattleHandler.ts index 636f54c..16353fa 100644 --- a/src/rooms/logic/Handler/BattleHandler.ts +++ b/src/rooms/logic/Handler/BattleHandler.ts @@ -271,6 +271,15 @@ export class BattleHandler { return ph && ph.hasTransEffCardSkill(); }; + /** + * 获得玩家效果牌转换比率(几张普通卡转一张效果卡) + * @param aplayer + */ + public getTransEffCardRate(aplayer: Player): number{ + let ph = this.getPlayer(aplayer); + return ph? ph.getTransEffCardRate(): 0; + }; + /** * 吃牌/胡牌确认[暂不用] * @param aplayer : 玩家 diff --git a/src/rooms/logic/Handler/PetHandler.ts b/src/rooms/logic/Handler/PetHandler.ts index d3c8a1a..43eda53 100644 --- a/src/rooms/logic/Handler/PetHandler.ts +++ b/src/rooms/logic/Handler/PetHandler.ts @@ -220,8 +220,9 @@ export class PetHandler { return value; }; - public addExAP(value: number, skill: Skill){ + public addExAP(value: number, skill: Skill): number{ // return this.addAP(value); + return 0; }; public totalAP(){ diff --git a/src/rooms/logic/Handler/PlayerHandler.ts b/src/rooms/logic/Handler/PlayerHandler.ts index 4d73475..1705507 100644 --- a/src/rooms/logic/Handler/PlayerHandler.ts +++ b/src/rooms/logic/Handler/PlayerHandler.ts @@ -366,6 +366,19 @@ export class PlayerHandler { return bok; }; + public getTransEffCardRate(): number{ + if(!this._self){ + return 0; + } + + for(let [key, val] of this._self._skills){ + if(val.isTransEffCardSkill()){ + return val.getEffValue(); + } + } + return 0; + }; + onCardLinkReady(fromplayer: PlayerHandler){ this.checkSkills(TriggerType.CARD_LINK_BEFORE); }; diff --git a/src/rooms/logic/skill/Skill.ts b/src/rooms/logic/skill/Skill.ts index 9489c4c..edca007 100644 --- a/src/rooms/logic/skill/Skill.ts +++ b/src/rooms/logic/skill/Skill.ts @@ -240,7 +240,7 @@ export class Skill { switch(efftype){ case SkillEffectType.CARD_ADD: if(tgt.dsttype == GameUnitType.PLAYER){ - let n = tgt.dst.addCard(res, tgt.srcplayer); + let n = (tgt.dst as PlayerHandler).addCard(res, tgt.srcplayer); if(n >= 0){ tgt.success(efftype, n); } @@ -250,7 +250,7 @@ export class Skill { break; case SkillEffectType.CARD_ADD_LIMIT: if(tgt.dsttype == GameUnitType.PLAYER){ - let n = tgt.dst.addCardLimit(res, tgt.srcplayer); + let n = (tgt.dst as PlayerHandler).addCardLimit(res, tgt.srcplayer); if(n >= 0){ tgt.success(efftype, n); } @@ -260,7 +260,7 @@ export class Skill { break; case SkillEffectType.CARD_STEAL: if(tgt.dsttype == GameUnitType.PLAYER){ - let n = tgt.srcplayer.stealCard(tgt.dst, res); + let n = tgt.srcplayer.stealCard((tgt.dst as PlayerHandler), res); if(n >= 0){ tgt.success(efftype, n); } @@ -281,7 +281,7 @@ export class Skill { 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.addBaseAP(effvalue): tgt.dst.addExAP(effvalue, this); + let n = efftype == SkillEffectType.POWER_ENHANCE? (tgt.dst as PetHandler).addBaseAP(effvalue): (tgt.dst as PetHandler).addExAP(effvalue, this); tgt.success(efftype, n); }else{ tgt.fail(efftype, -1); @@ -289,7 +289,7 @@ export class Skill { break; case SkillEffectType.HURT_POWER: if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){ - let n = tgt.dst.beHurt(effvalue); + let n = (tgt.dst as PetHandler).beHurt(effvalue); tgt.success(efftype, n); }else{ tgt.fail(efftype, -1); @@ -333,7 +333,7 @@ export class Skill { taunt(tgt:SkillTarget){ let efftype = SkillEffectType.TAUNT; if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){ - tgt.dst.taunt(); + (tgt.dst as PetHandler).taunt(); tgt.success(efftype, 1); }else{ tgt.fail(efftype, -1); @@ -347,7 +347,7 @@ export class Skill { reduceHurt(effvalue: number, tgt: SkillTarget){ let efftype = SkillEffectType.HURT_REDUCE; if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){ - let n = tgt.dst.addReduceHurt(effvalue); + let n = (tgt.dst as PetHandler).addReduceHurt(effvalue); tgt.success(efftype, n); }else{ tgt.fail(efftype, -1); diff --git a/src/rooms/logic/skill/SkillParam.ts b/src/rooms/logic/skill/SkillParam.ts index 16ae747..5839358 100644 --- a/src/rooms/logic/skill/SkillParam.ts +++ b/src/rooms/logic/skill/SkillParam.ts @@ -45,7 +45,7 @@ export class SkillTarget{ srcpet: PetHandler; srcskill: Skill; srcskillid: number; - dst: any; + dst: PlayerHandler | PetHandler; dsttype: GameUnitType; lasttime: number; @@ -111,10 +111,10 @@ export class SkillTarget{ let ed = new SKillEffectData(); if(this.dsttype == GameUnitType.PLAYER){ ed.pos = 0; - ed.player = this.dst.getId(); + ed.player = (this.dst as PlayerHandler).getId(); }else { - ed.pos = this.dst._idx; - ed.player = this.dst._owner.getId(); + ed.pos = (this.dst as PetHandler)._idx; + ed.player = (this.dst as PetHandler)._owner.getId(); } ed.effect_id = item.effect_type; ed.val = item.bsuccess? item.effect_res: item.err;