增加触发技能处理

This commit is contained in:
y.x 2020-12-08 12:07:53 +08:00
parent 3288cb74a0
commit 26bfd6a378
5 changed files with 67 additions and 27 deletions

View File

@ -188,7 +188,7 @@ export class BattleHandler {
ph.useCard(ps); ph.useCard(ps);
this.onUseCardEnd(obj); this.onUseCardEnd(ps);
}; };
/** /**
@ -211,7 +211,7 @@ export class BattleHandler {
}; };
/** /**
* / * /[]
* @param aplayer : 玩家 * @param aplayer : 玩家
* @param fromplayer * @param fromplayer
*/ */
@ -222,27 +222,25 @@ export class BattleHandler {
}; };
/** /**
* /?? * / ??
* @param aplayer * @param aplayer
* @param linkcards * @param linkcards
*/ */
public onCardLinkOver(aplayer: Player, linkcards: Card[]){ public onCardLinkOver(aplayer: Player, linkcards: Card[], fromplayer?: Player){
let ph = this.getPlayer(aplayer); let ph = this.getPlayer(aplayer);
ph && ph.onCardLinkEnd(linkcards); let fromph = this.getPlayer(fromplayer);
ph && ph.onCardLinkEnd(linkcards, fromph);
}; };
/** /**
* 使 * 使
* @param obj 使 * @param sp 使
*/ */
public onUseCardEnd(obj: public onUseCardEnd(sp: SkillParam){
{srcplayer: Player, card: number, cardpoint: number, dbpt_cnt: number, eff_cnt: number, dstplayer: Player, dstpet: Pet} if(!sp){
){
if(!obj){
return; return;
} }
let ph = this.getPlayer(obj.srcplayer); sp.srcplayer && sp.srcplayer.onUseCardEnd(sp);
ph && ph.onUseCardEnd();
}; };
/** /**

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 } from "../skill/SkillConst"; import { EnhanceEffectType, PowerValueType, TriggerType } from "../skill/SkillConst";
import { PlayerHandler } from "./PlayerHandler"; import { PlayerHandler } from "./PlayerHandler";
import { PetInfoMsg } from "../../../message/PetInfo"; import { PetInfoMsg } from "../../../message/PetInfo";
import { SkillParam } from "../skill/SkillParam"; import { SkillParam } from "../skill/SkillParam";
@ -24,6 +24,8 @@ export class PetHandler {
_effhalos: Skill[] = []; _effhalos: Skill[] = [];
_waitskills: Skill[] = [];
_baseap: number; // 基础 _baseap: number; // 基础
_exap: number = 0; // 额外 _exap: number = 0; // 额外
@ -109,6 +111,8 @@ export class PetHandler {
}else if(obj.isHaloSkill()){ }else if(obj.isHaloSkill()){
this._halos.push(obj); this._halos.push(obj);
halocb && halocb(this); halocb && halocb(this);
}else{
this._waitskills.push(obj);
} }
} }
@ -136,6 +140,10 @@ export class PetHandler {
this._halos.splice(idx, 1); this._halos.splice(idx, 1);
halocb && halocb(this); halocb && halocb(this);
} }
idx = this._waitskills.indexOf(obj);
if(idx >= 0){
this._waitskills.splice(idx, 1);
}
} }
this._skills.delete(skillid); this._skills.delete(skillid);
} }
@ -205,6 +213,12 @@ export class PetHandler {
}); });
}; };
public checkSkills(tgtype: TriggerType){
this._waitskills.forEach((item: Skill) => {
item.checkTrigger(tgtype, )
});
};
public exportData(): PetInfoMsg{ public exportData(): PetInfoMsg{
let obj = new PetInfoMsg({ let obj = new PetInfoMsg({
id: this._id, id: this._id,

View File

@ -22,13 +22,11 @@ export class PlayerHandler {
public _pets: PetHandler[] = []; public _pets: PetHandler[] = [];
public _skills: Skill[] = [];
public _exskills: Skill[] = [];
public _owner: BattleHandler; public _owner: BattleHandler;
_friend: PlayerHandler; public _friend: PlayerHandler;
_totalcc: number = 0;
public init(aplayer: Player, owner: BattleHandler){ public init(aplayer: Player, owner: BattleHandler){
this._owner = owner; this._owner = owner;
@ -48,7 +46,7 @@ export class PlayerHandler {
}; };
public getTotalCardCount(){ public getTotalCardCount(){
return 0; return this._totalcc;
}; };
public getId(): string{ public getId(): string{
@ -299,30 +297,54 @@ export class PlayerHandler {
}; };
onCardLinkReady(fromplayer: PlayerHandler){ onCardLinkReady(fromplayer: PlayerHandler){
this.checkSkills(TriggerType.CARD_LINK_BEFORE);
}; };
onCardLinkEnd(linkcards: Card[]){ onCardLinkEnd(linkcards: Card[], fromplayer: PlayerHandler){
this.checkSkills(TriggerType.CARD_LINK_AFTER);
}; };
onCardDroped(dropcards: Card[], srcplayer: PlayerHandler){ onCardDroped(dropcards: Card[], srcplayer: PlayerHandler){
this.checkSkills(TriggerType.CARD_DROP_MYROUND);
}; };
onCardGetted(getcards: Card[], srcplayer: PlayerHandler){ onCardGetted(getcards: Card[], srcplayer: PlayerHandler){
getcards && (this._totalcc += getcards.length);
this.checkSkills(TriggerType.CARD_GETTED);
}; };
onUseCardEnd(){ onUseCardEnd(sp: SkillParam){
this.checkSkills(TriggerType.CARD_USED, 0, sp);
}; };
onRoundStart(){ onRoundStart(){
this.checkSkills(TriggerType.ROUND_START_MYSELF);
}; };
onRoundEnd(){ onRoundEnd(){
this.checkSkills(TriggerType.ROUND_END_MYSELF);
};
checkSkills(tgttype: TriggerType, tgtvalue?: any, tgtsp?: SkillParam){
let sp = tgtsp;
if(!sp){
sp = new SkillParam(0, 0, 0, this, this._self, null, null);
}
let reslst: SkillTarget[] = [];
this._self._waitskills.forEach((item:Skill) => {
item.checkTrigger(tgttype, tgtvalue, sp, (skill: Skill, ap: SkillParam, res: SkillTarget[])=>{
if(res){
reslst = reslst.concat(res);
}else{
let st = new SkillTarget(skill);
st.LoadParam(sp);
reslst.push(st);
}
});
});
};
resetTotalCard(){
this._totalcc = 0;
} }
} }

View File

@ -178,6 +178,9 @@ export class Skill {
this._man && this._man.onSkillTrigger(this, param, res); this._man && this._man.onSkillTrigger(this, param, res);
if(this.isTotalCardSkill()){
this._owner && this._owner.resetTotalCard();
}
return res; return res;
}; };

View File

@ -46,6 +46,7 @@ export class SkillTarget{
srcplayer: PlayerHandler; srcplayer: PlayerHandler;
srcpet: PetHandler; srcpet: PetHandler;
srcskill: Skill; srcskill: Skill;
srcskillid: number;
dst: any; dst: any;
dsttype: GameUnitType; dsttype: GameUnitType;
@ -55,6 +56,7 @@ export class SkillTarget{
this.srcplayer = splayer; this.srcplayer = splayer;
this.srcpet = spet; this.srcpet = spet;
this.srcskill = skill; this.srcskill = skill;
this.srcskillid = skill._id;
this.dst = dstobj; this.dst = dstobj;
this.dsttype = dsttype; this.dsttype = dsttype;
}; };
@ -91,6 +93,7 @@ export class SkillTarget{
let msg = new SkillInfoMsg(); let msg = new SkillInfoMsg();
msg.data = new SkillInfoData(); msg.data = new SkillInfoData();
let obj = msg.data; let obj = msg.data;
obj.skill_id = this.srcskillid;
obj.player = this.srcplayer.getId(), obj.player = this.srcplayer.getId(),
obj.pos = this.srcpet? this.srcpet._idx: 0; obj.pos = this.srcpet? this.srcpet._idx: 0;
obj.datas = []; obj.datas = [];