增加技能唯一处理
This commit is contained in:
parent
f3751495dd
commit
94e8a9e17b
@ -12,7 +12,7 @@ import { PetHandler } from "./PetHandler";
|
|||||||
import { SKillEffectData, SkillInfoMsg } from "message/SkillInfo";
|
import { SKillEffectData, SkillInfoMsg } from "message/SkillInfo";
|
||||||
import { PetInfo } from "message/PetInfo";
|
import { PetInfo } from "message/PetInfo";
|
||||||
import arrUtil from "../../../utils/array.util";
|
import arrUtil from "../../../utils/array.util";
|
||||||
import { debugRoom } from "../../../common/Debug";
|
import { debugRoom, error } from "../../../common/Debug";
|
||||||
import { RemovePetMsg } from "message/RemovePetMsg";
|
import { RemovePetMsg } from "message/RemovePetMsg";
|
||||||
|
|
||||||
|
|
||||||
@ -692,6 +692,7 @@ export class BattleHandler {
|
|||||||
oldpos?: number})
|
oldpos?: number})
|
||||||
:number{
|
:number{
|
||||||
if(!obj || !obj.card){
|
if(!obj || !obj.card){
|
||||||
|
error(`[useCard]not card!`);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -702,6 +703,7 @@ export class BattleHandler {
|
|||||||
let dstpt = dstph? dstph.getPet(obj.dstpet): null;
|
let dstpt = dstph? dstph.getPet(obj.dstpet): null;
|
||||||
|
|
||||||
if(!ph){
|
if(!ph){
|
||||||
|
error(`[useCard]not player!${obj.srcplayer.id}`);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -612,12 +612,21 @@ export class PetHandler {
|
|||||||
return n;
|
return n;
|
||||||
};
|
};
|
||||||
|
|
||||||
public checkSkills(tgtype: TriggerType, tgtv: PlayerHandler, sp: SkillParam, cb?: any){
|
public checkSkills(tgtype: TriggerType, tgtv: PlayerHandler, sp: SkillParam, cb?: any, soleskills?: Map<number, any>){
|
||||||
if(this._isSilent){
|
if(this._isSilent){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this._waitskills.forEach((item: Skill) => {
|
this._waitskills.forEach((item: Skill) => {
|
||||||
item.checkTrigger(tgtype, tgtv, sp, cb);
|
let bfind = false;
|
||||||
|
if(soleskills){
|
||||||
|
bfind = !!soleskills.get(item._id);
|
||||||
|
}
|
||||||
|
if(!bfind){
|
||||||
|
let bok = !!item.checkTrigger(tgtype, tgtv, sp, cb);
|
||||||
|
if(bok && item.isSoleSkill() && soleskills){
|
||||||
|
soleskills.set(item._id, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ import { Card } from "rooms/schema/Card";
|
|||||||
import arrUtil from "utils/array.util";
|
import arrUtil from "utils/array.util";
|
||||||
import { SKillEffectData } from "message/SkillInfo";
|
import { SKillEffectData } from "message/SkillInfo";
|
||||||
import { GameEnv } from "../../../cfg/GameEnv";
|
import { GameEnv } from "../../../cfg/GameEnv";
|
||||||
|
import { error } from "../../../common/Debug";
|
||||||
|
|
||||||
export class PlayerHandler {
|
export class PlayerHandler {
|
||||||
public _player: Player;
|
public _player: Player;
|
||||||
@ -208,6 +209,7 @@ export class PlayerHandler {
|
|||||||
{
|
{
|
||||||
let cfg = CfgMan.findEffCardCfg(obj.cardid);
|
let cfg = CfgMan.findEffCardCfg(obj.cardid);
|
||||||
if(!cfg){
|
if(!cfg){
|
||||||
|
error(`[useCard]not config!${obj.cardid}`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,6 +234,7 @@ export class PlayerHandler {
|
|||||||
|
|
||||||
let pet = this.newPet();
|
let pet = this.newPet();
|
||||||
if(!pet){
|
if(!pet){
|
||||||
|
error(`[useCard]not empty pet!${obj.cardid}|${oldpos}`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
obj.srcpet = pet;
|
obj.srcpet = pet;
|
||||||
@ -812,6 +815,8 @@ export class PlayerHandler {
|
|||||||
sp = new SkillParam(0, 0, 0, this, this._self, null, null);
|
sp = new SkillParam(0, 0, 0, this, this._self, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let soleskills: Map<number, Skill> = new Map();
|
||||||
|
|
||||||
let reslst: SkillTarget[] = [];
|
let reslst: SkillTarget[] = [];
|
||||||
this._self && (this._self != expet) && this._self.checkSkills(tgttype, tgtvalue, sp, (skill: Skill, ap: SkillParam, res: SkillTarget[])=>{
|
this._self && (this._self != expet) && this._self.checkSkills(tgttype, tgtvalue, sp, (skill: Skill, ap: SkillParam, res: SkillTarget[])=>{
|
||||||
if(res){
|
if(res){
|
||||||
@ -821,7 +826,7 @@ export class PlayerHandler {
|
|||||||
st.LoadParam(sp);
|
st.LoadParam(sp);
|
||||||
reslst.push(st);
|
reslst.push(st);
|
||||||
}
|
}
|
||||||
});
|
}, soleskills);
|
||||||
|
|
||||||
this._pets.forEach((item: PetHandler) => {
|
this._pets.forEach((item: PetHandler) => {
|
||||||
if(!item.isAlive()){
|
if(!item.isAlive()){
|
||||||
@ -839,7 +844,7 @@ export class PlayerHandler {
|
|||||||
st.LoadParam(sp);
|
st.LoadParam(sp);
|
||||||
reslst.push(st);
|
reslst.push(st);
|
||||||
}
|
}
|
||||||
});
|
}, soleskills);
|
||||||
});
|
});
|
||||||
|
|
||||||
this._owner.onSkillResult(reslst);
|
this._owner.onSkillResult(reslst);
|
||||||
|
@ -129,6 +129,10 @@ export class Skill {
|
|||||||
return this._data.effect_typeid == SkillEffectType.SKILL_GET;
|
return this._data.effect_typeid == SkillEffectType.SKILL_GET;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
isSoleSkill(){
|
||||||
|
return this._data.repeatedeffect == 1;
|
||||||
|
};
|
||||||
|
|
||||||
isSingleTarget(){
|
isSingleTarget(){
|
||||||
switch(this._data.rangeid){
|
switch(this._data.rangeid){
|
||||||
case SkillRangeUnitType.ALL:
|
case SkillRangeUnitType.ALL:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user