导表+光环优化处理(未测试)
This commit is contained in:
parent
17ea5b847e
commit
aeaedccf8c
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
[{"id":30012,"herounit_id":52012,"ex_skill":0,"follower1id":51072,"follower2id":51082,"follower3id":51032,"follower4id":51052},{"id":30022,"herounit_id":52022,"ex_skill":0,"follower1id":51372,"follower2id":51162,"follower3id":51382,"follower4id":51332},{"id":30032,"herounit_id":52032,"ex_skill":0,"follower1id":51352,"follower2id":51042,"follower3id":51142,"follower4id":51062},{"id":30042,"herounit_id":52042,"ex_skill":0,"follower1id":51062,"follower2id":51122,"follower3id":51112,"follower4id":51042},{"id":30052,"herounit_id":52052,"ex_skill":0,"follower1id":51132,"follower2id":51082,"follower3id":51402,"follower4id":51112},{"id":30062,"herounit_id":52062,"ex_skill":0,"follower1id":51222,"follower2id":51272,"follower3id":51412,"follower4id":51042},{"id":30072,"herounit_id":52072,"ex_skill":0,"follower1id":51012,"follower2id":51082,"follower3id":51402,"follower4id":51152},{"id":30082,"herounit_id":52082,"ex_skill":0,"follower1id":51062,"follower2id":51272,"follower3id":51072,"follower4id":51052},{"id":30092,"herounit_id":52092,"ex_skill":0,"follower1id":51102,"follower2id":51372,"follower3id":51232,"follower4id":51292},{"id":30102,"herounit_id":52102,"ex_skill":0,"follower1id":51022,"follower2id":51092,"follower3id":51192,"follower4id":51392},{"id":30112,"herounit_id":52112,"ex_skill":0,"follower1id":51372,"follower2id":51162,"follower3id":51382,"follower4id":51332},{"id":30122,"herounit_id":52122,"ex_skill":0,"follower1id":51252,"follower2id":51052,"follower3id":51402,"follower4id":51132},{"id":30132,"herounit_id":52132,"ex_skill":0,"follower1id":51032,"follower2id":51342,"follower3id":51412,"follower4id":51252},{"id":30142,"herounit_id":52142,"ex_skill":0,"follower1id":51402,"follower2id":51202,"follower3id":51212,"follower4id":51342}]
|
||||
[{"id":30012,"herounit_id":52012,"org_gift":"1","ex_skill":0,"follower1id":51072,"follower2id":51082,"follower3id":51032,"follower4id":51152},{"id":30022,"herounit_id":52022,"org_gift":"","ex_skill":0,"follower1id":51372,"follower2id":51162,"follower3id":51382,"follower4id":51332},{"id":30032,"herounit_id":52032,"org_gift":"1","ex_skill":0,"follower1id":51052,"follower2id":51042,"follower3id":51122,"follower4id":51062},{"id":30042,"herounit_id":52042,"org_gift":"1","ex_skill":0,"follower1id":51062,"follower2id":51122,"follower3id":51072,"follower4id":51042},{"id":30052,"herounit_id":52052,"org_gift":"","ex_skill":0,"follower1id":51132,"follower2id":51082,"follower3id":51402,"follower4id":51112},{"id":30062,"herounit_id":52062,"org_gift":"","ex_skill":0,"follower1id":51222,"follower2id":51272,"follower3id":51412,"follower4id":51042},{"id":30072,"herounit_id":52072,"org_gift":"1","ex_skill":0,"follower1id":51012,"follower2id":51082,"follower3id":51032,"follower4id":51152},{"id":30082,"herounit_id":52082,"org_gift":"1","ex_skill":0,"follower1id":51062,"follower2id":51082,"follower3id":51072,"follower4id":51052},{"id":30092,"herounit_id":52092,"org_gift":"","ex_skill":0,"follower1id":51102,"follower2id":51372,"follower3id":51232,"follower4id":51292},{"id":30102,"herounit_id":52102,"org_gift":"","ex_skill":0,"follower1id":51022,"follower2id":51092,"follower3id":51192,"follower4id":51392},{"id":30112,"herounit_id":52112,"org_gift":"","ex_skill":0,"follower1id":51372,"follower2id":51162,"follower3id":51382,"follower4id":51332},{"id":30122,"herounit_id":52122,"org_gift":"","ex_skill":0,"follower1id":51252,"follower2id":51352,"follower3id":51402,"follower4id":51132},{"id":30132,"herounit_id":52132,"org_gift":"","ex_skill":0,"follower1id":51032,"follower2id":51342,"follower3id":51412,"follower4id":51252},{"id":30142,"herounit_id":52142,"org_gift":"","ex_skill":0,"follower1id":51402,"follower2id":51202,"follower3id":51212,"follower4id":51342}]
|
File diff suppressed because one or more lines are too long
Binary file not shown.
@ -4,6 +4,7 @@ export class EffectCardCfg implements Cfg{
|
||||
name: "EffectCardCfg";
|
||||
|
||||
public id: number;
|
||||
public org_gift: number;
|
||||
public type_id: number;
|
||||
public count: number;
|
||||
public weight: number;
|
||||
@ -19,6 +20,7 @@ export class EffectCardCfg implements Cfg{
|
||||
|
||||
public decode(data: any) {
|
||||
this.id = data.id;
|
||||
this.org_gift = data.org_gift;
|
||||
this.type_id = data.type_id;
|
||||
this.count = data.count;
|
||||
this.weight = data.weight;
|
||||
|
@ -10,7 +10,6 @@ export class FormulaCfg implements Cfg{
|
||||
public numtypeid: number;
|
||||
public prerequisite1id: number;
|
||||
public prerequisite2id: number;
|
||||
public : number;
|
||||
|
||||
public decode(data: any) {
|
||||
this.id = data.id;
|
||||
@ -20,7 +19,6 @@ export class FormulaCfg implements Cfg{
|
||||
this.numtypeid = data.numtypeid;
|
||||
this.prerequisite1id = data.prerequisite1id;
|
||||
this.prerequisite2id = data.prerequisite2id;
|
||||
this. = data.;
|
||||
};
|
||||
|
||||
public isOK (uniqueID: number, param1: any, param2: any): boolean {
|
||||
|
@ -5,6 +5,7 @@ export class HeroCfg implements Cfg{
|
||||
|
||||
public id: number;
|
||||
public herounit_id: number;
|
||||
public org_gift: number;
|
||||
public ex_skill: number;
|
||||
public follower1id: number;
|
||||
public follower2id: number;
|
||||
@ -14,6 +15,7 @@ export class HeroCfg implements Cfg{
|
||||
public decode(data: any) {
|
||||
this.id = data.id;
|
||||
this.herounit_id = data.herounit_id;
|
||||
this.org_gift = data.org_gift;
|
||||
this.ex_skill = data.ex_skill;
|
||||
this.follower1id = data.follower1id;
|
||||
this.follower2id = data.follower2id;
|
||||
|
@ -283,7 +283,8 @@ export class BattleHandler {
|
||||
}else if(dst instanceof PlayerHandler){
|
||||
ut = GameUnitType.PLAYER;
|
||||
}
|
||||
return new SkillTarget(sk, src? src._owner: sk._owner, src, dst, ut);
|
||||
let owner = sk? sk._owner: null;
|
||||
return new SkillTarget(sk, src? src._owner: owner, src, dst, ut);
|
||||
};
|
||||
|
||||
public singleSkillTargets(sk: Skill, src: PetHandler, dst: PetHandler | PlayerHandler): SkillTarget[]{
|
||||
@ -294,6 +295,14 @@ export class BattleHandler {
|
||||
return tgt? [tgt]: null;
|
||||
};
|
||||
|
||||
public singleSkillTarget(sk: Skill, src: PetHandler, dst: PetHandler | PlayerHandler): SkillTarget{
|
||||
let tgt = this.buildSkillTarget(sk, src, dst);
|
||||
if(this.isFlowing() && tgt){
|
||||
this._cacheSkills.push(tgt);
|
||||
}
|
||||
return tgt;
|
||||
};
|
||||
|
||||
public getSkillOppTargets(st: SkillTarget): SkillTarget[]{
|
||||
let lst: SkillTarget[] = [];
|
||||
lst.push(st.oppClone());
|
||||
|
@ -116,9 +116,9 @@ export class PetHandler {
|
||||
this.addSkill(skillid);
|
||||
});
|
||||
|
||||
this._owner.onHaloAdd(this);
|
||||
this._owner.onPetBorned(this, param);
|
||||
|
||||
this.born(param);
|
||||
this._owner.onHaloAdd(this);
|
||||
};
|
||||
|
||||
private _I(v: number): number{
|
||||
@ -135,15 +135,6 @@ export class PetHandler {
|
||||
// this._exap = 0;
|
||||
};
|
||||
|
||||
private _addEffHalo(skill: Skill): boolean{
|
||||
if(!this.hasEffHalo(skill)){
|
||||
this._effhalos.set(skill, skill.getHaloValue());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
// this._exap += ap;
|
||||
};
|
||||
|
||||
public getEffHaloV(): number{
|
||||
let n = 0;
|
||||
this._effhalos.forEach((value: number) => {
|
||||
@ -304,8 +295,11 @@ export class PetHandler {
|
||||
return res;
|
||||
};
|
||||
|
||||
public addExAP(value: number, from: PetHandler): number{
|
||||
// return this.addAP(value);
|
||||
public addExAP(value: number, sk: Skill, from: PetHandler): number{
|
||||
if(!this.hasEffHalo(sk)){
|
||||
this._effhalos.set(sk, value);
|
||||
return value;
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
||||
@ -341,7 +335,7 @@ export class PetHandler {
|
||||
let res = this.subAP(rv, from);
|
||||
|
||||
if(res != 0){
|
||||
this._owner.onBeHurt(this, res);
|
||||
this._owner.onBeHurt(this, res, from);
|
||||
}
|
||||
|
||||
return res;
|
||||
@ -390,10 +384,6 @@ export class PetHandler {
|
||||
return value;
|
||||
};
|
||||
|
||||
public born(param: SkillParam){
|
||||
this._owner.onPetBorned(this, param);
|
||||
};
|
||||
|
||||
public isAlive(){
|
||||
if(this._isHero){
|
||||
return this._owner.isAlive();
|
||||
@ -544,21 +534,19 @@ export class PetHandler {
|
||||
};
|
||||
|
||||
// 自己的光环是否加到apet上
|
||||
public addEffHalo(apet: PetHandler): boolean{
|
||||
let bok = false;
|
||||
public addEffHalo(apet: PetHandler): number{
|
||||
let res = 0;
|
||||
this._halos.forEach((item: Skill)=>{
|
||||
if(item.canEffect(this, apet)){
|
||||
if(item.isAPHaloSkill()){
|
||||
bok = true;
|
||||
if(apet._addEffHalo(item)){
|
||||
} // 加战力
|
||||
res += apet.addExAP(item.getEffValue(), item, this); // 加战力
|
||||
}else if(item.isBuffHaloSkill()){
|
||||
item.trigger(new SkillParam(0, 0, 0, this._owner,
|
||||
this, apet._owner, apet));
|
||||
} // 触发技能
|
||||
this, apet._owner, apet)); // 触发技能
|
||||
}
|
||||
}
|
||||
});
|
||||
return bok;
|
||||
return res;
|
||||
};
|
||||
|
||||
// remove加在自己身上的属于apet的光环
|
||||
|
@ -4,7 +4,7 @@ import { HeroCfg } from "../../../cfg/parsers/HeroCfg";
|
||||
import { BattleHandler } from "./BattleHandler";
|
||||
import CfgMan from "../CfgMan";
|
||||
import { Pet } from "rooms/schema/Pet";
|
||||
import { CondDecideType, CondType, EffectCardType, GameUnitType, SkillType, SkillUserType, TriggerType } from "../skill/SkillConst";
|
||||
import { CondDecideType, CondType, EffectCardType, GameUnitType, SkillEffectType, SkillType, SkillUserType, TriggerType } from "../skill/SkillConst";
|
||||
import { UnitCfg } from "cfg/parsers/UnitCfg";
|
||||
import { Skill } from "../skill/Skill";
|
||||
import { SkillParam, SkillTarget } from "../skill/SkillParam";
|
||||
@ -324,8 +324,8 @@ export class PlayerHandler {
|
||||
return this._self? this._self.addBaseAP(value, from): 0;
|
||||
};
|
||||
|
||||
public addExAP(value: number, from: PetHandler): number{
|
||||
return 0;
|
||||
public addExAP(value: number, sender: Skill, from: PetHandler): number{
|
||||
return this._self? this._self.addExAP(value, sender, from): 0;
|
||||
};
|
||||
|
||||
public getHP(){
|
||||
@ -452,43 +452,72 @@ export class PlayerHandler {
|
||||
* @param only_checkother : 只检查apet加给别人的光环
|
||||
*/
|
||||
public onHaloAdd(apet: PetHandler, only_checkother: boolean = false){
|
||||
let lst: PetHandler[] = [];
|
||||
let pets: Map<PetHandler, number> = new Map();
|
||||
|
||||
if(only_checkother){
|
||||
this._pets.forEach((obj: PetHandler)=>{
|
||||
if(apet.addEffHalo(obj)){
|
||||
lst.push(obj);
|
||||
let n = apet.addEffHalo(obj);
|
||||
if(n != 0){
|
||||
pets.set(obj, n);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if(this._self != apet){
|
||||
if(apet.addEffHalo(this._self)){
|
||||
lst.push(this._self);
|
||||
let n = apet.addEffHalo(this._self);
|
||||
if(n != 0){
|
||||
pets.set(this._self, n);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
// apet加给自己
|
||||
apet.addEffHalo(apet);
|
||||
let n = apet.addEffHalo(apet);
|
||||
if(n != 0){
|
||||
pets.set(apet, n);
|
||||
}
|
||||
|
||||
// apet加给别人/别人加给apet
|
||||
this._pets.forEach((obj: PetHandler)=>{
|
||||
if(obj != apet){
|
||||
obj.addEffHalo(apet);
|
||||
if(apet.addEffHalo(obj)){
|
||||
lst.push(obj);
|
||||
let n = obj.addEffHalo(apet);
|
||||
if(n != 0){
|
||||
if(pets.has(apet)){
|
||||
pets.set(apet, pets.get(apet) + n);
|
||||
}else{
|
||||
pets.set(apet, n);
|
||||
}
|
||||
}
|
||||
n = apet.addEffHalo(obj);
|
||||
if(n != 0){
|
||||
pets.set(obj, n);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// _self加给apet/apet加给_self
|
||||
if(this._self != apet && this._self){
|
||||
this._self.addEffHalo(apet);
|
||||
if(apet.addEffHalo(this._self)){
|
||||
lst.push(this._self);
|
||||
let n = this._self.addEffHalo(apet);
|
||||
if(n != 0){
|
||||
if(pets.has(apet)){
|
||||
pets.set(apet, pets.get(apet) + n);
|
||||
}else{
|
||||
pets.set(apet, n);
|
||||
}
|
||||
}
|
||||
n = apet.addEffHalo(this._self);
|
||||
if(n != 0){
|
||||
pets.set(this._self, n);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this._owner.onUpdatePetsNotify(lst, apet);
|
||||
if(pets.size > 0){
|
||||
for(let [k, v] of pets){
|
||||
let sk = this._owner.singleSkillTarget(null, apet, k);
|
||||
sk.success(SkillEffectType.POWEREX_ENHANCE, v);
|
||||
sk.success(SkillEffectType.CHG_AP, v);
|
||||
}
|
||||
this._owner.onUpdatePetsNotify([...pets.keys()], apet);
|
||||
}
|
||||
};
|
||||
|
||||
public onHaloRemove(apet: PetHandler){
|
||||
@ -523,8 +552,8 @@ export class PlayerHandler {
|
||||
this.singleCheckSkills(apet, TriggerType.BE_ATTACK, null, sp);
|
||||
};
|
||||
|
||||
public onBeHurt(apet: PetHandler, value: number){
|
||||
this.singleCheckSkills(apet, TriggerType.BE_HURT);
|
||||
public onBeHurt(apet: PetHandler, value: number, from: PetHandler){
|
||||
this.singleCheckSkills(apet, TriggerType.BE_HURT, from._owner);
|
||||
};
|
||||
|
||||
public onShieldUsed(apet: PetHandler){
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { sendFriendRequest } from "@colyseus/social";
|
||||
import { SkillCfg } from "cfg/parsers/SkillCfg";
|
||||
import e from "express";
|
||||
import { SKillEffectData } from "message/SkillInfo";
|
||||
@ -474,7 +475,7 @@ export class Skill {
|
||||
case SkillEffectType.POWEREX_ENHANCE:
|
||||
if(tgt.dsttype != GameUnitType.NONE){
|
||||
let n = efftype == SkillEffectType.POWER_ENHANCE? tgt.dst.addBaseAP(effvalue, tgt.srcPet())
|
||||
: tgt.dst.addExAP(effvalue, tgt.srcPet());
|
||||
: tgt.dst.addExAP(effvalue, this, tgt.srcPet());
|
||||
tgt.success(efftype, n);
|
||||
tgt.success(SkillEffectType.CHG_AP, n);
|
||||
}else{
|
||||
|
@ -85,15 +85,18 @@ export class SkillTarget{
|
||||
|
||||
res: SkillResult[];
|
||||
|
||||
constructor(skill: Skill, splayer?: PlayerHandler, spet?: PetHandler, dstobj?: any, dsttype?: GameUnitType) {
|
||||
constructor(skill: Skill | number, splayer?: PlayerHandler, spet?: PetHandler, dstobj?: any, dsttype?: GameUnitType) {
|
||||
let bsk = skill instanceof Skill;
|
||||
let sk = bsk? (skill as Skill): null;
|
||||
let sid = !bsk? (skill as number): 0;
|
||||
this.srcplayer = splayer;
|
||||
this.srcpet = spet;
|
||||
this.srcskill = skill;
|
||||
this.srcskillid = skill? skill._id: 0;
|
||||
this.srcskilltype = skill? skill._data.effect_typeid: 0;
|
||||
this.srcskill = sk;
|
||||
this.srcskillid = sk? sk._id: sid;
|
||||
this.srcskilltype = sk? sk._data.effect_typeid: 0;
|
||||
this.dst = dstobj;
|
||||
this.dsttype = dsttype;
|
||||
this.lasttime = skill? skill._data.indicate_time: 0;
|
||||
this.lasttime = sk? sk._data.indicate_time: 0;
|
||||
};
|
||||
|
||||
public LoadParam(sp: SkillParam){
|
||||
|
Loading…
x
Reference in New Issue
Block a user