Merge branch 'second' of git.kingsome.cn:node/card_svr into second

This commit is contained in:
zhl 2021-01-04 13:35:08 +08:00
commit f1ddeb7b38
7 changed files with 307 additions and 80 deletions

View File

@ -293,7 +293,7 @@ export class BattleHandler {
break; break;
} }
} }
if(this.isFlowing()){ if(this.isFlowing() && lst.length > 0){
this._cacheSkills.push(...lst); this._cacheSkills.push(...lst);
} }
return lst; return lst;
@ -516,7 +516,15 @@ export class BattleHandler {
public onCardLinkReady(aplayer: Player, fromplayer?: Player){ public onCardLinkReady(aplayer: Player, fromplayer?: Player){
let ph = this.getPlayer(aplayer); let ph = this.getPlayer(aplayer);
let fromph = this.getPlayer(fromplayer); let fromph = this.getPlayer(fromplayer);
ph && ph.onCardLinkReady(fromph); if(!ph){
return 0;
}
this.beginFlow();
ph.onCardLinkReady(fromph);
return this.endFlow();
}; };
/** /**
@ -576,7 +584,14 @@ export class BattleHandler {
public onCardDroped(aplayer: Player, dropcards: Card[], fromplayer?: Player){ public onCardDroped(aplayer: Player, dropcards: Card[], fromplayer?: Player){
let ph = this.getPlayer(aplayer); let ph = this.getPlayer(aplayer);
let fromph = this.getPlayer(fromplayer); let fromph = this.getPlayer(fromplayer);
ph && ph.onCardDroped(dropcards, fromph); if(!ph){
return 0;
}
this.beginFlow();
ph.onCardDroped(dropcards, fromph);
return this.endFlow();
}; };
/** /**
@ -591,7 +606,14 @@ export class BattleHandler {
} }
let ph = this.getPlayer(aplayer); let ph = this.getPlayer(aplayer);
let fromph = this.getPlayer(fromplayer); let fromph = this.getPlayer(fromplayer);
ph && ph.onCardGetted(getcards, fromph); if(!ph){
return 0;
}
this.beginFlow();
ph.onCardGetted(getcards, fromph);
return this.endFlow();
}; };
/** /**
@ -706,6 +728,11 @@ export class BattleHandler {
fromplayer: from? from.getId(): null}); fromplayer: from? from.getId(): null});
}; };
public onPlayerDropCardNotify(aplayer: PlayerHandler, count: number, from?: PlayerHandler): number{
this._room.giveUpCard(aplayer.getId(), count);
return count;
};
public onSkillResultNotify(skillres: SkillTarget[]){ public onSkillResultNotify(skillres: SkillTarget[]){
if(!skillres || skillres.length <= 0){ if(!skillres || skillres.length <= 0){
return; return;
@ -768,6 +795,14 @@ export class BattleHandler {
public onPlayerAddHPNotify(aplayer: PlayerHandler, addhp: number){ public onPlayerAddHPNotify(aplayer: PlayerHandler, addhp: number){
return this._room.updateHp(aplayer.getId(), addhp); return this._room.updateHp(aplayer.getId(), addhp);
} };
//end------------------------------------------------ //end------------------------------------------------
public onSkillResult(skillres: SkillTarget[]){
if(this.isFlowing()){ //已处理过
// this._cacheSkills.push(...skillres);
}else{
this.onSkillResultNotify(skillres);
}
}
} }

View File

@ -5,7 +5,7 @@ import CfgMan from "../CfgMan";
import {Skill} from "../skill/Skill"; import {Skill} from "../skill/Skill";
import SkillMan from "../skill/SkillMan"; import SkillMan from "../skill/SkillMan";
import { EnhanceEffectType, PowerValueType, TriggerType } from "../skill/SkillConst"; import { EnhanceEffectType, PowerValueType, SkillEffectType, TriggerType } from "../skill/SkillConst";
import { PlayerHandler } from "./PlayerHandler"; import { PlayerHandler } from "./PlayerHandler";
import { PetInfo, PetInfoMsg } from "../../../message/PetInfo"; import { PetInfo, PetInfoMsg } from "../../../message/PetInfo";
import { SkillParam, SkillTarget } from "../skill/SkillParam"; import { SkillParam, SkillTarget } from "../skill/SkillParam";
@ -50,6 +50,8 @@ export class PetHandler {
_selfskills: number[] = []; _selfskills: number[] = [];
_buffs: Map<number, number> = new Map();
_idx: number; _idx: number;
_bakBaseap: number; _bakBaseap: number;
@ -252,7 +254,7 @@ export class PetHandler {
} }
if(n >= 0){ if(n >= 0){
this.dataChanged(); this.dataChanged();
return value; return -value;
} }
return this.addBaseAP(n); return this.addBaseAP(n);
@ -267,9 +269,11 @@ export class PetHandler {
return 0; return 0;
} }
let res = value;
this._bakBaseap = this._baseap; this._bakBaseap = this._baseap;
this._baseap += value; this._baseap += value;
if(this._baseap <= 0){ if(this._baseap <= 0){
res = -this._bakBaseap;
if(this._isHero){ if(this._isHero){
let tmp = this._baseap; let tmp = this._baseap;
this._baseap = 0; this._baseap = 0;
@ -284,7 +288,7 @@ export class PetHandler {
this.dataChanged(); this.dataChanged();
} }
return value; return res;
}; };
public addExAP(value: number, skill: Skill): number{ public addExAP(value: number, skill: Skill): number{
@ -304,11 +308,22 @@ export class PetHandler {
this._bakTotalap = this.totalAP(); this._bakTotalap = this.totalAP();
}; };
public getHP(){
return this._owner.getHP();
};
public beHurt(value: number): number{ public beHurt(value: number): number{
let rv = value - value * this._exredhurt; let rv = value - value * this._exredhurt;
if(rv < 0){ if(rv < 0){
return 0; rv = 0;
}else if(rv > 0){
// 圣盾减伤后消失
if(this.hasShield()){
this.delShield();
rv = 0;
} }
}
let res = this.subAP(rv); let res = this.subAP(rv);
if(res != 0){ if(res != 0){
@ -320,19 +335,26 @@ export class PetHandler {
public addHP(value: number){ public addHP(value: number){
if(value == 0){ if(value == 0){
return; return 0;
} }
if(this._isHero){ if(this._isHero){
if(this._owner.canBeKill(value) && this.canReborn()){ if(this._owner.canBeKill(value) && this.canReborn()){
// 直接复活 // 直接复活
this._owner.simpleCheckSkills([this._rebornskill], this); this._owner.simpleCheckSkills([this._rebornskill], this);
return; return 0;
} }
this._owner.addHP(value);
return this._owner.addHP(value); return this._owner.addHP(value);
} }
return 0; return 0;
}; };
public addHPS(value: number){
this._hps += value;
(value != 0) && this.dataChanged();
return value;
};
public addReduceHurt(value: number){ public addReduceHurt(value: number){
this._exredhurt += value; this._exredhurt += value;
(value != 0) && this.dataChanged(); (value != 0) && this.dataChanged();
@ -458,6 +480,19 @@ export class PetHandler {
return count; return count;
}; };
public hasShield(): boolean{
return this._buffs.get(SkillEffectType.BUFF_SHIELD) > 0;
};
public delShield(): boolean{
let n = this.delBuff(SkillEffectType.BUFF_SHIELD);
if(n >= 0){
this.dataChanged();
return true;
}
return false;
};
public hasHaloSkill(): boolean{ public hasHaloSkill(): boolean{
return this._halos.length > 0; return this._halos.length > 0;
}; };
@ -476,8 +511,8 @@ export class PetHandler {
this._halos.forEach((item: Skill)=>{ this._halos.forEach((item: Skill)=>{
if(item.isEffSelfPet(this, apet)){ if(item.isEffSelfPet(this, apet)){
if(item.isAPHaloSkill()){ if(item.isAPHaloSkill()){
if(apet._addEffHalo(item)){
bok = true; bok = true;
if(apet._addEffHalo(item)){
} // 加战力 } // 加战力
}else if(item.isBuffHaloSkill()){ }else if(item.isBuffHaloSkill()){
item.trigger(new SkillParam(0, 0, 0, this._owner, item.trigger(new SkillParam(0, 0, 0, this._owner,
@ -502,6 +537,41 @@ export class PetHandler {
return bok; return bok;
}; };
public addBuff(buffid: number, buffcount: number = 1): number{
let n = this._buffs.get(buffid);
// todo: 暂时不叠加
if(n){
return n;
}
let cnt = buffcount;
this._buffs.set(buffid, cnt);
this.dataChanged();
return cnt;
};
public delBuff(buffid: number, buffcount: number = 0): number{
let n = this._buffs.get(buffid);
if(typeof(n) != 'number'){
return -1;
}
if(buffcount == 0){
n = 0;
}else{
n-=buffcount;
if(n < 0){
n = 0;
}
}
if(n <= 0){
this._buffs.delete(buffid);
}else{
this._buffs.set(buffid, n);
}
this.dataChanged();
return n;
};
public checkSkills(tgtype: TriggerType, tgtv: any, sp: SkillParam, cb?: any){ public checkSkills(tgtype: TriggerType, tgtv: any, sp: SkillParam, cb?: any){
if(this._isSilent){ if(this._isSilent){
return; return;
@ -548,7 +618,7 @@ export class PetHandler {
obj.effectCount = this._orignEffCnt; obj.effectCount = this._orignEffCnt;
obj.hps = this._hps; obj.hps = this._hps;
obj.point = this._orignCardPoint; obj.point = this._orignCardPoint;
obj.buffs = []; obj.buffs = [...this._buffs.keys()];
return obj; return obj;
}; };

View File

@ -300,14 +300,28 @@ export class PlayerHandler {
return this._owner.onPlayerStealCardNotify(this, dstplayer, count); return this._owner.onPlayerStealCardNotify(this, dstplayer, count);
}; };
public dropCard(count: number, from?: PlayerHandler): number{
return this._owner.onPlayerDropCardNotify(this, count, from);
};
public addHP(value: number): number{ public addHP(value: number): number{
return this._owner.onPlayerAddHPNotify(this, value); let oldhp = this.getHP();
let newhp = this._owner.onPlayerAddHPNotify(this, value);
return newhp - oldhp;
}; };
public getHP(){ public getHP(){
return this._player.hp; return this._player.hp;
}; };
public addHPS(value: number): number{
return this._self? this._self.addHPS(value): 0;
};
public getHPS(): number{
return this._self? this._self._hps: 0;
};
public addEM(value: number): number{ public addEM(value: number): number{
return this._self? this._self.addEM(value): 0; return this._self? this._self.addEM(value): 0;
}; };
@ -326,6 +340,10 @@ export class PlayerHandler {
} }
}; };
public addReduceHurt(value: number){
return this._self? this._self.addReduceHurt(value): 0;
};
public totalAP(){ public totalAP(){
return this._self? this._self.totalAP(): 0; return this._self? this._self.totalAP(): 0;
}; };
@ -351,10 +369,18 @@ export class PlayerHandler {
return this._self? this._self.attack(sk, apet, param, ev, isAtkBack): 0; 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 beSilent(count: number){ public beSilent(count: number){
return this._self? this._self.beSilent(count): 0; return this._self? this._self.beSilent(count): 0;
}; };
public taunt(){
this._self && this._self.taunt();
};
public canBeKill(subhp: number): boolean{ public canBeKill(subhp: number): boolean{
if(subhp >= 0){ if(subhp >= 0){
return false; return false;
@ -639,7 +665,7 @@ export class PlayerHandler {
}); });
}); });
// this._owner.onSkillResultNotify(reslst); this._owner.onSkillResult(reslst);
}; };
singleCheckSkills(apet: PetHandler, tgttype: TriggerType, tgtvalue?: any, tgtsp?: SkillParam){ singleCheckSkills(apet: PetHandler, tgttype: TriggerType, tgtvalue?: any, tgtsp?: SkillParam){
@ -657,7 +683,7 @@ export class PlayerHandler {
reslst.push(st); reslst.push(st);
} }
}); });
// this._owner.onSkillResultNotify(reslst); this._owner.onSkillResult(reslst);
}; };
simpleCheckSkills(skills: Skill[], apet?: PetHandler, param?: SkillParam): SkillTarget[]{ simpleCheckSkills(skills: Skill[], apet?: PetHandler, param?: SkillParam): SkillTarget[]{
@ -683,7 +709,7 @@ export class PlayerHandler {
}); });
}); });
// this._owner.onSkillResultNotify(reslst); this._owner.onSkillResult(reslst);
return reslst; return reslst;
}; };
@ -705,5 +731,13 @@ export class PlayerHandler {
addTotalCard(v: number){ addTotalCard(v: number){
this._totalcc += v; this._totalcc += v;
};
addBuff(buffid: number, buffcount: number = 1): number{
return this._self? this._self.addBuff(buffid, buffcount): 0;
};
delBuff(buffid: number, buffcount: number = 0): number{
return this._self? this._self.delBuff(buffid, buffcount): -1;
} }
} }

View File

@ -108,11 +108,6 @@ export class Skill {
return this._data.effect_typeid == SkillEffectType.CARD_CHG_EN; return this._data.effect_typeid == SkillEffectType.CARD_CHG_EN;
}; };
isHurtSkill(){
return this._data.effect_typeid == SkillEffectType.HURT_POWER ||
this._data.effect_typeid == SkillEffectType.HURT_ALL;
};
isAttackSkill(){ isAttackSkill(){
return this._data.effect_typeid == SkillEffectType.ATTACK; return this._data.effect_typeid == SkillEffectType.ATTACK;
}; };
@ -424,6 +419,20 @@ export class Skill {
tgt.fail(efftype, -1); tgt.fail(efftype, -1);
} }
break; break;
case SkillEffectType.CARD_DROP:
{
if(tgt.dsttype == GameUnitType.PLAYER){
let n = (tgt.dst as PlayerHandler).dropCard(res, tgt.srcplayer);
if(n >= 0){
tgt.success(efftype, n);
}else{
tgt.fail(efftype, n);
}
}else{
tgt.fail(efftype, -1);
}
break;
}break;
default: default:
break; break;
} }
@ -443,9 +452,19 @@ export class Skill {
case SkillEffectType.HURT_POWER: case SkillEffectType.HURT_POWER:
case SkillEffectType.HURT_ALL: case SkillEffectType.HURT_ALL:
let effv = this.EMV(effvalue); let effv = this.EMV(effvalue);
if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){ if(tgt.dsttype != GameUnitType.NONE){
let n = (tgt.dst as PetHandler).beHurt(effv); let oldhp = tgt.dst.getHP();
tgt.success(efftype, n); let n = tgt.dst.beHurt(effv);
if(n != 0){
tgt.success(SkillEffectType.HURT_POWER, n);
}
let dthp = tgt.dst.getHP() - oldhp;
if(dthp != 0){
tgt.success(SkillEffectType.HURT_HP, dthp);
}
if(!this.canEM()){
//todo: 吸血
}
}else{ }else{
tgt.fail(efftype, -1); tgt.fail(efftype, -1);
} }
@ -457,7 +476,7 @@ export class Skill {
handleHP(effvalue: number, tgt: SkillTarget){ handleHP(effvalue: number, tgt: SkillTarget){
let efftype = SkillEffectType.HURT_HP; let efftype = SkillEffectType.HURT_HP;
if(tgt.dsttype == GameUnitType.PLAYER || tgt.dsttype == GameUnitType.HERO){ if(tgt.dsttype != GameUnitType.NONE){
let effv = this.EMV(effvalue); let effv = this.EMV(effvalue);
let n = tgt.dst.addHP(effv); let n = tgt.dst.addHP(effv);
tgt.success(efftype, n); tgt.success(efftype, n);
@ -466,6 +485,17 @@ export class Skill {
} }
}; };
handleHPS(effvalue: number, tgt: SkillTarget){
let efftype = SkillEffectType.HP_STEAL_ENHANCE;
if(tgt.dsttype != GameUnitType.NONE){
let effv = effvalue;
let n = tgt.dst.addHPS(effv);
tgt.success(efftype, n);
}else{
tgt.fail(efftype, -1);
}
};
summon(efftype: SkillEffectType, exparam: SkillParam, tgt: SkillTarget){ summon(efftype: SkillEffectType, exparam: SkillParam, tgt: SkillTarget){
switch(efftype){ switch(efftype){
case SkillEffectType.SUMMON_NPC: case SkillEffectType.SUMMON_NPC:
@ -546,8 +576,8 @@ export class Skill {
taunt(tgt:SkillTarget){ taunt(tgt:SkillTarget){
let efftype = SkillEffectType.TAUNT; let efftype = SkillEffectType.TAUNT;
if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){ if(tgt.dsttype != GameUnitType.NONE){
(tgt.dst as PetHandler).taunt(); tgt.dst.taunt();
tgt.success(efftype, 1); tgt.success(efftype, 1);
}else{ }else{
tgt.fail(efftype, -1); tgt.fail(efftype, -1);
@ -555,13 +585,28 @@ export class Skill {
}; };
addBuff(efftype: SkillEffectType, effvalue: number, tgt: SkillTarget){ addBuff(efftype: SkillEffectType, effvalue: number, tgt: SkillTarget){
switch(efftype){
case SkillEffectType.BUFF_SHIELD:
if(tgt.dsttype != GameUnitType.NONE){
let n = tgt.dst.addBuff(efftype);
if(n){
tgt.success(efftype, n);
}else{
tgt.fail(efftype, n);
}
}else{
tgt.fail(efftype, -1);
}
break;
default:
break;
}
}; };
reduceHurt(effvalue: number, tgt: SkillTarget){ reduceHurt(effvalue: number, tgt: SkillTarget){
let efftype = SkillEffectType.HURT_REDUCE; let efftype = SkillEffectType.HURT_REDUCE;
if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){ if(tgt.dsttype != GameUnitType.NONE){
let n = (tgt.dst as PetHandler).addReduceHurt(effvalue); let n = tgt.dst.addReduceHurt(effvalue);
tgt.success(efftype, n); tgt.success(efftype, n);
}else{ }else{
tgt.fail(efftype, -1); tgt.fail(efftype, -1);
@ -591,6 +636,10 @@ export class Skill {
return effvalue + ev; return effvalue + ev;
}; };
canEM(){
return this._data.spellpower;
};
reborn(tgt: SkillTarget){ reborn(tgt: SkillTarget){
let efftype = SkillEffectType.REBORN; let efftype = SkillEffectType.REBORN;
if(tgt.dsttype != GameUnitType.NONE){ if(tgt.dsttype != GameUnitType.NONE){
@ -621,11 +670,12 @@ export class Skill {
attack(effvalue: number, tgt: SkillTarget, param: SkillParam, isAtkBack: boolean = false){ attack(effvalue: number, tgt: SkillTarget, param: SkillParam, isAtkBack: boolean = false){
let efftype = isAtkBack? SkillEffectType.ATTACK_BACK: SkillEffectType.ATTACK; let efftype = isAtkBack? SkillEffectType.ATTACK_BACK: SkillEffectType.ATTACK;
if(tgt.dsttype == GameUnitType.HERO || tgt.dsttype == GameUnitType.PET){ if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){
let obj = tgt.srcpet? tgt.srcpet: tgt.srcplayer; let obj = tgt.srcpet? tgt.srcpet: tgt.srcplayer;
let v = effvalue; let v = effvalue;
let oldhp = tgt.dst.getHP();
let res = obj.attack(this, (tgt.dst as PetHandler), param, v, isAtkBack); let res = obj.attack(this, (tgt.dst as PetHandler), param, v, isAtkBack);
if(res){ if(res <= 0){
tgt.success(efftype, res); tgt.success(efftype, res);
// if(this._data.quoteskillid){ // if(this._data.quoteskillid){
// let dp = this._data.skill_users? param.oppClone(): param; // let dp = this._data.skill_users? param.oppClone(): param;
@ -635,6 +685,13 @@ export class Skill {
// } // }
// (tgt.dst as PetHandler).attack(pet, dp, 0, true); // (tgt.dst as PetHandler).attack(pet, dp, 0, true);
// } // }
let dthp = tgt.dst.getHP() - oldhp;
if(dthp != 0){
tgt.success(SkillEffectType.HURT_HP, dthp);
}
if(!this.canEM()){
//todo: 吸血
}
}else{ }else{
tgt.fail(efftype, -1); tgt.fail(efftype, -1);
} }

View File

@ -164,6 +164,11 @@ export const enum SkillRangeUnitType{
* 26. * 26.
* 27. * 27.
* 28.使ID * 28.使ID
* 29.
* 30.使0
0
便
* 31.使+%
*/ */
export const enum SkillEffectType export const enum SkillEffectType
{ {
@ -189,6 +194,9 @@ export const enum SkillEffectType
REBORN = 26, REBORN = 26,
ATTACK_BACK = 27, ATTACK_BACK = 27,
SKILL_GET = 28, SKILL_GET = 28,
CARD_DROP = 29,
BUFF_SHIELD = 30,
HP_STEAL_ENHANCE = 31,
}; };
// 技能效果参数类型 // 技能效果参数类型

View File

@ -50,12 +50,14 @@ export class SkillResult{
effect_res: number; effect_res: number;
err: number; err: number;
bsuccess: boolean; bsuccess: boolean;
beffsrc: boolean;
constructor(efftype: number, effres: number, issuccess: boolean, err: number = 0) { constructor(efftype: number, effres: number, issuccess: boolean, err: number = 0, issrc: boolean = false) {
this.effect_type = efftype; this.effect_type = efftype;
this.effect_res = effres; this.effect_res = effres;
this.err = err; this.err = err;
this.bsuccess = issuccess; this.bsuccess = issuccess;
this.beffsrc = issrc;
} }
}; };
@ -71,7 +73,7 @@ export class SkillTarget{
lasttime: number; lasttime: number;
bresok: boolean = false; bresok: boolean = false;
res: SkillResult; res: SkillResult[];
constructor(skill: Skill, splayer?: PlayerHandler, spet?: PetHandler, dstobj?: any, dsttype?: GameUnitType) { constructor(skill: Skill, splayer?: PlayerHandler, spet?: PetHandler, dstobj?: any, dsttype?: GameUnitType) {
this.srcplayer = splayer; this.srcplayer = splayer;
@ -119,6 +121,26 @@ export class SkillTarget{
return (this.dst as PetHandler)._owner; return (this.dst as PetHandler)._owner;
}; };
public srcPet(): PetHandler{
if(this.srcpet){
return this.srcpet;
}
if(this.srcplayer){
return this.srcplayer._self;
}
return null;
};
public srcPlayer(): PlayerHandler{
if(this.srcplayer){
return this.srcplayer;
}
if(this.srcpet){
return this.srcpet._owner;
}
return null;
};
oppClone(){ oppClone(){
let st = new SkillTarget(this.srcskill); let st = new SkillTarget(this.srcskill);
@ -142,18 +164,20 @@ export class SkillTarget{
}; };
public checkRes(){ public checkRes(){
if(!this.res){
this.res = [];
}
}; };
public success(efftype: number, effres: number){ public success(efftype: number, effres: number, effsrc: boolean = false){
this.checkRes(); this.checkRes();
this.res = new SkillResult(efftype, effres, true); this.res.push(new SkillResult(efftype, effres, true, 0, effsrc));
this.bresok = true; this.bresok = true;
}; };
public fail(efftype: number, err: number){ public fail(efftype: number, err: number){
this.checkRes(); this.checkRes();
this.res = new SkillResult(efftype, 0, false, err); this.res.push(new SkillResult(efftype, 0, false, err));
}; };
public getLastTime(){ public getLastTime(){
@ -171,18 +195,10 @@ export class SkillTarget{
if(!this.res){ if(!this.res){
msg.errcode = -1; msg.errcode = -1;
}else{ }else{
let ed = new SKillEffectData(); this.res.forEach((item: SkillResult) => {
if(this.dsttype == GameUnitType.PLAYER){ let ed = this.exportResData(item);
ed.pos = 0; ed && obj.datas.push(ed);
ed.player = (this.dst as PlayerHandler).getId(); });
}else {
ed.pos = (this.dst as PetHandler)._idx;
ed.player = (this.dst as PetHandler)._owner.getId();
}
ed.effect_id = this.res.effect_type;
ed.val = this.res.bsuccess? this.res.effect_res: this.res.err;
ed.result = this.res.bsuccess? 0: -1;
obj.datas.push(ed);
} }
return msg; return msg;
}; };
@ -200,8 +216,24 @@ export class SkillTarget{
obj.pos = st.srcpet? st.srcpet._idx: 0; obj.pos = st.srcpet? st.srcpet._idx: 0;
obj.datas = []; obj.datas = [];
lst.forEach((item: SkillTarget) => { lst.forEach((item: SkillTarget) => {
if(item.res){ item.res && item.res.forEach((skres: SkillResult) => {
let ed = item.exportResData(skres);
ed && obj.datas.push(ed);
});
});
return msg;
};
public exportResData(skres: SkillResult, sk?: SkillTarget): SKillEffectData{
let item = sk? sk: this;
let res = skres;
if(res){
let ed = new SKillEffectData(); let ed = new SKillEffectData();
if(res.beffsrc){
ed.pos = item.srcPet()._idx;
ed.player = item.srcPlayer().getId();
}else{
if(item.dsttype == GameUnitType.PLAYER){ if(item.dsttype == GameUnitType.PLAYER){
ed.pos = 0; ed.pos = 0;
ed.player = (item.dst as PlayerHandler).getId(); ed.player = (item.dst as PlayerHandler).getId();
@ -209,14 +241,15 @@ export class SkillTarget{
ed.pos = (item.dst as PetHandler)._idx; ed.pos = (item.dst as PetHandler)._idx;
ed.player = (item.dst as PetHandler)._owner.getId(); ed.player = (item.dst as PetHandler)._owner.getId();
} }
}
let res = item.res;
ed.effect_id = res.effect_type; ed.effect_id = res.effect_type;
ed.val = res.bsuccess? res.effect_res: res.err; ed.val = res.bsuccess? res.effect_res: res.err;
ed.result = res.bsuccess? 0: -1; ed.result = res.bsuccess? 0: -1;
obj.datas.push(ed);
return ed;
} }
});
return msg; return null;
} }
}; };

View File

@ -99,6 +99,7 @@ let TriggerManager = {
case SkillEffectType.CARD_STEAL: case SkillEffectType.CARD_STEAL:
case SkillEffectType.CARD_CHG_EN: case SkillEffectType.CARD_CHG_EN:
case SkillEffectType.CARD_GETDIRECT: case SkillEffectType.CARD_GETDIRECT:
case SkillEffectType.CARD_DROP:
tgts.forEach((item)=>{ tgts.forEach((item)=>{
sender.handleCard(effectid, effv, item); sender.handleCard(effectid, effv, item);
}); });
@ -129,6 +130,7 @@ let TriggerManager = {
}); });
break; break;
case SkillEffectType.POWER_ADD_BUFF: case SkillEffectType.POWER_ADD_BUFF:
case SkillEffectType.BUFF_SHIELD:
tgts.forEach((item)=>{ tgts.forEach((item)=>{
sender.addBuff(effectid, effv, item); sender.addBuff(effectid, effv, item);
}); });
@ -162,6 +164,11 @@ let TriggerManager = {
sender.attack(ev, item, param, atkback); sender.attack(ev, item, param, atkback);
}); });
break; break;
case SkillEffectType.HP_STEAL_ENHANCE:
tgts.forEach((item)=>{
sender.handleHPS(effv, item);
});
break;
default: default:
break; break;
} }
@ -171,23 +178,6 @@ let TriggerManager = {
handleEffectParam(effectid: SkillEffectType, paramlst: any) { handleEffectParam(effectid: SkillEffectType, paramlst: any) {
return paramlst; return paramlst;
switch (effectid) {
case SkillEffectType.NONE:
case SkillEffectType.CARD_ADD:
case SkillEffectType.CARD_ADD_LIMIT:
case SkillEffectType.CARD_STEAL:
case SkillEffectType.CARD_CHG_EN:
case SkillEffectType.POWER_ENHANCE:
case SkillEffectType.POWEREX_ENHANCE:
case SkillEffectType.HURT_POWER:
case SkillEffectType.SUMMON_NPC:
case SkillEffectType.SUMMON_SKILL:
case SkillEffectType.TAUNT:
case SkillEffectType.HURT_HP:
case SkillEffectType.POWER_ADD_BUFF:
case SkillEffectType.HURT_REDUCE:
break;
}
}, },
} }