增加发起者回传+冲锋结果优化

This commit is contained in:
y.x 2021-01-08 02:13:38 +08:00
parent 1f904b6e1c
commit 9e2f379be2
5 changed files with 67 additions and 45 deletions

View File

@ -5,7 +5,7 @@ import { PlayerHandler } from "./PlayerHandler";
import CfgMan from "../CfgMan";
import { EffectCardType, GameCampType, GameUnitType, SkillRangeUnitType } from "../skill/SkillConst";
import { Pet } from "rooms/schema/Pet";
import {SkillParam, SkillTarget} from "../skill/SkillParam";
import {PetUpdateProcess, SkillParam, SkillTarget} from "../skill/SkillParam";
import { nosync, Room } from "colyseus";
import { Skill } from "../skill/Skill";
import { PetHandler } from "./PetHandler";
@ -754,11 +754,11 @@ export class BattleHandler {
return this._room.sNeedChangePet(aplayer.getId());
};
public onUpdatePetNotify(apet: PetHandler, from?: PetHandler){
public onUpdatePetNotify(apet: PetHandler, from: PetHandler){
return this._room.updatePet([apet.exportInfo()], from? from._owner.getId(): null);
};
public onUpdatePetsNotify(pets: PetHandler[], from?: PetHandler){
public onUpdatePetsNotify(pets: PetHandler[], from: PetHandler){
if(!pets || pets.length <= 0){
return;
}
@ -769,6 +769,12 @@ export class BattleHandler {
return this._room.updatePet(lst, from? from._owner.getId(): null);
};
public onUpdatePets(infos: PetUpdateProcess[]){
infos.forEach((item: PetUpdateProcess) =>{
this._room.updatePet([item.info], item.from? item.from._owner.getId(): null);
});
};
public onPlayerAddCardNotify(aplayer: PlayerHandler, count: number, maxcount: number,
from?: PlayerHandler): number{
return this._room.addCard(aplayer.getId(), count, maxcount, 1, from? from.getId(): null);
@ -849,7 +855,7 @@ export class BattleHandler {
// });
};
public onPlayerAddHPNotify(aplayer: PlayerHandler, addhp: number, from?: PlayerHandler){
public onPlayerAddHPNotify(aplayer: PlayerHandler, addhp: number, from: PlayerHandler){
return this._room.updateHp(aplayer.getId(), addhp, from? from.getId(): null);
};
//end------------------------------------------------

View File

@ -260,7 +260,7 @@ export class PetHandler {
}
}
if(n >= 0){
this.dataChanged();
this.dataChanged(from);
return -value;
}
@ -284,15 +284,15 @@ export class PetHandler {
if(this._isHero){
let tmp = this._baseap;
this._baseap = 0;
this.dataChanged();
this.dataChanged(from);
this.addHP(tmp, from);
}else{
this.dataChanged();
this.dataChanged(from);
this.die();
}
}else{
// this._ceilBaseAP();
this.dataChanged();
this.dataChanged(from);
}
return res;
@ -326,7 +326,7 @@ export class PetHandler {
}else if(rv > 0){
// 圣盾减伤后消失
if(this.hasShield()){
this.delShield();
this.delShield(from);
this._owner.onShieldUsed(this);
rv = 0;
}
@ -356,15 +356,15 @@ export class PetHandler {
return 0;
};
public addHPS(value: number){
public addHPS(value: number, from: PetHandler){
this._hps += value;
(value != 0) && this.dataChanged();
(value != 0) && this.dataChanged(from);
return value;
};
public addReduceHurt(value: number){
public addReduceHurt(value: number, from: PetHandler){
this._exredhurt += value;
(value != 0) && this.dataChanged();
(value != 0) && this.dataChanged(from);
return value;
};
@ -421,7 +421,7 @@ export class PetHandler {
return n;
};
public reborn(){
public reborn(from: PetHandler){
if(this._hasreborned){
// this.die();
return false;
@ -435,7 +435,7 @@ export class PetHandler {
this._baseap = this._bakBaseap;
this._bakBaseap = 0;
this.dataChanged();
this.dataChanged(from);
}
this._hasreborned = true;
@ -504,10 +504,10 @@ export class PetHandler {
return this._buffs.get(SkillEffectType.BUFF_SHIELD) > 0;
};
public delShield(): boolean{
let n = this.delBuff(SkillEffectType.BUFF_SHIELD);
public delShield(from: PetHandler): boolean{
let n = this.delBuff(SkillEffectType.BUFF_SHIELD, -1, from);
if(n >= 0){
this.dataChanged();
this.dataChanged(from);
return true;
}
return false;
@ -543,7 +543,7 @@ export class PetHandler {
return bok;
};
// removeapet的光环
// remove加在自己身上的属于apet的光环
public removeEffHalo(apet: PetHandler): boolean{
let bok = false;
@ -557,7 +557,7 @@ export class PetHandler {
return bok;
};
public addBuff(buffid: number, buffcount: number = 1): number{
public addBuff(buffid: number, buffcount: number, from: PetHandler): number{
let n = this._buffs.get(buffid);
// todo: 暂时不叠加
if(n){
@ -565,16 +565,19 @@ export class PetHandler {
}
let cnt = buffcount;
this._buffs.set(buffid, cnt);
this.dataChanged();
this.dataChanged(from);
return cnt;
};
public delBuff(buffid: number, buffcount: number = 0): number{
public delBuff(buffid: number, buffcount: number, from: PetHandler): number{
let n = this._buffs.get(buffid);
if(typeof(n) != 'number'){
return -1;
}
if(buffcount == 0){
return n;
}
if(buffcount < 0){
n = 0;
}else{
n-=buffcount;
@ -588,7 +591,7 @@ export class PetHandler {
}else{
this._buffs.set(buffid, n);
}
this.dataChanged();
this.dataChanged(from);
return n;
};
@ -642,7 +645,7 @@ export class PetHandler {
return obj;
};
public dataChanged(){
this._owner.onPetChanged(this);
public dataChanged(from: PetHandler){
this._owner.onPetChanged(this, from);
}
}

View File

@ -265,7 +265,7 @@ export class PlayerHandler {
this.onHaloAdd(pet, true);
}
if(bchged){
pet.dataChanged();
pet.dataChanged(pet);
}
}
return this.simpleCheckSkills(lst, pet, param);
@ -322,8 +322,8 @@ export class PlayerHandler {
return this._player.hp;
};
public addHPS(value: number): number{
return this._self? this._self.addHPS(value): 0;
public addHPS(value: number, from: PetHandler): number{
return this._self? this._self.addHPS(value, from): 0;
};
public getHPS(): number{
@ -348,8 +348,8 @@ export class PlayerHandler {
}
};
public addReduceHurt(value: number){
return this._self? this._self.addReduceHurt(value): 0;
public addReduceHurt(value: number, from: PetHandler){
return this._self? this._self.addReduceHurt(value, from): 0;
};
public totalAP(){
@ -369,8 +369,8 @@ export class PlayerHandler {
//todo:
};
public reborn(): boolean{
return this._self? this._self.reborn(): false;
public reborn(from: PetHandler): boolean{
return this._self? this._self.reborn(from): false;
};
public attack(sk: Skill, apet: PetHandler, param: SkillParam, ev: number, isAtkBack: boolean = false){
@ -428,8 +428,8 @@ export class PlayerHandler {
return true;
};
public onPetChanged(apet: PetHandler){
this._owner.onUpdatePetNotify(apet);
public onPetChanged(apet: PetHandler, from: PetHandler){
this._owner.onUpdatePetNotify(apet, from);
};
/**
@ -474,7 +474,7 @@ export class PlayerHandler {
}
}
this._owner.onUpdatePetsNotify(lst);
this._owner.onUpdatePetsNotify(lst, apet);
};
public onHaloRemove(apet: PetHandler){
@ -493,7 +493,7 @@ export class PlayerHandler {
}
}
this._owner.onUpdatePetsNotify(lst);
this._owner.onUpdatePetsNotify(lst, apet);
};
onAttackBefore(apet: PetHandler, sp?: SkillParam){
@ -793,11 +793,11 @@ export class PlayerHandler {
this._totalcc += v;
};
addBuff(buffid: number, buffcount: number = 1): number{
return this._self? this._self.addBuff(buffid, buffcount): 0;
addBuff(buffid: number, buffcount: number, from: PetHandler): number{
return this._self? this._self.addBuff(buffid, buffcount, from): 0;
};
delBuff(buffid: number, buffcount: number = 0): number{
return this._self? this._self.delBuff(buffid, buffcount): -1;
delBuff(buffid: number, buffcount: number, from: PetHandler): number{
return this._self? this._self.delBuff(buffid, buffcount, from): -1;
}
}

View File

@ -517,7 +517,7 @@ export class Skill {
let efftype = SkillEffectType.HP_STEAL_ENHANCE;
if(tgt.dsttype != GameUnitType.NONE){
let effv = effvalue/100;
let n = tgt.dst.addHPS(effv);
let n = tgt.dst.addHPS(effv, tgt.srcPet());
tgt.success(efftype, n);
}else{
tgt.fail(efftype, -1);
@ -603,7 +603,7 @@ export class Skill {
switch(efftype){
case SkillEffectType.BUFF_SHIELD:
if(tgt.dsttype != GameUnitType.NONE){
let n = tgt.dst.addBuff(efftype);
let n = tgt.dst.addBuff(efftype, 1, tgt.srcPet());
if(n){
tgt.success(efftype, n);
}else{
@ -621,7 +621,7 @@ export class Skill {
reduceHurt(effvalue: number, tgt: SkillTarget){
let efftype = SkillEffectType.HURT_REDUCE;
if(tgt.dsttype != GameUnitType.NONE){
let n = tgt.dst.addReduceHurt(effvalue);
let n = tgt.dst.addReduceHurt(effvalue, tgt.srcPet());
tgt.success(efftype, n);
}else{
tgt.fail(efftype, -1);
@ -658,7 +658,7 @@ export class Skill {
reborn(tgt: SkillTarget){
let efftype = SkillEffectType.REBORN;
if(tgt.dsttype != GameUnitType.NONE){
let res = tgt.dst.reborn();
let res = tgt.dst.reborn(tgt.srcPet());
if(res){
tgt.success(efftype, 1);
}else{
@ -692,7 +692,7 @@ export class Skill {
let dst = tgt.dsttype == GameUnitType.PLAYER? (tgt.dst as PlayerHandler)._self: (tgt.dst as PetHandler);
let n = obj.attack(this, dst, param, v, isAtkBack);
if(n <= 0){
tgt.success(efftype, n);
tgt.success(SkillEffectType.HURT_POWER, n);
// if(this._data.quoteskillid){
// let dp = this._data.skill_users? param.oppClone(): param;
// let pet = tgt.srcpet;
@ -714,6 +714,7 @@ export class Skill {
tgt.success(SkillEffectType.HURT_POWER, sv, true);
}
}
tgt.success(efftype, hv);
}else{
tgt.fail(efftype, n);
}

View File

@ -3,6 +3,7 @@ import {PetHandler} from "../Handler/PetHandler";
import { Skill } from "./Skill";
import { GameUnitType, SkillEffectType, SkillUserType } from "./SkillConst";
import { SKillEffectData, SkillInfoData, SkillInfoMsg } from "../../../message/SkillInfo";
import { PetInfo } from "message/PetInfo";
export class SkillParam{
cardid: number;
@ -272,3 +273,14 @@ export class SkillTarget{
return null;
}
};
export class PetUpdateProcess{
info: PetInfo;
from: PetHandler;
constructor(pet: PetHandler, from: PetHandler){
this.from = from;
this.info = pet.exportInfo();
};
};