diff --git a/src/rooms/logic/CfgMan.ts b/src/rooms/logic/CfgMan.ts index 2430751..dc3d430 100644 --- a/src/rooms/logic/CfgMan.ts +++ b/src/rooms/logic/CfgMan.ts @@ -51,8 +51,7 @@ let CfgMan = { eVT: SkillEffectValueType, eST: SkillEffectSignType, eV: number, - aP: number, - enV: number + aP: number ): number{ let n = eV; switch(eST){ @@ -67,7 +66,6 @@ let CfgMan = { default: break; } - n += enV; return n; } }; diff --git a/src/rooms/logic/Handler/BattleHandler.ts b/src/rooms/logic/Handler/BattleHandler.ts index 4f130ae..7e8d000 100644 --- a/src/rooms/logic/Handler/BattleHandler.ts +++ b/src/rooms/logic/Handler/BattleHandler.ts @@ -271,12 +271,14 @@ export class BattleHandler { }; public onAddPetNotify(apet: PetHandler){ - this._room.bAddPet(apet.exportData()); + return this._room.bAddPet(apet.exportData()); }; public onPlayerAddCard(aplayer: PlayerHandler, count: number, maxcount: number){ - this._room.addCard(aplayer._player.heroId + '', count, maxcount); + return this._room.addCard(aplayer.getId(), count, maxcount); }; - + public onPlayerStealCard(srcplayer: PlayerHandler, dstplayer: PlayerHandler, count: number){ + return this._room.drawCardFromPlayer(srcplayer.getId(), dstplayer.getId(), count); + }; } diff --git a/src/rooms/logic/Handler/PetHandler.ts b/src/rooms/logic/Handler/PetHandler.ts index b4df8b6..d4a8521 100644 --- a/src/rooms/logic/Handler/PetHandler.ts +++ b/src/rooms/logic/Handler/PetHandler.ts @@ -170,6 +170,7 @@ export class PetHandler { ap: this._baseap, extAp: this._exap, pos: this._idx, + player: this._owner.getId(), harmReduce: this._exredhurt, skills: this._selfskills, extSkills: this._exskills diff --git a/src/rooms/logic/Handler/PlayerHandler.ts b/src/rooms/logic/Handler/PlayerHandler.ts index 664dd94..9f450a7 100644 --- a/src/rooms/logic/Handler/PlayerHandler.ts +++ b/src/rooms/logic/Handler/PlayerHandler.ts @@ -49,6 +49,10 @@ export class PlayerHandler { return 0; }; + public getId(): string{ + return this._player.heroId + ''; + }; + public newPet(): PetHandler { let res = null; let pr = null; @@ -146,6 +150,10 @@ export class PlayerHandler { return this._owner.onPlayerAddCard(this, 0, maxcount); }; + public stealCard(dstplayer: PlayerHandler, count: number){ + return this._owner.onPlayerStealCard(this, dstplayer, count); + }; + public checkHalo(apet:PetHandler){ this._pets.forEach((obj: PetHandler)=>{ if(obj != apet){ diff --git a/src/rooms/logic/skill/Skill.ts b/src/rooms/logic/skill/Skill.ts index eb7f647..077fa7a 100644 --- a/src/rooms/logic/skill/Skill.ts +++ b/src/rooms/logic/skill/Skill.ts @@ -200,6 +200,11 @@ export class Skill { return CfgMan.calcEnhanceValue(this._data.edd_effid, this._data.edd_effnum, param.edd_cnt, param.cardpoint); }; + getEffValue(param: SkillParam): number{ + return CfgMan.calcEffectValue(this._data.eff_numtypeid, + this._data.num_signid, this._data.eff_num, param.cardpoint); + }; + trigger(param: SkillParam) { //触发buff效果 let res = TriggerManager.onTrigger(this, param); @@ -230,9 +235,8 @@ export class Skill { }); }; - handleCard(efftype: SkillEffectType, enhanceV: number, power: number, tgt: SkillTarget){ - let res = CfgMan.calcEffectValue(this._data.eff_numtypeid, - this._data.num_signid, this._data.eff_num, power, enhanceV); + handleCard(efftype: SkillEffectType, effvalue: number, enhanceV: number, tgt: SkillTarget){ + let res = effvalue + enhanceV; switch(efftype){ case SkillEffectType.CARD_ADD: if(tgt.dsttype == GameUnitType.PLAYER){ @@ -249,18 +253,35 @@ export class Skill { } break; case SkillEffectType.CARD_STEAL: - + if(tgt.dsttype == GameUnitType.PLAYER){ + let n = tgt.srcplayer.stealCard(tgt.dst, res); + if(n >= 0){ + tgt.success(efftype, n); + } + } + break; + case SkillEffectType.CARD_CHG_EN: + //todo: 暂不处理 break; default: break; } }; - getRealEffValue(enhanceV: number){ - switch(this._data.eff_numtypeid){ - case SkillEffectValueType.NUMBER: - return - } + handlePower(efftype: SkillEffectType, effvalue: number, enhanceV: number, tgt: SkillTarget){ + + }; + + handleHP(efftype: SkillEffectType, effvalue: number, enhanceV: number, tgt: SkillTarget){ + + }; + + summon(efftype: SkillEffectType, effvalue: number, enhanceV: number, tgt: SkillTarget){ + + }; + + addBuff(efftype: SkillEffectType, effvalue: number, enhanceV: number, tgt: SkillTarget){ + }; setOwner(owner: PetHandler) { diff --git a/src/rooms/logic/skill/SkillConst.ts b/src/rooms/logic/skill/SkillConst.ts index 2f336e3..641519d 100644 --- a/src/rooms/logic/skill/SkillConst.ts +++ b/src/rooms/logic/skill/SkillConst.ts @@ -111,7 +111,7 @@ export const enum SkillEffectType SUMMON_SKILL = 8, TAUNT = 9, HURT_HP = 10, - POWER_ADD_BORN = 11, + POWER_ADD_BUFF = 11, HURT_RED = 12, }; diff --git a/src/rooms/logic/skill/TriggerMan.ts b/src/rooms/logic/skill/TriggerMan.ts index 8254e1f..c14f614 100644 --- a/src/rooms/logic/skill/TriggerMan.ts +++ b/src/rooms/logic/skill/TriggerMan.ts @@ -74,8 +74,8 @@ let TriggerManager = { onTrigger(sender: Skill, param: SkillParam): SkillTarget[] { let effectid = sender._type; - let bResOk = true; let env = sender.getEnhanceValue(param); + let effv = sender.getEffValue(param); let tgts = sender.getTargets(param); if(!tgts || !tgts.length){ return null; @@ -84,22 +84,39 @@ let TriggerManager = { switch (effectid) { case SkillEffectType.NONE: return null; + case SkillEffectType.CARD_ADD: case SkillEffectType.CARD_ADD_LIMIT: case SkillEffectType.CARD_STEAL: case SkillEffectType.CARD_CHG_EN: tgts.forEach((item)=>{ - sender.handleCard(effectid, env, param.cardpoint, item); + sender.handleCard(effectid, effv, env, item); }); break; case SkillEffectType.POWER_ENHANCE: case SkillEffectType.HURT_POWER: + tgts.forEach((item)=>{ + sender.handlePower(effectid, effv, env, item); + }); + break; case SkillEffectType.SUMMON_NPC: case SkillEffectType.SUMMON_SKILL: + tgts.forEach((item)=>{ + sender.summon(effectid, effv, env, item); + }); + break; case SkillEffectType.TAUNT: + //todo: 不处理 case SkillEffectType.HURT_HP: - case SkillEffectType.POWER_ADD_BORN: + tgts.forEach((item)=>{ + sender.handleHP(effectid, effv, env, item); + }); + break; + case SkillEffectType.POWER_ADD_BUFF: case SkillEffectType.HURT_RED: + tgts.forEach((item)=>{ + sender.addBuff(effectid, effv, env, item); + }); break; } @@ -121,7 +138,7 @@ let TriggerManager = { case SkillEffectType.SUMMON_SKILL: case SkillEffectType.TAUNT: case SkillEffectType.HURT_HP: - case SkillEffectType.POWER_ADD_BORN: + case SkillEffectType.POWER_ADD_BUFF: case SkillEffectType.HURT_RED: break; }