冲锋反击逻辑修复

This commit is contained in:
yuexin 2020-12-28 17:41:16 +08:00
parent 2446739efe
commit fe503f7404
6 changed files with 68 additions and 10 deletions

View File

@ -363,6 +363,11 @@ export class BattleHandler {
return this._cardusing;
};
public checkPets(){
this._players.forEach((item: PlayerHandler) => {
item.checkPets(true);
});
};
//--------------------对外接口(外部调用)----------------------------
/**
* 使
@ -493,6 +498,8 @@ export class BattleHandler {
return;
}
sp.srcplayer && sp.srcplayer.onUseCardEnd(sp);
this.checkPets();
};
/**

View File

@ -54,6 +54,8 @@ export class PetHandler {
_bakBaseap: number;
_bakTotalap: number = 0;
_hasreborned: boolean = false;
_orignEffCnt: number = 0;
@ -228,6 +230,8 @@ export class PetHandler {
return 0;
}
this._bakTotalap = this.totalAP();
let n = -value;
for(let i = 0; i < this._effhalos.length;i++){
let dv = this._effhalos[i].addHaloValue(n);
@ -277,6 +281,14 @@ export class PetHandler {
return this._baseap + this.getEffHaloV();
};
public bakTotalAP(){
return this._bakTotalap > 0? this._bakTotalap: this.totalAP();
};
public resetBakAP(){
this._bakTotalap = this.totalAP();
};
public beHurt(value: number): number{
let rv = value - value * this._exredhurt;
if(rv < 0){

View File

@ -329,6 +329,10 @@ export class PlayerHandler {
return this._self? this._self.totalAP(): 0;
};
public bakTotalAP(){
return this._self? this._self.bakTotalAP(): 0;
};
public setFriend(aplayer: PlayerHandler){
this._friend = aplayer;
};
@ -653,11 +657,13 @@ export class PlayerHandler {
return reslst;
};
checkPets(){
checkPets(breset: boolean = false){
for(let i = this._pets.length - 1; i > 0; i--){
let pet = this._pets[i];
if(pet && !pet.isAlive()){
this.delPet(pet);
}else if(breset){
pet.resetBakAP();
}
}
};

View File

@ -238,6 +238,7 @@ export class Skill {
}
if(this._subskill){
let pl = [];
let bst = false;
if(!this._data.skill_users){
pl.push(param);
}else{
@ -255,6 +256,7 @@ export class Skill {
}
pl.push(sp);
});
bst = true;
}else{
pl.push(param.oppClone());
}
@ -266,16 +268,18 @@ export class Skill {
ncount = 1;
}
for(let i=0; i<ncount;i++){
pl.forEach((item: SkillParam)=>{
this._subskill._trigger(item, cb);
});
for(let j = 0; j < pl.length; j++){
let sp = pl[j];
let st = bst? sts[j]: null;
this._subskill._trigger(sp, cb, st);
}
}
}
};
_trigger(param: SkillParam, cb?: any) {
_trigger(param: SkillParam, cb?: any, target?: SkillTarget) {
//触发buff效果
let res = TriggerManager.onTrigger(this, param);
let res = TriggerManager.onTrigger(this, param, target);
this._currCount++;

View File

@ -119,6 +119,28 @@ export class SkillTarget{
return (this.dst as PetHandler)._owner;
};
oppClone(){
let st = new SkillTarget(this.srcskill);
if(this.dsttype != GameUnitType.NONE){
if(this.dsttype == GameUnitType.PLAYER){
st.srcplayer = (this.dst as PlayerHandler);
st.srcpet = st.srcplayer._self;
}else {
st.srcpet = (this.dst as PetHandler);
st.srcplayer = st.srcpet._owner;
}
}
if(this.srcpet){
st.dst = this.srcpet;
st.dsttype = this.srcpet._isHero? GameUnitType.HERO: GameUnitType.PET;
}else{
st.dst = this.srcplayer;
st.dsttype = GameUnitType.PLAYER;
}
return st;
};
public checkRes(){
};

View File

@ -74,12 +74,18 @@ let TriggerManager = {
},
onTrigger(sender: Skill, param: SkillParam): SkillTarget[] {
onTrigger(sender: Skill, param: SkillParam, target: SkillTarget): SkillTarget[] {
let effectid = sender._data.effect_typeid;
let effv = sender.getEffValue(param.edd_cnt, param.cardpoint);
let tgts = sender.getTargets(param);
let tgts;
if(target && effectid == SkillEffectType.ATTACK_BACK){
tgts = [target.oppClone()];
}else{
tgts = sender.getTargets(param);
}
if(!tgts || !tgts.length){
return null;
}
@ -148,10 +154,11 @@ let TriggerManager = {
break;
case SkillEffectType.ATTACK:
case SkillEffectType.ATTACK_BACK:
let atkback = effectid == SkillEffectType.ATTACK_BACK;
tgts.forEach((item)=>{
let obj = item.srcpet? item.srcpet: item.srcplayer;
let ev = sender.getEffValue(param.edd_cnt, param.cardpoint, obj.totalAP());
sender.attack(ev, item, param, effectid == SkillEffectType.ATTACK_BACK);
let ev = sender.getEffValue(param.edd_cnt, param.cardpoint, atkback? obj.bakTotalAP(): obj.totalAP());
sender.attack(ev, item, param, atkback);
});
break;
default: