合并冲锋/反击

This commit is contained in:
y.x 2021-01-18 00:42:29 +08:00
parent ee9c1ee684
commit 58ac45ab0b

View File

@ -3,9 +3,9 @@ import {Card} from "../../schema/Card";
import {CardGameState} from "../../schema/CardGameState";
import { PlayerHandler } from "./PlayerHandler";
import CfgMan from "../CfgMan";
import { EffectCardType, GameCampType, GameUnitType, SkillRangeUnitType } from "../skill/SkillConst";
import { EffectCardType, GameCampType, GameUnitType, SkillEffectType, SkillRangeUnitType } from "../skill/SkillConst";
import { Pet } from "rooms/schema/Pet";
import {PetUpdateProcess, SkillParam, SkillTarget} from "../skill/SkillParam";
import {PetUpdateProcess, SkillParam, SkillResult, SkillTarget} from "../skill/SkillParam";
import { nosync, Room } from "colyseus";
import { Skill } from "../skill/Skill";
import { PetHandler } from "./PetHandler";
@ -899,12 +899,22 @@ export class BattleHandler {
* indexOfAttack
start: number: number*/
let __indexOfAttack = function(start: number): number {
//todo:
for(let i = start; i < skillres.length;i++){
if(skillres[i].bresok && skillres[i].isAttackSkill()){
return i;
}
}
return -1;
};
let __indexOfAttackBk = function(atkres: SkillTarget, start: number): number{
//todo:
let __indexOfAttackBk = function(start: number, atkres: SkillTarget): number{
for(let i = start; i < skillres.length;i++){
let obj = skillres[i];
if(obj.bresok && obj.isAttackBackSkill()
&& atkres.dst == obj.srcPet() && obj.dst == atkres.srcPet()){
return i;
}
}
return -1;
};
@ -912,6 +922,33 @@ export class BattleHandler {
if(!skillres || skillres.length <= 0){
return;
}
// 合并冲锋/反击
let nstart = 0;
while(true){
if(nstart >= skillres.length){
break;
}
let natk = __indexOfAttack(nstart);
if(natk < 0){
break;
}
nstart = natk + 1;
let atkobj = skillres[natk];
let natkbk = __indexOfAttackBk(nstart, atkobj);
if(natkbk){
let atkbkobj = skillres[natkbk];
atkbkobj.res.forEach((item: SkillResult) => {
if(item.bsuccess){
if(item.effect_type == SkillEffectType.CHG_AP || item.effect_type == SkillEffectType.CHG_HP){
atkobj.success(item.effect_type, item.effect_res, true);
}
}
});
skillres.splice(natkbk, 1);
}
}
let checklst: PlayerHandler[] = [];
let lst: SkillInfoMsg[] = [];
let resmap: Map<string, SkillTarget[]> = new Map;