冲锋反击逻辑修复
This commit is contained in:
parent
2446739efe
commit
fe503f7404
@ -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();
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -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){
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -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++;
|
||||
|
||||
|
@ -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(){
|
||||
|
||||
};
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user