技能查找目标处理完毕
This commit is contained in:
parent
d4f1917639
commit
d1071b08ba
Binary file not shown.
@ -3,13 +3,13 @@ import {Card} from "../../schema/Card";
|
||||
import {CardGameState} from "../../schema/CardGameState";
|
||||
import { PlayerHandler } from "./PlayerHandler";
|
||||
import CfgMan from "../CfgMan";
|
||||
import { EffectCardType, GameCampType, GameUnitType } from "../skill/SkillConst";
|
||||
import { EffectCardType, GameCampType, GameUnitType, SkillRangeUnitType } from "../skill/SkillConst";
|
||||
import { Pet } from "rooms/schema/Pet";
|
||||
import {SkillParam, SkillTarget} from "../skill/SkillParam";
|
||||
import { Room } from "colyseus";
|
||||
import { Skill } from "../skill/Skill";
|
||||
import { PetHandler } from "./PetHandler";
|
||||
import { SkillInfoMsg } from "message/SkillInfo";
|
||||
import { SKillEffectData, SkillInfoMsg } from "message/SkillInfo";
|
||||
import { PetInfo } from "message/PetInfo";
|
||||
import arrUtil from "utils/array.util";
|
||||
|
||||
@ -98,21 +98,73 @@ export class BattleHandler {
|
||||
}
|
||||
};
|
||||
|
||||
public getFinalTarget(players: PlayerHandler[], apet: PetHandler, ct: GameUnitType,
|
||||
public getFinalTarget(ut: SkillRangeUnitType, players: PlayerHandler[], apet: PetHandler, expet: PetHandler, ct: GameUnitType,
|
||||
checktaunt: boolean=false): PetHandler
|
||||
{
|
||||
let pet = apet;
|
||||
let bok = this.petIsValid(pet, players, ct);
|
||||
if(checktaunt && (!bok || !pet.isTaunt())){
|
||||
for(let i = 0; i < players.length;i++){
|
||||
let obj = players[i].findTauntPet();
|
||||
if(obj){
|
||||
pet = obj;
|
||||
bok = true;
|
||||
break;
|
||||
let bok = false;
|
||||
switch(ut){
|
||||
case SkillRangeUnitType.RANDOM_ONE:
|
||||
if(checktaunt){
|
||||
let lst:PetHandler[] = [];
|
||||
players.forEach((item:PlayerHandler)=>{
|
||||
item.findAllTauntPets(lst);
|
||||
});
|
||||
if(lst.length > 0){
|
||||
pet = arrUtil.randomOne(lst);
|
||||
bok = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!bok){
|
||||
let lst:PetHandler[] = [];
|
||||
players.forEach((item:PlayerHandler)=>{
|
||||
item.findAllPets(lst);
|
||||
});
|
||||
if(lst.length > 0){
|
||||
pet = arrUtil.randomOne(lst);
|
||||
bok = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SkillRangeUnitType.RANDOM_ONE_EXSELF:
|
||||
if(checktaunt){
|
||||
let lst:PetHandler[] = [];
|
||||
players.forEach((item:PlayerHandler)=>{
|
||||
item.findAllTauntPets(lst, expet);
|
||||
});
|
||||
if(lst.length > 0){
|
||||
pet = arrUtil.randomOne(lst);
|
||||
bok = true;
|
||||
}
|
||||
}
|
||||
if(!bok){
|
||||
let lst:PetHandler[] = [];
|
||||
players.forEach((item:PlayerHandler)=>{
|
||||
item.findAllPets(lst, expet);
|
||||
});
|
||||
if(lst.length > 0){
|
||||
pet = arrUtil.randomOne(lst);
|
||||
bok = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
bok = this.petIsValid(pet, players, ct);
|
||||
if(checktaunt && (!bok || !pet.isTaunt())){
|
||||
for(let i = 0; i < players.length;i++){
|
||||
let obj = players[i].findTauntPet();
|
||||
if(obj){
|
||||
pet = obj;
|
||||
bok = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return bok? pet: null;
|
||||
};
|
||||
|
||||
@ -134,7 +186,7 @@ export class BattleHandler {
|
||||
case GameUnitType.BATTLEUNIT:
|
||||
case GameUnitType.PET:
|
||||
if(skill.isSingleTarget()){
|
||||
let pet = this.getFinalTarget(players, param.dstpet, skill._data.targetid,
|
||||
let pet = this.getFinalTarget(skill._data.rangeid, players, param.dstpet, param.srcpet, skill._data.targetid,
|
||||
skill.isHurtPowerSkill());
|
||||
pet && lst.push(new SkillTarget(skill, param.srcplayer, param.srcpet,
|
||||
pet, pet._isHero? GameUnitType.HERO: GameUnitType.PET));
|
||||
@ -228,7 +280,20 @@ export class BattleHandler {
|
||||
}
|
||||
break;
|
||||
case GameCampType.FACE_ENEMY:
|
||||
|
||||
{
|
||||
let bfind = false;
|
||||
let player = this._room.getOppositePlayer(src.getId());
|
||||
if(player){
|
||||
let ph = this.getPlayer(player);
|
||||
if(ph){
|
||||
lst.push(ph);
|
||||
bfind = true;
|
||||
}
|
||||
}
|
||||
if(!bfind){
|
||||
return this.getTargetPlayers(GameCampType.RANDOM_ENEMY, src, dst);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -10,6 +10,7 @@ import { Skill } from "../skill/Skill";
|
||||
import { SkillParam, SkillTarget } from "../skill/SkillParam";
|
||||
import SkillMan from "../skill/SkillMan";
|
||||
import { Card } from "rooms/schema/Card";
|
||||
import arrUtil from "utils/array.util";
|
||||
|
||||
export class PlayerHandler {
|
||||
public _player: Player;
|
||||
@ -363,7 +364,43 @@ export class PlayerHandler {
|
||||
}
|
||||
return this._pets.find((item: PetHandler) =>{
|
||||
return item.isTaunt();
|
||||
})
|
||||
});
|
||||
};
|
||||
|
||||
public findAllTauntPets(lst: PetHandler[], expet?: PetHandler): number{
|
||||
if(!lst){
|
||||
return -1;
|
||||
}
|
||||
let ncnt = 0;
|
||||
if(this._self && this._self.isTaunt() && this._self != expet){
|
||||
lst.push(this._self);
|
||||
ncnt++;
|
||||
}
|
||||
this._pets.forEach((item: PetHandler) =>{
|
||||
if(item.isTaunt() && this._self != expet){
|
||||
lst.push(item);
|
||||
ncnt++;
|
||||
}
|
||||
});
|
||||
return ncnt;
|
||||
};
|
||||
|
||||
public findAllPets(lst: PetHandler[], expet?: PetHandler): number{
|
||||
if(!lst){
|
||||
return -1;
|
||||
}
|
||||
let ncnt = 0;
|
||||
if(this._self && this._self != expet){
|
||||
lst.push(this._self);
|
||||
ncnt++;
|
||||
}
|
||||
this._pets.forEach((item: PetHandler) =>{
|
||||
if(this._self != expet){
|
||||
lst.push(item);
|
||||
ncnt++;
|
||||
}
|
||||
});
|
||||
return ncnt;
|
||||
};
|
||||
|
||||
public hasTransEffCardSkill(): boolean{
|
||||
|
Loading…
x
Reference in New Issue
Block a user