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

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 CfgMan from "../CfgMan";
import { EffectCardType, GameCampType, GameUnitType, SkillRangeUnitType } from "../skill/SkillConst"; import { EffectCardType, GameCampType, GameUnitType, SkillRangeUnitType } from "../skill/SkillConst";
import { Pet } from "rooms/schema/Pet"; 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 { nosync, Room } from "colyseus";
import { Skill } from "../skill/Skill"; import { Skill } from "../skill/Skill";
import { PetHandler } from "./PetHandler"; import { PetHandler } from "./PetHandler";
@ -754,11 +754,11 @@ export class BattleHandler {
return this._room.sNeedChangePet(aplayer.getId()); 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); 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){ if(!pets || pets.length <= 0){
return; return;
} }
@ -769,6 +769,12 @@ export class BattleHandler {
return this._room.updatePet(lst, from? from._owner.getId(): null); 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, public onPlayerAddCardNotify(aplayer: PlayerHandler, count: number, maxcount: number,
from?: PlayerHandler): number{ from?: PlayerHandler): number{
return this._room.addCard(aplayer.getId(), count, maxcount, 1, from? from.getId(): null); 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); return this._room.updateHp(aplayer.getId(), addhp, from? from.getId(): null);
}; };
//end------------------------------------------------ //end------------------------------------------------

View File

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

View File

@ -265,7 +265,7 @@ export class PlayerHandler {
this.onHaloAdd(pet, true); this.onHaloAdd(pet, true);
} }
if(bchged){ if(bchged){
pet.dataChanged(); pet.dataChanged(pet);
} }
} }
return this.simpleCheckSkills(lst, pet, param); return this.simpleCheckSkills(lst, pet, param);
@ -322,8 +322,8 @@ export class PlayerHandler {
return this._player.hp; return this._player.hp;
}; };
public addHPS(value: number): number{ public addHPS(value: number, from: PetHandler): number{
return this._self? this._self.addHPS(value): 0; return this._self? this._self.addHPS(value, from): 0;
}; };
public getHPS(): number{ public getHPS(): number{
@ -348,8 +348,8 @@ export class PlayerHandler {
} }
}; };
public addReduceHurt(value: number){ public addReduceHurt(value: number, from: PetHandler){
return this._self? this._self.addReduceHurt(value): 0; return this._self? this._self.addReduceHurt(value, from): 0;
}; };
public totalAP(){ public totalAP(){
@ -369,8 +369,8 @@ export class PlayerHandler {
//todo: //todo:
}; };
public reborn(): boolean{ public reborn(from: PetHandler): boolean{
return this._self? this._self.reborn(): false; return this._self? this._self.reborn(from): false;
}; };
public attack(sk: Skill, apet: PetHandler, param: SkillParam, ev: number, isAtkBack: boolean = false){ public attack(sk: Skill, apet: PetHandler, param: SkillParam, ev: number, isAtkBack: boolean = false){
@ -428,8 +428,8 @@ export class PlayerHandler {
return true; return true;
}; };
public onPetChanged(apet: PetHandler){ public onPetChanged(apet: PetHandler, from: PetHandler){
this._owner.onUpdatePetNotify(apet); 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){ 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){ onAttackBefore(apet: PetHandler, sp?: SkillParam){
@ -793,11 +793,11 @@ export class PlayerHandler {
this._totalcc += v; this._totalcc += v;
}; };
addBuff(buffid: number, buffcount: number = 1): number{ addBuff(buffid: number, buffcount: number, from: PetHandler): number{
return this._self? this._self.addBuff(buffid, buffcount): 0; return this._self? this._self.addBuff(buffid, buffcount, from): 0;
}; };
delBuff(buffid: number, buffcount: number = 0): number{ delBuff(buffid: number, buffcount: number, from: PetHandler): number{
return this._self? this._self.delBuff(buffid, buffcount): -1; 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; let efftype = SkillEffectType.HP_STEAL_ENHANCE;
if(tgt.dsttype != GameUnitType.NONE){ if(tgt.dsttype != GameUnitType.NONE){
let effv = effvalue/100; let effv = effvalue/100;
let n = tgt.dst.addHPS(effv); let n = tgt.dst.addHPS(effv, tgt.srcPet());
tgt.success(efftype, n); tgt.success(efftype, n);
}else{ }else{
tgt.fail(efftype, -1); tgt.fail(efftype, -1);
@ -603,7 +603,7 @@ export class Skill {
switch(efftype){ switch(efftype){
case SkillEffectType.BUFF_SHIELD: case SkillEffectType.BUFF_SHIELD:
if(tgt.dsttype != GameUnitType.NONE){ if(tgt.dsttype != GameUnitType.NONE){
let n = tgt.dst.addBuff(efftype); let n = tgt.dst.addBuff(efftype, 1, tgt.srcPet());
if(n){ if(n){
tgt.success(efftype, n); tgt.success(efftype, n);
}else{ }else{
@ -621,7 +621,7 @@ export class Skill {
reduceHurt(effvalue: number, tgt: SkillTarget){ reduceHurt(effvalue: number, tgt: SkillTarget){
let efftype = SkillEffectType.HURT_REDUCE; let efftype = SkillEffectType.HURT_REDUCE;
if(tgt.dsttype != GameUnitType.NONE){ if(tgt.dsttype != GameUnitType.NONE){
let n = tgt.dst.addReduceHurt(effvalue); let n = tgt.dst.addReduceHurt(effvalue, tgt.srcPet());
tgt.success(efftype, n); tgt.success(efftype, n);
}else{ }else{
tgt.fail(efftype, -1); tgt.fail(efftype, -1);
@ -658,7 +658,7 @@ export class Skill {
reborn(tgt: SkillTarget){ reborn(tgt: SkillTarget){
let efftype = SkillEffectType.REBORN; let efftype = SkillEffectType.REBORN;
if(tgt.dsttype != GameUnitType.NONE){ if(tgt.dsttype != GameUnitType.NONE){
let res = tgt.dst.reborn(); let res = tgt.dst.reborn(tgt.srcPet());
if(res){ if(res){
tgt.success(efftype, 1); tgt.success(efftype, 1);
}else{ }else{
@ -692,7 +692,7 @@ export class Skill {
let dst = tgt.dsttype == GameUnitType.PLAYER? (tgt.dst as PlayerHandler)._self: (tgt.dst as PetHandler); let dst = tgt.dsttype == GameUnitType.PLAYER? (tgt.dst as PlayerHandler)._self: (tgt.dst as PetHandler);
let n = obj.attack(this, dst, param, v, isAtkBack); let n = obj.attack(this, dst, param, v, isAtkBack);
if(n <= 0){ if(n <= 0){
tgt.success(efftype, n); tgt.success(SkillEffectType.HURT_POWER, n);
// if(this._data.quoteskillid){ // if(this._data.quoteskillid){
// let dp = this._data.skill_users? param.oppClone(): param; // let dp = this._data.skill_users? param.oppClone(): param;
// let pet = tgt.srcpet; // let pet = tgt.srcpet;
@ -714,6 +714,7 @@ export class Skill {
tgt.success(SkillEffectType.HURT_POWER, sv, true); tgt.success(SkillEffectType.HURT_POWER, sv, true);
} }
} }
tgt.success(efftype, hv);
}else{ }else{
tgt.fail(efftype, n); tgt.fail(efftype, n);
} }

View File

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