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