导表,新字段新类型处理

This commit is contained in:
yuexin 2020-12-31 18:32:33 +08:00
parent 209f6ea322
commit 24d55cd37d
10 changed files with 92 additions and 17 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -15,6 +15,7 @@ export class SkillCfg implements Cfg{
public friendlyid: number; public friendlyid: number;
public targetid: number; public targetid: number;
public ridicule: number; public ridicule: number;
public spellpower: number;
public rangeid: number; public rangeid: number;
public select_targetID: number; public select_targetID: number;
public eff_numtypeid: number; public eff_numtypeid: number;
@ -54,6 +55,7 @@ export class SkillCfg implements Cfg{
this.friendlyid = data.friendlyid; this.friendlyid = data.friendlyid;
this.targetid = data.targetid; this.targetid = data.targetid;
this.ridicule = data.ridicule; this.ridicule = data.ridicule;
this.spellpower = data.spellpower;
this.rangeid = data.rangeid; this.rangeid = data.rangeid;
this.select_targetID = data.select_targetID; this.select_targetID = data.select_targetID;
this.eff_numtypeid = data.eff_numtypeid; this.eff_numtypeid = data.eff_numtypeid;

View File

@ -7,6 +7,7 @@ export class UnitCfg implements Cfg{
public unittypei_id: number; public unittypei_id: number;
public hero_hp: number; public hero_hp: number;
public spell_power: number; public spell_power: number;
public suck_blood: number;
public defense: number; public defense: number;
public race_id: number; public race_id: number;
public job_id: number; public job_id: number;
@ -25,6 +26,7 @@ export class UnitCfg implements Cfg{
this.unittypei_id = data.unittypei_id; this.unittypei_id = data.unittypei_id;
this.hero_hp = data.hero_hp; this.hero_hp = data.hero_hp;
this.spell_power = data.spell_power; this.spell_power = data.spell_power;
this.suck_blood = data.suck_blood;
this.defense = data.defense; this.defense = data.defense;
this.race_id = data.race_id; this.race_id = data.race_id;
this.job_id = data.job_id; this.job_id = data.job_id;

View File

@ -132,7 +132,7 @@ export class BattleHandler {
public getFinalTarget(ut: SkillRangeUnitType, players: PlayerHandler[], dstpet: PetHandler, srcpet: PetHandler, public getFinalTarget(ut: SkillRangeUnitType, players: PlayerHandler[], dstpet: PetHandler, srcpet: PetHandler,
senderpet: PetHandler, ct: GameUnitType, senderpet: PetHandler, ct: GameUnitType,
checktaunt: boolean=false): PetHandler checktaunt: boolean, isonlypet: boolean): PetHandler
{ {
let pet = dstpet; let pet = dstpet;
let bok = false; let bok = false;
@ -147,7 +147,7 @@ export class BattleHandler {
if(checktaunt){ if(checktaunt){
let lst:PetHandler[] = []; let lst:PetHandler[] = [];
players.forEach((item:PlayerHandler)=>{ players.forEach((item:PlayerHandler)=>{
item.findAllTauntPets(lst); item.findAllTauntPets(lst, isonlypet);
}); });
if(lst.length > 0){ if(lst.length > 0){
pet = arrUtil.randomOne(lst); pet = arrUtil.randomOne(lst);
@ -157,7 +157,7 @@ export class BattleHandler {
if(!bok){ if(!bok){
let lst:PetHandler[] = []; let lst:PetHandler[] = [];
players.forEach((item:PlayerHandler)=>{ players.forEach((item:PlayerHandler)=>{
item.findAllPets(lst); item.findAllPets(lst, isonlypet);
}); });
if(lst.length > 0){ if(lst.length > 0){
pet = arrUtil.randomOne(lst); pet = arrUtil.randomOne(lst);
@ -171,7 +171,7 @@ export class BattleHandler {
if(checktaunt){ if(checktaunt){
let lst:PetHandler[] = []; let lst:PetHandler[] = [];
players.forEach((item:PlayerHandler)=>{ players.forEach((item:PlayerHandler)=>{
item.findAllTauntPets(lst, expet); item.findAllTauntPets(lst, isonlypet, expet);
}); });
if(lst.length > 0){ if(lst.length > 0){
pet = arrUtil.randomOne(lst); pet = arrUtil.randomOne(lst);
@ -181,7 +181,7 @@ export class BattleHandler {
if(!bok){ if(!bok){
let lst:PetHandler[] = []; let lst:PetHandler[] = [];
players.forEach((item:PlayerHandler)=>{ players.forEach((item:PlayerHandler)=>{
item.findAllPets(lst, expet); item.findAllPets(lst, isonlypet, expet);
}); });
if(lst.length > 0){ if(lst.length > 0){
pet = arrUtil.randomOne(lst); pet = arrUtil.randomOne(lst);
@ -193,6 +193,44 @@ export class BattleHandler {
pet = senderpet; pet = senderpet;
bok = !!pet; bok = !!pet;
break; break;
case SkillRangeUnitType.MAXAP_ONE:
{
let lst:PetHandler[] = [];
players.forEach((item:PlayerHandler)=>{
lst.push(item.getMaxAPPet(isonlypet));
});
pet = null;
if(lst.length > 0){
lst.forEach(element => {
if(!pet){
pet = element;
}else if(pet.totalAP() < element.totalAP()){
pet = element;
}
});
}
bok = !!pet;
}
break;
case SkillRangeUnitType.MINAP_ONE:
{
let lst:PetHandler[] = [];
players.forEach((item:PlayerHandler)=>{
lst.push(item.getMinAPPet(isonlypet));
});
pet = null;
if(lst.length > 0){
lst.forEach(element => {
if(!pet){
pet = element;
}else if(pet.totalAP() > element.totalAP()){
pet = element;
}
});
}
bok = !!pet;
}
break;
default: default:
{ {
bok = this.petIsValid(pet, players, ct); bok = this.petIsValid(pet, players, ct);
@ -241,7 +279,7 @@ export class BattleHandler {
case GameUnitType.PET: case GameUnitType.PET:
if(skill.isSingleTarget()){ if(skill.isSingleTarget()){
let pet = this.getFinalTarget(skill._data.rangeid, players, param.dstpet, param.srcpet, skill._petowner, let pet = this.getFinalTarget(skill._data.rangeid, players, param.dstpet, param.srcpet, skill._petowner,
skill._data.targetid, !!skill._data.ridicule); skill._data.targetid, !!skill._data.ridicule, skill._data.targetid == GameUnitType.PET);
pet && lst.push(new SkillTarget(skill, param.srcplayer, param.srcpet, pet && lst.push(new SkillTarget(skill, param.srcplayer, param.srcpet,
pet, pet._isHero? GameUnitType.HERO: GameUnitType.PET)); pet, pet._isHero? GameUnitType.HERO: GameUnitType.PET));
}else{ }else{
@ -683,16 +721,16 @@ export class BattleHandler {
key += '|' + item.srcpet._idx; key += '|' + item.srcpet._idx;
} }
key += '' + cnt;
if(lastkey != key && lastkey != ''){ if(lastkey != key && lastkey != ''){
cnt++; cnt++;
} }
lastkey = key; lastkey = key;
let tmplst = resmap.get(key); let realkey = key + '|' + cnt;
let tmplst = resmap.get(realkey);
if(!tmplst){ if(!tmplst){
tmplst = [item]; tmplst = [item];
resmap.set(key, tmplst); resmap.set(realkey, tmplst);
}else{ }else{
tmplst.push(item); tmplst.push(item);
} }

View File

@ -60,6 +60,7 @@ export class PetHandler {
_orignEffCnt: number = 0; _orignEffCnt: number = 0;
_orignCardPoint: number = 0; _orignCardPoint: number = 0;
_hps: number;
public init(apet: Pet, owner: PlayerHandler, index: number){ public init(apet: Pet, owner: PlayerHandler, index: number){
this._pet = apet; this._pet = apet;
@ -75,6 +76,7 @@ export class PetHandler {
console.log('[error]no cfg:' + this._id); console.log('[error]no cfg:' + this._id);
} }
this._exredhurt = this._cfg.defense / 100; this._exredhurt = this._cfg.defense / 100;
this._hps = this._cfg.suck_blood / 100;
this._enmagic = this._cfg.spell_power; this._enmagic = this._cfg.spell_power;
if(param){ if(param){
@ -544,7 +546,9 @@ export class PetHandler {
obj.em = this._enmagic; obj.em = this._enmagic;
obj.silence = this._silentCD; obj.silence = this._silentCD;
obj.effectCount = this._orignEffCnt; obj.effectCount = this._orignEffCnt;
obj.hps = this._hps;
obj.point = this._orignCardPoint; obj.point = this._orignCardPoint;
obj.buffs = [];
return obj; return obj;
}; };

View File

@ -487,12 +487,12 @@ export class PlayerHandler {
}); });
}; };
public findAllTauntPets(lst: PetHandler[], expet?: PetHandler): number{ public findAllTauntPets(lst: PetHandler[], exself: boolean, expet?: PetHandler): number{
if(!lst){ if(!lst){
return -1; return -1;
} }
let ncnt = 0; let ncnt = 0;
if(this._self && this._self.isTaunt() && this._self != expet){ if(!exself && this._self && this._self.isTaunt() && this._self != expet){
lst.push(this._self); lst.push(this._self);
ncnt++; ncnt++;
} }
@ -505,12 +505,12 @@ export class PlayerHandler {
return ncnt; return ncnt;
}; };
public findAllPets(lst: PetHandler[], expet?: PetHandler): number{ public findAllPets(lst: PetHandler[], exself: boolean, expet?: PetHandler): number{
if(!lst){ if(!lst){
return -1; return -1;
} }
let ncnt = 0; let ncnt = 0;
if(this._self && this._self != expet){ if(!exself && this._self && this._self != expet){
lst.push(this._self); lst.push(this._self);
ncnt++; ncnt++;
} }
@ -523,6 +523,30 @@ export class PlayerHandler {
return ncnt; return ncnt;
}; };
public getMaxAPPet(exself: boolean): PetHandler{
let res: PetHandler = exself? null: this._self;
this._pets.forEach((item: PetHandler) =>{
if(!res){
res = item;
}else if(res.totalAP() < item.totalAP()){
res = item;
}
});
return res;
};
public getMinAPPet(exself: boolean): PetHandler{
let res: PetHandler = exself? null: this._self;
this._pets.forEach((item: PetHandler) =>{
if(!res){
res = item;
}else if(res.totalAP() > item.totalAP()){
res = item;
}
});
return res;
};
public hasTransEffCardSkill(): boolean{ public hasTransEffCardSkill(): boolean{
if(!this._self){ if(!this._self){
return false; return false;

View File

@ -584,7 +584,7 @@ export class Skill {
}; };
EMV(effvalue: number){ EMV(effvalue: number){
if(this._type != SkillType.MAGIC){ if(!this._data.spellpower){
return effvalue; return effvalue;
} }
let ev = this._owner.getEM(); let ev = this._owner.getEM();

View File

@ -119,6 +119,8 @@ export const enum SkillType{
* 10. * 10.
* 11. * 11.
* 12. * 12.
* 13.
* 14.
*/ */
export const enum SkillRangeUnitType{ export const enum SkillRangeUnitType{
NONE = 0, NONE = 0,
@ -133,6 +135,9 @@ export const enum SkillRangeUnitType{
OWNER = 10, OWNER = 10,
RANDOM_ONE_EXOWNER = 11, RANDOM_ONE_EXOWNER = 11,
ALL_EXOWNER = 12, ALL_EXOWNER = 12,
MAXAP_ONE = 13,
MINAP_ONE = 14,
}; };
// 技能效果类型 // 技能效果类型

View File

@ -16,7 +16,7 @@ let SkillMan = {
_skillcb: function(p1:any, p2:any, p3:any, p4:any){}, _skillcb: function(p1:any, p2:any, p3:any, p4:any){},
onSkillTrigger(skill:Skill, param: any, bok: boolean) { onSkillTrigger(skill:Skill, param: any, bok: boolean) {
this._skillcb && this._skillcb(skill, param, bok, skill._owner); this._skillcb?.(skill, param, bok, skill._owner);
}, },
addSkill(id: number, data: SkillCfg) { addSkill(id: number, data: SkillCfg) {