增加受击对象判定

This commit is contained in:
yuexin 2021-01-14 20:40:20 +08:00
parent c0c3bc37fa
commit 48ff9a7e8e
3 changed files with 30 additions and 22 deletions

View File

@ -312,9 +312,9 @@ export class BattleHandler {
return lst;
};
public getSkillTargets(skill: Skill, param: SkillParam): SkillTarget[]{
public getSkillTargets(skill: Skill, param: SkillParam, lastph: PlayerHandler): SkillTarget[]{
let lst: SkillTarget[] = [];
let players = this.getTargetPlayers(skill._data.friendlyid, param.srcplayer, param.dstplayer);
let players = this.getTargetPlayers(skill._data.friendlyid, param.srcplayer, param.dstplayer, lastph);
if(players.length > 0){
switch(skill._data.targetid){
case GameUnitType.PLAYER:
@ -362,10 +362,10 @@ export class BattleHandler {
return lst;
};
public getTargetPlayers(gct: GameCampType, src:PlayerHandler, dst:PlayerHandler): PlayerHandler[]{
public getTargetPlayers(gct: GameCampType, src:PlayerHandler, dst:PlayerHandler, last: PlayerHandler): PlayerHandler[]{
let lst: PlayerHandler[] = [];
switch(gct){
case GameCampType.SELF:
case GameCampType.SELFPLAYER:
if(src && src.isAlive()){
lst.push(src);
}
@ -399,7 +399,7 @@ export class BattleHandler {
}
}
break;
case GameCampType.ALL:
case GameCampType.ALLPLAYER:
for(let [key, obj] of this._players){
if(obj && obj.isAlive()){
lst.push(obj);
@ -442,17 +442,22 @@ export class BattleHandler {
}
}
if(!bfind){
return this.getTargetPlayers(GameCampType.RANDOM_ENEMY, src, dst);
return this.getTargetPlayers(GameCampType.RANDOM_ENEMY, src, dst, last);
}
}
break;
case GameCampType.ALL_EXSELF:
case GameCampType.ALLPLAYER_EXSELF:
for(let [key, obj] of this._players){
if(obj && obj.isAlive() && obj != src){
lst.push(obj);
}
}
break;
case GameCampType.LAST_HURT:
if(last && last != src && last.isAlive()){
lst.push(last);
}
break;
default:
break;
}

View File

@ -178,7 +178,7 @@ export class Skill {
// 技能光环是否能影响dst
canEffect(srcpet: PetHandler, dstpet: PetHandler){
if(this._data.friendlyid != GameCampType.SELF){
if(this._data.friendlyid != GameCampType.SELFPLAYER){
return false;
}
let tgok = false;
@ -224,8 +224,8 @@ export class Skill {
return this._owner._owner.singleSkillTargets(this, this._petowner, this._petowner);
};
getTargets(param: SkillParam): SkillTarget[]{
return this._owner._owner.getSkillTargets(this, param);
getTargets(param: SkillParam, lastph?: PlayerHandler): SkillTarget[]{
return this._owner._owner.getSkillTargets(this, param, lastph);
};
getOppTargets(st: SkillTarget): SkillTarget[]{
@ -294,7 +294,8 @@ export class Skill {
}
};
_triggerSubSkill(sk: Skill, skid: number, skusertype: number, skcount: number, skmaxcount: number, param: SkillParam, sts: SkillTarget[], cb?: any){
_triggerSubSkill(sk: Skill, skid: number, skusertype: number, skcount: number, skmaxcount: number,
param: SkillParam, sts: SkillTarget[], cb: any, lastph: PlayerHandler){
if(skid && !sk){
sk = this._owner.newSkill(skid);
sk.setOrignParam(this._orign_effcnt, this._orign_cardpt, this._from, this._petowner, 0);
@ -315,7 +316,7 @@ export class Skill {
let ncount = this.getQuoteValue(skcount, skmaxcount, this._orign_effcnt);
for(let i=0; i<ncount;i++){
sk.trigger(param, cb);
sk.trigger(param, cb, lastph);
}
}
};
@ -338,7 +339,7 @@ export class Skill {
this._cb && this._cb(this, param, res);
};
trigger(param: SkillParam, cb?: any) {
trigger(param: SkillParam, cb?: any, lastph?: PlayerHandler) {
let bnormal = !this._sts;
let ncount = this.getFinalValue(EnhanceCustomType.RELEASE_TIMES, this._data.release_times,
@ -346,23 +347,23 @@ export class Skill {
for(let i = 0; i < ncount; i++){
if(bnormal){
this.setTargets(this.getTargets(param));
this.setTargets(this.getTargets(param, lastph));
}
if(!this.isSummonSkill()){
this._real_trigger(param, cb);
this._triggerSubSkill(this._subskill, this._data.quoteskillid, this._data.skill_usersid,
this._data.quoteskill_times, this._data.quoteskill_timesmax, param, this._sts, cb);
this._data.quoteskill_times, this._data.quoteskill_timesmax, param, this._sts, cb, lastph);
this._triggerSubSkill(this._subskill2, this._data.quoteskill2id, this._data.skill2_usersid,
this._data.quoteskill2_times, this._data.quoteskill2_timesmax, param, this._sts, cb);
this._data.quoteskill2_times, this._data.quoteskill2_timesmax, param, this._sts, cb, lastph);
}else{
this._triggerSubSkill(this._subskill, this._data.quoteskillid, this._data.skill_usersid,
this._data.quoteskill_times, this._data.quoteskill_timesmax, param, this._sts, cb);
this._data.quoteskill_times, this._data.quoteskill_timesmax, param, this._sts, cb, lastph);
this._triggerSubSkill(this._subskill2, this._data.quoteskill2id, this._data.skill2_usersid,
this._data.quoteskill2_times, this._data.quoteskill2_timesmax, param, this._sts, cb);
this._data.quoteskill2_times, this._data.quoteskill2_timesmax, param, this._sts, cb, lastph);
this._real_trigger(param, cb);
}
@ -387,7 +388,7 @@ export class Skill {
}
}
})){
this.trigger(tg_target, cb);
this.trigger(tg_target, cb, tg_value);
return 1;
}else{
return 0;

View File

@ -349,19 +349,21 @@ export const enum GameUnitType {
* 8.
* 9.
* 10.+
* 11.
*/
export const enum GameCampType {
NONE = 0,
SELF = 1,
SELFPLAYER = 1,
FRIEND = 2,
MYTEAM = 3,
ENEMY = 4,
ENEMYTEAM = 5,
ALL = 6,
ALLPLAYER = 6,
RANDOM_US = 7,
RANDOM_ENEMY = 8,
FACE_ENEMY = 9,
ALL_EXSELF = 10,
ALLPLAYER_EXSELF = 10,
LAST_HURT = 11,
};
// 战力参数数值