冲锋反击逻辑修复
This commit is contained in:
parent
2446739efe
commit
fe503f7404
@ -363,6 +363,11 @@ export class BattleHandler {
|
|||||||
return this._cardusing;
|
return this._cardusing;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public checkPets(){
|
||||||
|
this._players.forEach((item: PlayerHandler) => {
|
||||||
|
item.checkPets(true);
|
||||||
|
});
|
||||||
|
};
|
||||||
//--------------------对外接口(外部调用)----------------------------
|
//--------------------对外接口(外部调用)----------------------------
|
||||||
/**
|
/**
|
||||||
* 使用卡片
|
* 使用卡片
|
||||||
@ -493,6 +498,8 @@ export class BattleHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sp.srcplayer && sp.srcplayer.onUseCardEnd(sp);
|
sp.srcplayer && sp.srcplayer.onUseCardEnd(sp);
|
||||||
|
|
||||||
|
this.checkPets();
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -54,6 +54,8 @@ export class PetHandler {
|
|||||||
|
|
||||||
_bakBaseap: number;
|
_bakBaseap: number;
|
||||||
|
|
||||||
|
_bakTotalap: number = 0;
|
||||||
|
|
||||||
_hasreborned: boolean = false;
|
_hasreborned: boolean = false;
|
||||||
|
|
||||||
_orignEffCnt: number = 0;
|
_orignEffCnt: number = 0;
|
||||||
@ -228,6 +230,8 @@ export class PetHandler {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._bakTotalap = this.totalAP();
|
||||||
|
|
||||||
let n = -value;
|
let n = -value;
|
||||||
for(let i = 0; i < this._effhalos.length;i++){
|
for(let i = 0; i < this._effhalos.length;i++){
|
||||||
let dv = this._effhalos[i].addHaloValue(n);
|
let dv = this._effhalos[i].addHaloValue(n);
|
||||||
@ -277,6 +281,14 @@ export class PetHandler {
|
|||||||
return this._baseap + this.getEffHaloV();
|
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{
|
public beHurt(value: number): number{
|
||||||
let rv = value - value * this._exredhurt;
|
let rv = value - value * this._exredhurt;
|
||||||
if(rv < 0){
|
if(rv < 0){
|
||||||
|
@ -329,6 +329,10 @@ export class PlayerHandler {
|
|||||||
return this._self? this._self.totalAP(): 0;
|
return this._self? this._self.totalAP(): 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public bakTotalAP(){
|
||||||
|
return this._self? this._self.bakTotalAP(): 0;
|
||||||
|
};
|
||||||
|
|
||||||
public setFriend(aplayer: PlayerHandler){
|
public setFriend(aplayer: PlayerHandler){
|
||||||
this._friend = aplayer;
|
this._friend = aplayer;
|
||||||
};
|
};
|
||||||
@ -653,11 +657,13 @@ export class PlayerHandler {
|
|||||||
return reslst;
|
return reslst;
|
||||||
};
|
};
|
||||||
|
|
||||||
checkPets(){
|
checkPets(breset: boolean = false){
|
||||||
for(let i = this._pets.length - 1; i > 0; i--){
|
for(let i = this._pets.length - 1; i > 0; i--){
|
||||||
let pet = this._pets[i];
|
let pet = this._pets[i];
|
||||||
if(pet && !pet.isAlive()){
|
if(pet && !pet.isAlive()){
|
||||||
this.delPet(pet);
|
this.delPet(pet);
|
||||||
|
}else if(breset){
|
||||||
|
pet.resetBakAP();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -238,6 +238,7 @@ export class Skill {
|
|||||||
}
|
}
|
||||||
if(this._subskill){
|
if(this._subskill){
|
||||||
let pl = [];
|
let pl = [];
|
||||||
|
let bst = false;
|
||||||
if(!this._data.skill_users){
|
if(!this._data.skill_users){
|
||||||
pl.push(param);
|
pl.push(param);
|
||||||
}else{
|
}else{
|
||||||
@ -255,6 +256,7 @@ export class Skill {
|
|||||||
}
|
}
|
||||||
pl.push(sp);
|
pl.push(sp);
|
||||||
});
|
});
|
||||||
|
bst = true;
|
||||||
}else{
|
}else{
|
||||||
pl.push(param.oppClone());
|
pl.push(param.oppClone());
|
||||||
}
|
}
|
||||||
@ -266,16 +268,18 @@ export class Skill {
|
|||||||
ncount = 1;
|
ncount = 1;
|
||||||
}
|
}
|
||||||
for(let i=0; i<ncount;i++){
|
for(let i=0; i<ncount;i++){
|
||||||
pl.forEach((item: SkillParam)=>{
|
for(let j = 0; j < pl.length; j++){
|
||||||
this._subskill._trigger(item, cb);
|
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效果
|
//触发buff效果
|
||||||
let res = TriggerManager.onTrigger(this, param);
|
let res = TriggerManager.onTrigger(this, param, target);
|
||||||
|
|
||||||
this._currCount++;
|
this._currCount++;
|
||||||
|
|
||||||
|
@ -119,6 +119,28 @@ export class SkillTarget{
|
|||||||
return (this.dst as PetHandler)._owner;
|
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(){
|
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 effectid = sender._data.effect_typeid;
|
||||||
|
|
||||||
let effv = sender.getEffValue(param.edd_cnt, param.cardpoint);
|
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){
|
if(!tgts || !tgts.length){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -148,10 +154,11 @@ let TriggerManager = {
|
|||||||
break;
|
break;
|
||||||
case SkillEffectType.ATTACK:
|
case SkillEffectType.ATTACK:
|
||||||
case SkillEffectType.ATTACK_BACK:
|
case SkillEffectType.ATTACK_BACK:
|
||||||
|
let atkback = effectid == SkillEffectType.ATTACK_BACK;
|
||||||
tgts.forEach((item)=>{
|
tgts.forEach((item)=>{
|
||||||
let obj = item.srcpet? item.srcpet: item.srcplayer;
|
let obj = item.srcpet? item.srcpet: item.srcplayer;
|
||||||
let ev = sender.getEffValue(param.edd_cnt, param.cardpoint, obj.totalAP());
|
let ev = sender.getEffValue(param.edd_cnt, param.cardpoint, atkback? obj.bakTotalAP(): obj.totalAP());
|
||||||
sender.attack(ev, item, param, effectid == SkillEffectType.ATTACK_BACK);
|
sender.attack(ev, item, param, atkback);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user