优化多次技能问题
This commit is contained in:
parent
02a74035e3
commit
fd8134cc84
@ -273,7 +273,7 @@ export class BattleHandler {
|
||||
return bok? pet: null;
|
||||
};
|
||||
|
||||
public buildSkillTarget(sk: Skill, src: PetHandler, dst: PetHandler | PlayerHandler): SkillTarget{
|
||||
public buildSkillTarget(sk: Skill, src: PetHandler, dst: PetHandler | PlayerHandler, flag: number): SkillTarget{
|
||||
if(!dst){
|
||||
return null;
|
||||
}
|
||||
@ -284,11 +284,11 @@ export class BattleHandler {
|
||||
ut = GameUnitType.PLAYER;
|
||||
}
|
||||
let owner = sk? sk._owner: null;
|
||||
return new SkillTarget(sk, src? src._owner: owner, src, dst, ut);
|
||||
return new SkillTarget(sk, src? src._owner: owner, src, dst, ut, flag);
|
||||
};
|
||||
|
||||
public singleSkillTargets(sk: Skill, src: PetHandler, dst: PetHandler | PlayerHandler): SkillTarget[]{
|
||||
let tgt = this.buildSkillTarget(sk, src, dst);
|
||||
let tgt = this.buildSkillTarget(sk, src, dst, 0);
|
||||
if(this.isFlowing() && tgt){
|
||||
this._cacheSkills.push(tgt);
|
||||
}
|
||||
@ -296,7 +296,7 @@ export class BattleHandler {
|
||||
};
|
||||
|
||||
public singleSkillTarget(sk: Skill, src: PetHandler, dst: PetHandler | PlayerHandler): SkillTarget{
|
||||
let tgt = this.buildSkillTarget(sk, src, dst);
|
||||
let tgt = this.buildSkillTarget(sk, src, dst, 0);
|
||||
if(this.isFlowing() && tgt){
|
||||
this._cacheSkills.push(tgt);
|
||||
}
|
||||
@ -312,7 +312,7 @@ export class BattleHandler {
|
||||
return lst;
|
||||
};
|
||||
|
||||
public getSkillTargets(skill: Skill, param: SkillParam, lastph: PlayerHandler): SkillTarget[]{
|
||||
public getSkillTargets(skill: Skill, param: SkillParam, flag: number, lastph: PlayerHandler): SkillTarget[]{
|
||||
let lst: SkillTarget[] = [];
|
||||
let players = this.getTargetPlayers(skill._data.friendlyid, param.srcplayer, param.dstplayer, lastph);
|
||||
if(players.length > 0){
|
||||
@ -320,12 +320,12 @@ export class BattleHandler {
|
||||
case GameUnitType.PLAYER:
|
||||
if(skill._data.rangeid == SkillRangeUnitType.PLAYER_BELINKED){
|
||||
this._lastlinkph && lst.push(
|
||||
this.buildSkillTarget(skill, param.srcpet, this._lastlinkph)
|
||||
this.buildSkillTarget(skill, param.srcpet, this._lastlinkph, flag)
|
||||
);
|
||||
}else{
|
||||
players.forEach((item:PlayerHandler)=>{
|
||||
lst.push(
|
||||
this.buildSkillTarget(skill, param.srcpet, item)
|
||||
this.buildSkillTarget(skill, param.srcpet, item, flag)
|
||||
);
|
||||
});
|
||||
}
|
||||
@ -333,7 +333,7 @@ export class BattleHandler {
|
||||
case GameUnitType.HERO:
|
||||
players.forEach((item:PlayerHandler)=>{
|
||||
lst.push(
|
||||
this.buildSkillTarget(skill, param.srcpet, item._self)
|
||||
this.buildSkillTarget(skill, param.srcpet, item._self, flag)
|
||||
);
|
||||
});
|
||||
break;
|
||||
@ -343,12 +343,12 @@ export class BattleHandler {
|
||||
let pet = this.getFinalTarget(skill._data.rangeid, players, param.dstpet, param.srcpet, skill._petowner,
|
||||
skill._data.targetid, !!skill._data.ridicule, skill._data.targetid == GameUnitType.PET);
|
||||
pet && lst.push(
|
||||
this.buildSkillTarget(skill, param.srcpet, pet)
|
||||
this.buildSkillTarget(skill, param.srcpet, pet, flag)
|
||||
);
|
||||
}else{
|
||||
let expet = skill.getExPet(param.srcpet);
|
||||
players.forEach((item: PlayerHandler)=>{
|
||||
item.exportAllPets(skill, param, expet, lst);
|
||||
item.exportAllPets(skill, param, expet, flag, lst);
|
||||
});
|
||||
}
|
||||
break;
|
||||
@ -960,7 +960,7 @@ export class BattleHandler {
|
||||
let lastkey = '';
|
||||
let cnt = 0;
|
||||
skillres.forEach((item: SkillTarget)=>{
|
||||
let key = item.srcskillid + '|' + item.srcplayer.getId();
|
||||
let key = item.srcskillid + '|' + item.srcplayer.getId() + '|' + item.flag;
|
||||
if(item.srcpet){
|
||||
key += '|' + item.srcpet._idx;
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ export class PlayerHandler {
|
||||
})
|
||||
};
|
||||
|
||||
public exportAllPets(skill: Skill, param: SkillParam, expet: PetHandler, dst: SkillTarget[]): SkillTarget[]{
|
||||
public exportAllPets(skill: Skill, param: SkillParam, expet: PetHandler, flag: number, dst: SkillTarget[]): SkillTarget[]{
|
||||
if(!dst){
|
||||
return null;
|
||||
}
|
||||
@ -148,21 +148,21 @@ export class PlayerHandler {
|
||||
let lst = this._pets.reverse();
|
||||
lst.forEach(element => {
|
||||
if(expet != element && element.isAlive()){
|
||||
dst.push(new SkillTarget(skill, param.srcplayer, param.srcpet, element, GameUnitType.PET));
|
||||
dst.push(new SkillTarget(skill, param.srcplayer, param.srcpet, element, GameUnitType.PET, flag));
|
||||
}
|
||||
});
|
||||
(expet != this._self) && dst.push(new SkillTarget(skill, param.srcplayer, param.srcpet, this._self, GameUnitType.HERO));
|
||||
(expet != this._self) && dst.push(new SkillTarget(skill, param.srcplayer, param.srcpet, this._self, GameUnitType.HERO, flag));
|
||||
}
|
||||
break;
|
||||
case GameUnitType.HERO:
|
||||
(expet != this._self) && dst.push(new SkillTarget(skill, param.srcplayer, param.srcpet, this._self, GameUnitType.HERO));
|
||||
(expet != this._self) && dst.push(new SkillTarget(skill, param.srcplayer, param.srcpet, this._self, GameUnitType.HERO, flag));
|
||||
break;
|
||||
case GameUnitType.PET:
|
||||
{
|
||||
let lst = this._pets.reverse();
|
||||
lst.forEach(element => {
|
||||
if(expet != element && element.isAlive()){
|
||||
dst.push(new SkillTarget(skill, param.srcplayer, param.srcpet, element, GameUnitType.PET));
|
||||
dst.push(new SkillTarget(skill, param.srcplayer, param.srcpet, element, GameUnitType.PET, flag));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -224,8 +224,8 @@ export class Skill {
|
||||
return this._owner._owner.singleSkillTargets(this, this._petowner, this._petowner);
|
||||
};
|
||||
|
||||
getTargets(param: SkillParam, lastph?: PlayerHandler): SkillTarget[]{
|
||||
return this._owner._owner.getSkillTargets(this, param, lastph);
|
||||
getTargets(param: SkillParam, flag: number, lastph?: PlayerHandler): SkillTarget[]{
|
||||
return this._owner._owner.getSkillTargets(this, param, flag, lastph);
|
||||
};
|
||||
|
||||
getOppTargets(st: SkillTarget): SkillTarget[]{
|
||||
@ -347,7 +347,7 @@ export class Skill {
|
||||
|
||||
for(let i = 0; i < ncount; i++){
|
||||
if(bnormal){
|
||||
this.setTargets(this.getTargets(param, lastph));
|
||||
this.setTargets(this.getTargets(param, i + 1, lastph));
|
||||
}
|
||||
|
||||
if(!this.isSummonSkill()){
|
||||
|
@ -88,8 +88,9 @@ export class SkillTarget{
|
||||
bresok: boolean = false;
|
||||
|
||||
res: SkillResult[];
|
||||
flag: number;
|
||||
|
||||
constructor(skill: Skill | number, splayer?: PlayerHandler, spet?: PetHandler, dstobj?: any, dsttype?: GameUnitType) {
|
||||
constructor(skill: Skill | number, splayer?: PlayerHandler, spet?: PetHandler, dstobj?: any, dsttype?: GameUnitType, flag?: number) {
|
||||
let bsk = skill instanceof Skill;
|
||||
let sk = bsk? (skill as Skill): null;
|
||||
let sid = !bsk? (skill as number): 0;
|
||||
@ -101,6 +102,7 @@ export class SkillTarget{
|
||||
this.dst = dstobj;
|
||||
this.dsttype = dsttype;
|
||||
this.lasttime = sk? sk._data.indicate_time: 0;
|
||||
this.flag = flag? flag: 0;
|
||||
};
|
||||
|
||||
public LoadParam(sp: SkillParam){
|
||||
@ -189,7 +191,7 @@ export class SkillTarget{
|
||||
};
|
||||
|
||||
public clone(){
|
||||
return new SkillTarget(this.srcskill, this.srcplayer, this.srcpet, this.dst, this.dsttype);
|
||||
return new SkillTarget(this.srcskill, this.srcplayer, this.srcpet, this.dst, this.dsttype, this.flag);
|
||||
};
|
||||
|
||||
public oppClone(){
|
||||
@ -211,6 +213,9 @@ export class SkillTarget{
|
||||
st.dst = this.srcplayer;
|
||||
st.dsttype = GameUnitType.PLAYER;
|
||||
}
|
||||
|
||||
st.flag = this.flag;
|
||||
|
||||
return st;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user