上下限随机处理
This commit is contained in:
parent
780dc65929
commit
2720bbd785
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
[{"id":30011,"herounit_id":50011,"ex_skill":0,"follower1id":51011,"follower1":"熊战士","follower2id":51021,"follower2":"蛙博士","follower3id":51031,"follower3":"狮子王","follower4id":51041,"follower4":"波斯猫"},{"id":30021,"herounit_id":50021,"ex_skill":0,"follower1id":51011,"follower1":"熊战士","follower2id":51021,"follower2":"蛙博士","follower3id":51061,"follower3":"小火龙","follower4id":51051,"follower4":"偷油鼠"},{"id":30031,"herounit_id":50031,"ex_skill":0,"follower1id":51011,"follower1":"熊战士","follower2id":51021,"follower2":"蛙博士","follower3id":51031,"follower3":"狮子王","follower4id":51041,"follower4":"波斯猫"},{"id":30041,"herounit_id":50041,"ex_skill":0,"follower1id":51011,"follower1":"熊战士","follower2id":51021,"follower2":"蛙博士","follower3id":51061,"follower3":"小火龙","follower4id":51051,"follower4":"偷油鼠"},{"id":30051,"herounit_id":50051,"ex_skill":0,"follower1id":51011,"follower1":"熊战士","follower2id":51021,"follower2":"蛙博士","follower3id":51031,"follower3":"狮子王","follower4id":51041,"follower4":"波斯猫"},{"id":30061,"herounit_id":50061,"ex_skill":0,"follower1id":51011,"follower1":"熊战士","follower2id":51021,"follower2":"蛙博士","follower3id":51061,"follower3":"小火龙","follower4id":51051,"follower4":"偷油鼠"},{"id":30071,"herounit_id":50071,"ex_skill":0,"follower1id":51011,"follower1":"熊战士","follower2id":51021,"follower2":"蛙博士","follower3id":51031,"follower3":"狮子王","follower4id":51041,"follower4":"波斯猫"},{"id":30081,"herounit_id":50081,"ex_skill":0,"follower1id":51011,"follower1":"熊战士","follower2id":51021,"follower2":"蛙博士","follower3id":51061,"follower3":"小火龙","follower4id":51051,"follower4":"偷油鼠"}]
|
||||
[{"id":30011,"herounit_id":50011,"ex_skill":0,"follower1id":51011,"follower2id":51021,"follower3id":51031,"follower4id":51041},{"id":30021,"herounit_id":50021,"ex_skill":0,"follower1id":51011,"follower2id":51021,"follower3id":51061,"follower4id":51051},{"id":30031,"herounit_id":50031,"ex_skill":0,"follower1id":51011,"follower2id":51021,"follower3id":51031,"follower4id":51041},{"id":30041,"herounit_id":50041,"ex_skill":0,"follower1id":51011,"follower2id":51021,"follower3id":51061,"follower4id":51051},{"id":30051,"herounit_id":50051,"ex_skill":0,"follower1id":51011,"follower2id":51021,"follower3id":51031,"follower4id":51041},{"id":30061,"herounit_id":50061,"ex_skill":0,"follower1id":51011,"follower2id":51021,"follower3id":51061,"follower4id":51051},{"id":30071,"herounit_id":50071,"ex_skill":0,"follower1id":51011,"follower2id":51021,"follower3id":51031,"follower4id":51041},{"id":30081,"herounit_id":50081,"ex_skill":0,"follower1id":51011,"follower2id":51021,"follower3id":51061,"follower4id":51051}]
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
[{"id":10001,"type_id":1,"count":16,"point":1,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10011,"type_id":1,"count":16,"point":2,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10021,"type_id":1,"count":16,"point":3,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10031,"type_id":1,"count":16,"point":4,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10041,"type_id":1,"count":16,"point":5,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10051,"type_id":1,"count":16,"point":6,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10061,"type_id":1,"count":16,"point":7,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10071,"type_id":1,"count":16,"point":8,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10081,"type_id":1,"count":16,"point":9,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10091,"type_id":1,"count":16,"point":10,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10101,"type_id":2,"count":16,"point":10,"weight":"10101:100"},{"id":10111,"type_id":3,"count":8,"point":10,"weight":"10111:100"},{"id":10002,"type_id":1,"count":0,"point":0,"weight":""},{"id":10012,"type_id":1,"count":20,"point":1,"weight":""},{"id":10022,"type_id":1,"count":20,"point":2,"weight":""},{"id":10032,"type_id":1,"count":20,"point":3,"weight":""},{"id":10042,"type_id":1,"count":20,"point":4,"weight":""},{"id":10052,"type_id":1,"count":20,"point":5,"weight":""},{"id":10062,"type_id":1,"count":20,"point":6,"weight":""},{"id":10072,"type_id":1,"count":20,"point":7,"weight":""},{"id":10082,"type_id":1,"count":20,"point":8,"weight":""},{"id":10092,"type_id":1,"count":20,"point":9,"weight":""},{"id":10102,"type_id":1,"count":20,"point":10,"weight":""},{"id":10112,"type_id":2,"count":20,"point":10,"weight":""},{"id":10122,"type_id":3,"count":10,"point":10,"weight":""},{"id":10132,"type_id":4,"count":10,"point":10,"weight":""}]
|
||||
[{"id":10001,"type_id":1,"count":16,"point":1,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10011,"type_id":1,"count":16,"point":2,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10021,"type_id":1,"count":16,"point":3,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10031,"type_id":1,"count":16,"point":4,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10041,"type_id":1,"count":16,"point":5,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10051,"type_id":1,"count":16,"point":6,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10061,"type_id":1,"count":16,"point":7,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10071,"type_id":1,"count":16,"point":8,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10081,"type_id":1,"count":16,"point":9,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10091,"type_id":1,"count":16,"point":10,"weight":"20011:10|20021:10|20031:10|20041:10|20051:10|20061:10|20071:10|20081:10"},{"id":10101,"type_id":2,"count":16,"point":10,"weight":"10101:100"},{"id":10111,"type_id":3,"count":8,"point":10,"weight":"10111:100"}]
|
Binary file not shown.
@ -7,26 +7,18 @@ export class HeroCfg implements Cfg{
|
||||
public herounit_id: number;
|
||||
public ex_skill: number;
|
||||
public follower1id: number;
|
||||
public follower1: number;
|
||||
public follower2id: number;
|
||||
public follower2: number;
|
||||
public follower3id: number;
|
||||
public follower3: number;
|
||||
public follower4id: number;
|
||||
public follower4: number;
|
||||
|
||||
public decode(data: any) {
|
||||
this.id = data.id;
|
||||
this.herounit_id = data.herounit_id;
|
||||
this.ex_skill = data.ex_skill;
|
||||
this.follower1id = data.follower1id;
|
||||
this.follower1 = data.follower1;
|
||||
this.follower2id = data.follower2id;
|
||||
this.follower2 = data.follower2;
|
||||
this.follower3id = data.follower3id;
|
||||
this.follower3 = data.follower3;
|
||||
this.follower4id = data.follower4id;
|
||||
this.follower4 = data.follower4;
|
||||
};
|
||||
|
||||
public isOK (uniqueID: number, param1: any, param2: any): boolean {
|
||||
|
@ -32,9 +32,14 @@ export class SkillCfg implements Cfg{
|
||||
public quoteskillid: number;
|
||||
public quoteskill_times: number;
|
||||
public quoteskill_timesmax: number;
|
||||
public skill_users: number;
|
||||
public quotecardid: number;
|
||||
public quotecard_times: number;
|
||||
public quotecard_timesmax: number;
|
||||
public getskillid: number;
|
||||
public getskill_times: number;
|
||||
public getskill_timesmax: number;
|
||||
public skill_owners: number;
|
||||
|
||||
public decode(data: any) {
|
||||
this.id = data.id;
|
||||
@ -66,9 +71,14 @@ export class SkillCfg implements Cfg{
|
||||
this.quoteskillid = data.quoteskillid;
|
||||
this.quoteskill_times = data.quoteskill_times;
|
||||
this.quoteskill_timesmax = data.quoteskill_timesmax;
|
||||
this.skill_users = data.skill_users;
|
||||
this.quotecardid = data.quotecardid;
|
||||
this.quotecard_times = data.quotecard_times;
|
||||
this.quotecard_timesmax = data.quotecard_timesmax;
|
||||
this.getskillid = data.getskillid;
|
||||
this.getskill_times = data.getskill_times;
|
||||
this.getskill_timesmax = data.getskill_timesmax;
|
||||
this.skill_owners = data.skill_owners;
|
||||
};
|
||||
|
||||
public isOK (uniqueID: number, param1: any, param2: any): boolean {
|
||||
|
@ -4,7 +4,7 @@ import { SkillCfg } from "cfg/parsers/SkillCfg";
|
||||
import { UnitCfg } from "cfg/parsers/UnitCfg";
|
||||
import arrUtil from "../../utils/array.util";
|
||||
import { BaseConst } from "../../constants/BaseConst";
|
||||
import { EffectCardType, EnhanceEffectType, SkillEffectSignType, SkillEffectValueType, SkillTargetType } from "./skill/SkillConst";
|
||||
import { EffectCardType, EnhanceCalcType, EnhanceEffectType, SkillEffectSignType, SkillEffectValueType, SkillTargetType } from "./skill/SkillConst";
|
||||
|
||||
let CfgMan = {
|
||||
/**
|
||||
@ -34,18 +34,18 @@ let CfgMan = {
|
||||
calcEnhanceValue(
|
||||
eT: EnhanceEffectType,
|
||||
eV: number,
|
||||
eR: number,
|
||||
eC: number,
|
||||
aP: number,
|
||||
): number{
|
||||
switch(eT){
|
||||
case EnhanceEffectType.EN_POWER_BYAP:
|
||||
case EnhanceEffectType.EN_SKILL_BYAP:
|
||||
return eV * eR * aP;
|
||||
return eV * eC * aP;
|
||||
case EnhanceEffectType.EN_POWER_BYCFG:
|
||||
case EnhanceEffectType.EN_SKILL_BYCFG:
|
||||
return eV * eR;
|
||||
case EnhanceEffectType.EN_SUBSKILL_BYCFG:
|
||||
return eR;
|
||||
return eV * eC;
|
||||
case EnhanceEffectType.EN_QCOUNT:
|
||||
return eC;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
@ -62,18 +62,120 @@ let CfgMan = {
|
||||
switch(eST){
|
||||
case SkillEffectSignType.PERCENT:
|
||||
n /= 100;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
switch(eVT){
|
||||
case SkillEffectValueType.RATIO:
|
||||
case SkillEffectValueType.RATIO_AP:
|
||||
n *= aP;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return n;
|
||||
},
|
||||
|
||||
_calcValue(ev: number, et: SkillEffectSignType){
|
||||
let n = ev;
|
||||
switch(et){
|
||||
case SkillEffectSignType.PERCENT:
|
||||
n /= 100;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return n;
|
||||
},
|
||||
|
||||
calcEffctValueEx(
|
||||
eVT: SkillEffectValueType,
|
||||
eST: SkillEffectSignType,
|
||||
eV: number,
|
||||
aP: number,
|
||||
sP: number)
|
||||
{
|
||||
let n = this._calcValue(eV, eST);
|
||||
switch(eVT){
|
||||
case SkillEffectValueType.RATIO_AP:
|
||||
n *= aP;
|
||||
break;
|
||||
case SkillEffectValueType.RATIO_SP:
|
||||
n *= sP;
|
||||
break;
|
||||
}
|
||||
return n;
|
||||
},
|
||||
|
||||
randomEffectValue(
|
||||
vMin: number,
|
||||
vMax: number,
|
||||
|
||||
eET: EnhanceEffectType,
|
||||
|
||||
eST: SkillEffectSignType,
|
||||
eEV: number,
|
||||
|
||||
aC: number
|
||||
): number{
|
||||
let eV = this._calcValue(eEV, eST);
|
||||
let nmin = vMin;
|
||||
let nmax = vMax;
|
||||
switch(eET){
|
||||
case EnhanceEffectType.EN_SKILL_BYCFG:
|
||||
nmin += eV * aC;
|
||||
break;
|
||||
case EnhanceEffectType.EN_SKILL_BYAP:
|
||||
nmin += eV * aC;
|
||||
break;
|
||||
case EnhanceEffectType.EN_QCOUNT:
|
||||
nmin += aC;
|
||||
break;
|
||||
case EnhanceEffectType.EN_POWER_BYCFG:
|
||||
nmin += eV * aC;
|
||||
nmax = nmin;
|
||||
break;
|
||||
case EnhanceEffectType.EN_POWER_BYAP:
|
||||
nmin += eV * aC;
|
||||
nmax = nmin;
|
||||
break;
|
||||
case EnhanceEffectType.EN_SKILL_RELEASE_MIN:
|
||||
nmin += aC;
|
||||
break;
|
||||
case EnhanceEffectType.EN_SKILL_RELEASE_MAX:
|
||||
nmax += aC;
|
||||
break;
|
||||
case EnhanceEffectType.EN_QCOUNT_MAX:
|
||||
nmax += aC;
|
||||
break;
|
||||
case EnhanceEffectType.EN_SKILL_BYCFG_MAX:
|
||||
nmax += eV * aC;
|
||||
break;
|
||||
case EnhanceEffectType.EN_SKILL_BYCFG_MM:
|
||||
nmin += eV * aC;
|
||||
nmax += eV * aC;
|
||||
break;
|
||||
case EnhanceEffectType.EN_SKILL_BYAP_MAX:
|
||||
nmax += eV * aC;
|
||||
break;
|
||||
case EnhanceEffectType.EN_SKILL_BYAP_MM:
|
||||
nmin += eV * aC;
|
||||
nmax += eV * aC;
|
||||
break;
|
||||
case EnhanceEffectType.EN_SKILL_QCOUNT_MM:
|
||||
nmin += aC;
|
||||
nmax += aC;
|
||||
break;
|
||||
case EnhanceEffectType.EN_SKILL_RELEASE_MM:
|
||||
nmin += aC;
|
||||
nmax += aC;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
return this.roundV(nmin, nmax);
|
||||
},
|
||||
|
||||
getTargetByCard(cardid: number): SkillTargetType{
|
||||
let obj = this._cardcache.get(cardid + '');
|
||||
if(obj){
|
||||
|
@ -17,7 +17,7 @@ export class PetHandler {
|
||||
_owner: PlayerHandler;
|
||||
_id: number;
|
||||
_cfg: UnitCfg;
|
||||
_skills: Map<number, Skill> = new Map();
|
||||
_skills: Skill[] = [];
|
||||
|
||||
_bornSkills: Skill[] = [];
|
||||
_dieSkills: Skill[] = [];
|
||||
@ -80,7 +80,7 @@ export class PetHandler {
|
||||
|
||||
this._ceilBaseAP();
|
||||
|
||||
this._skills.clear();
|
||||
this._skills.length = 0;
|
||||
|
||||
this.addSkill(this._cfg.base_skill1id);
|
||||
this.addSkill(this._cfg.base_skill2id);
|
||||
@ -138,13 +138,14 @@ export class PetHandler {
|
||||
return lst;
|
||||
};
|
||||
|
||||
public addSkill(skillid: number): Skill{
|
||||
public addSkill(skillid: number, count: number = 1): Skill[]{
|
||||
let lst;
|
||||
if(skillid > 0){
|
||||
let obj = this._skills.get(skillid);
|
||||
if(!obj){
|
||||
obj = this._owner.newSkill(skillid);
|
||||
lst = [];
|
||||
for(let i = 0; i < count;i++){
|
||||
let obj = this._owner.newSkill(skillid);
|
||||
if(obj){
|
||||
this._skills.set(skillid, obj);
|
||||
this._skills.push(obj);
|
||||
this._selfskills.push(skillid);
|
||||
if(obj.isBornSkill()){
|
||||
this._bornSkills.push(obj);
|
||||
@ -155,20 +156,24 @@ export class PetHandler {
|
||||
}else{
|
||||
this._waitskills.push(obj);
|
||||
}
|
||||
lst.push(obj);
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return lst;
|
||||
};
|
||||
|
||||
public delSkill(skillid:number, halocb?: any){
|
||||
if(skillid > 0){
|
||||
let obj = this._skills.get(skillid);
|
||||
if(obj){
|
||||
let idx = this._bornSkills.indexOf(obj);
|
||||
let idx = this._skills.findIndex((item:Skill) => {
|
||||
return item._id == skillid;
|
||||
});
|
||||
|
||||
if(idx >= 0){
|
||||
let baseidx = idx;
|
||||
let obj = this._skills[idx];
|
||||
idx = this._bornSkills.indexOf(obj);
|
||||
if(idx >= 0){
|
||||
this._bornSkills.splice(idx, 1);
|
||||
}
|
||||
@ -185,8 +190,10 @@ export class PetHandler {
|
||||
if(idx >= 0){
|
||||
this._waitskills.splice(idx, 1);
|
||||
}
|
||||
|
||||
this._skills.splice(baseidx, 1);
|
||||
}
|
||||
this._skills.delete(skillid);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -137,7 +137,7 @@ export class PlayerHandler {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(cfg.type_id == EffectCardType.NPC){
|
||||
if(cfg.type_id == EffectCardType.NPC || cfg.type_id == EffectCardType.NPC_CUSTOM){
|
||||
let pet = this.newPet();
|
||||
if(!pet){
|
||||
return false;
|
||||
@ -179,8 +179,8 @@ export class PlayerHandler {
|
||||
return obj;
|
||||
};
|
||||
|
||||
public addSkill(skillid: number): Skill{
|
||||
return this._self.addSkill(skillid);
|
||||
public addSkill(skillid: number, count: number = 1): Skill[]{
|
||||
return this._self.addSkill(skillid, count);
|
||||
};
|
||||
|
||||
public handleSkill(skillid: number, count: number, param: SkillParam, pet: PetHandler):SkillTarget[]{
|
||||
@ -199,19 +199,21 @@ export class PlayerHandler {
|
||||
let bhalo = false;
|
||||
let bchged = false;
|
||||
for(let i = 0; i < count; i++){
|
||||
let obj = pet.addSkill(skillid);
|
||||
if(obj){
|
||||
let sl = pet.addSkill(skillid);
|
||||
if(sl && sl.length > 0){
|
||||
bchged = true;
|
||||
if(obj.isBornSkill()){
|
||||
lst.push(obj);
|
||||
}else if(obj.isDieSkill()){
|
||||
//nothing to do
|
||||
}else if(obj.isHaloSkill()){
|
||||
//only handle halo, not handle skill
|
||||
bhalo = true;
|
||||
}else{
|
||||
lst.push(obj);
|
||||
}
|
||||
sl.forEach((obj: Skill)=>{
|
||||
if(obj.isBornSkill()){
|
||||
lst.push(obj);
|
||||
}else if(obj.isDieSkill()){
|
||||
//nothing to do
|
||||
}else if(obj.isHaloSkill()){
|
||||
//only handle halo, not handle skill
|
||||
bhalo = true;
|
||||
}else{
|
||||
lst.push(obj);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
if(bhalo){
|
||||
@ -279,6 +281,10 @@ export class PlayerHandler {
|
||||
}
|
||||
};
|
||||
|
||||
public totalAP(){
|
||||
return this._self.totalAP();
|
||||
};
|
||||
|
||||
public setFriend(aplayer: PlayerHandler){
|
||||
this._friend = aplayer;
|
||||
};
|
||||
@ -292,7 +298,7 @@ export class PlayerHandler {
|
||||
return this._self.reborn();
|
||||
};
|
||||
|
||||
public attack(apet: PetHandler, param: SkillParam){
|
||||
public attack(apet: PetHandler, param: SkillParam, ev: number){
|
||||
return this._self.attack(apet, param);
|
||||
};
|
||||
|
||||
@ -454,14 +460,10 @@ export class PlayerHandler {
|
||||
return false;
|
||||
}
|
||||
|
||||
let bok = false;
|
||||
for(let [key, val] of this._self._skills){
|
||||
if(val.isTransEffCardSkill()){
|
||||
bok = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return bok;
|
||||
let obj = this._self._skills.find((val: Skill)=>{
|
||||
return val.isTransEffCardSkill();
|
||||
});
|
||||
return !!obj;
|
||||
};
|
||||
|
||||
public getTransEffCardRate(): number{
|
||||
@ -469,12 +471,11 @@ export class PlayerHandler {
|
||||
return 0;
|
||||
}
|
||||
|
||||
for(let [key, val] of this._self._skills){
|
||||
if(val.isTransEffCardSkill()){
|
||||
return val.getEffValue();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
let obj = this._self._skills.find((val: Skill)=>{
|
||||
return val.isTransEffCardSkill();
|
||||
});
|
||||
|
||||
return obj? obj.getEffValue(): 0;
|
||||
};
|
||||
|
||||
onCardLinkReady(fromplayer: PlayerHandler){
|
||||
|
@ -25,6 +25,7 @@ export class Skill {
|
||||
|
||||
halo_v: number = -1;
|
||||
rd: number = 0;
|
||||
private _subskill: Skill;
|
||||
// LIFE-CYCLE CALLBACKS:
|
||||
|
||||
// onLoad () {};
|
||||
@ -170,17 +171,23 @@ export class Skill {
|
||||
return CfgMan.calcEnhanceValue(this._data.edd_effid, this._data.edd_effnum, param.edd_cnt, param.cardpoint);
|
||||
};
|
||||
|
||||
getEffValue(ap?: number): number{
|
||||
return CfgMan.calcEffectValue(this._data.eff_numtypeid,
|
||||
this._data.num_signid, this._data.eff_num, this._data.eff_nummax, ap? ap: this._data.eff_num);
|
||||
|
||||
getEffValue(ac?: number, ap?: number): number{
|
||||
return this.getFinalValue(this._data.eff_num, this._data.eff_nummax, ac, ap);
|
||||
};
|
||||
|
||||
getHaloValue(ap?: number): number{
|
||||
getFinalValue(nmin: number, nmax: number, ac:number, ap: number, sp: number = 0): number{
|
||||
let n = CfgMan.randomEffectValue(nmin, nmax, this._data.edd_effid, this._data.eddeffnum_signid,
|
||||
this._data.edd_effnum, ac);
|
||||
return CfgMan.calcEffctValueEx(this._data.eff_numtypeid, this._data.num_signid, n, ap, sp);
|
||||
};
|
||||
|
||||
getHaloValue(): number{
|
||||
if(!this.isHaloSkill()){
|
||||
return 0;
|
||||
}
|
||||
if(this.halo_v < 0){
|
||||
this.halo_v = this.getEffValue(ap);
|
||||
this.halo_v = this.getEffValue();
|
||||
}
|
||||
return this.halo_v;
|
||||
};
|
||||
@ -206,7 +213,14 @@ export class Skill {
|
||||
this.halo_v = -1;
|
||||
};
|
||||
|
||||
trigger(param: SkillParam, cb?: any) {
|
||||
_triggerSubSkill(param: SkillParam, cb?: any){
|
||||
if(this._data.quoteskillid && !this._subskill){
|
||||
this._subskill = this._owner.newSkill(this._data.quoteskillid);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
_trigger(param: SkillParam, cb?: any) {
|
||||
//触发buff效果
|
||||
let res = TriggerManager.onTrigger(this, param);
|
||||
|
||||
@ -220,9 +234,18 @@ export class Skill {
|
||||
|
||||
this._cb && this._cb(this, param, res);
|
||||
|
||||
this._man && this._man.onSkillTrigger(this, param, res);
|
||||
this._triggerSubSkill(param, cb);
|
||||
};
|
||||
|
||||
return res;
|
||||
trigger(param: SkillParam, cb?: any) {
|
||||
let ncount = this.getFinalValue(this._data.release_times,
|
||||
this._data.release_timesmax, param.edd_cnt, param.cardpoint);
|
||||
if(ncount == 0){
|
||||
ncount = 1;
|
||||
}
|
||||
for(let i=0; i<ncount;i++){
|
||||
this._trigger(param, cb);
|
||||
}
|
||||
};
|
||||
|
||||
checkTrigger(tg_type: TriggerType, tg_value: any, tg_target: SkillParam, cb?: any) {
|
||||
@ -344,10 +367,14 @@ export class Skill {
|
||||
};
|
||||
|
||||
summon(efftype: SkillEffectType, exparam: SkillParam, tgt: SkillTarget){
|
||||
let ncount = 1 + exparam.edd_cnt;
|
||||
switch(efftype){
|
||||
case SkillEffectType.SUMMON_NPC:
|
||||
{
|
||||
let ncount = this.getFinalValue(this._data.quoteunit_times, this._data.quoteunit_timesmax,
|
||||
exparam.edd_cnt, exparam.cardpoint);
|
||||
if(ncount == 0){
|
||||
ncount = 1;
|
||||
}
|
||||
let obj = tgt.srcpet? tgt.srcpet: tgt.srcplayer;
|
||||
let n = obj.summonPet(this._data.quoteunitid, ncount, exparam);
|
||||
if(n >= 0){
|
||||
@ -359,6 +386,11 @@ export class Skill {
|
||||
break;
|
||||
case SkillEffectType.SUMMON_SKILL:
|
||||
{
|
||||
let ncount = this.getFinalValue(this._data.quoteskill_times, this._data.quoteskill_timesmax,
|
||||
exparam.edd_cnt, exparam.cardpoint);
|
||||
if(ncount == 0){
|
||||
ncount = 1;
|
||||
}
|
||||
let obj = tgt.srcpet? tgt.srcpet: tgt.srcplayer;
|
||||
let res = obj.useSkill(this._data.quoteskillid, ncount, exparam);
|
||||
if(res){
|
||||
@ -370,10 +402,15 @@ export class Skill {
|
||||
break;
|
||||
case SkillEffectType.SKILL_GET:
|
||||
{
|
||||
let ncount = this.getFinalValue(this._data.getskill_times, this._data.getskill_timesmax,
|
||||
exparam.edd_cnt, exparam.cardpoint);
|
||||
if(ncount == 0){
|
||||
ncount = 1;
|
||||
}
|
||||
let obj = tgt.srcpet? tgt.srcpet: tgt.srcplayer;
|
||||
let n = obj.addSkill(this._data.quoteskillid);
|
||||
let n = obj.addSkill(this._data.getskillid, ncount);
|
||||
if(n){
|
||||
tgt.success(efftype, this._data.quoteskillid);
|
||||
tgt.success(efftype, this._data.getskillid);
|
||||
}else{
|
||||
tgt.fail(efftype, -1);
|
||||
}
|
||||
@ -451,11 +488,12 @@ export class Skill {
|
||||
}
|
||||
};
|
||||
|
||||
attack(tgt: SkillTarget, param: SkillParam){
|
||||
attack(effvalue: number, tgt: SkillTarget, param: SkillParam){
|
||||
let efftype = SkillEffectType.ATTACK;
|
||||
if(tgt.dsttype == GameUnitType.HERO || tgt.dsttype == GameUnitType.PET){
|
||||
let obj = tgt.srcpet? tgt.srcpet: tgt.srcplayer;
|
||||
let res = obj.attack((tgt.dst as PetHandler), param);
|
||||
let v = effvalue;
|
||||
let res = obj.attack((tgt.dst as PetHandler), param, v);
|
||||
if(res){
|
||||
tgt.success(efftype, res);
|
||||
}else{
|
||||
@ -470,7 +508,8 @@ export class Skill {
|
||||
let efftype = SkillEffectType.ATTACK_BACK;
|
||||
if(tgt.dsttype == GameUnitType.HERO || tgt.dsttype == GameUnitType.PET){
|
||||
let obj = tgt.srcpet? tgt.srcpet: tgt.srcplayer;
|
||||
let res = obj.attack((tgt.dst as PetHandler), param);
|
||||
let v = effvalue;
|
||||
let res = obj.attack((tgt.dst as PetHandler), param, v);
|
||||
if(res){
|
||||
tgt.success(efftype, res);
|
||||
}else{
|
||||
@ -504,7 +543,6 @@ export class Skill {
|
||||
obj._type = this._type;
|
||||
obj._param = this._param;
|
||||
obj._tgctrl = this._tgctrl;
|
||||
obj._man = this._man;
|
||||
return obj;
|
||||
};
|
||||
};
|
||||
|
@ -118,7 +118,7 @@ export const enum SkillRangeUnitType{
|
||||
* 6.强化战力(护盾性质的战力)
|
||||
* 7.扣除战力(伤害)
|
||||
* 8.召唤随从(需引用ID)
|
||||
* 9.触发技能(需引用ID)
|
||||
* 9.触发技能(需引用ID) // 已废弃
|
||||
* 10.嘲讽
|
||||
* 11.扣除HP
|
||||
* 12.增加出场战力[暂不用]
|
||||
@ -143,7 +143,7 @@ export const enum SkillEffectType
|
||||
POWEREX_ENHANCE = 6,
|
||||
HURT_POWER = 7,
|
||||
SUMMON_NPC = 8,
|
||||
SUMMON_SKILL = 9,
|
||||
SUMMON_SKILL = 9, // 废弃
|
||||
TAUNT = 10,
|
||||
HURT_HP = 11,
|
||||
POWER_ADD_BUFF = 12,
|
||||
@ -163,7 +163,8 @@ export const enum SkillEffectValueType
|
||||
{
|
||||
NONE = 0,
|
||||
NUMBER = 1,
|
||||
RATIO = 2,
|
||||
RATIO_AP = 2, // 总点数*倍数
|
||||
RATIO_SP = 3, // 战力*倍数
|
||||
};
|
||||
|
||||
// 技能效果参数标识
|
||||
@ -180,29 +181,49 @@ export const enum EffectCardType
|
||||
NONE = 0,
|
||||
NPC = 1,
|
||||
MAGIC = 2,
|
||||
NPC_CUSTOM = 11,
|
||||
};
|
||||
|
||||
// 技能效果强化类型
|
||||
/**
|
||||
* 1.(使效果参数)+效果强化参数*效果强化牌数
|
||||
* 2.(使效果参数)+效果强化参数的倍速*联合牌总点数*效果强化牌数
|
||||
* 3.(使引用随从、技能的次数)+效果强化牌数
|
||||
* 4.(使出场战力)+效果强化参数*效果强化牌数
|
||||
* 5.(使出场战力)+效果强化参数的倍速*联合牌总点数*效果强化牌数
|
||||
* 1.(使效果参数)+效果强化参数*效果强化牌数 //下限
|
||||
* 2.(使效果参数)+效果强化参数的倍速*联合牌总点数*效果强化牌数 //下限
|
||||
* 3.(使引用随从、技能的次数)+效果强化牌数 //下限
|
||||
* 4.(使出场战力)+效果强化参数*效果强化牌数 //下限
|
||||
* 5.(使出场战力)+效果强化参数的倍速*联合牌总点数*效果强化牌数 //下限
|
||||
* 21.使本技能的释放次数(下限)+a牌数
|
||||
* 22.使本技能的释放次数(上限)+a牌数
|
||||
* 23.使本技能的引用次数(上限)+a牌数:同理,引用次数,没加下限的,就是下限
|
||||
* 24.效果参数(上限)+a参数*a牌数;对应“1”,1针对下限,24针对上限,25针对上下限
|
||||
* 25.效果参数(下限+上限)+a参数*a牌数
|
||||
* 26.效果参数(上限)+a倍速*总点数*a牌数;对应“2”,2针对下限,26针对上限,27针对上下限
|
||||
* 27.效果参数(下限+上限)+a倍速*总点数*a牌数
|
||||
* 28.引用次数(下限+上限)+a牌数
|
||||
* 29.释放次数(下限+上限)+a牌数
|
||||
*/
|
||||
export const enum EnhanceEffectType {
|
||||
NONE = 0,
|
||||
EN_SKILL_BYCFG = 1,
|
||||
EN_SKILL_BYAP = 2,
|
||||
EN_SUBSKILL_BYCFG = 3,
|
||||
EN_QCOUNT = 3,
|
||||
EN_POWER_BYCFG = 4,
|
||||
EN_POWER_BYAP = 5,
|
||||
EN_SKILL_USECOUNT_MIN = 21,
|
||||
EN_SKILL_USECOUNT_MAX = 22,
|
||||
EN_SKILL_QCOUNT_MAX = 23,
|
||||
EN_SKILL_RELEASE_MIN = 21,
|
||||
EN_SKILL_RELEASE_MAX = 22,
|
||||
EN_QCOUNT_MAX = 23,
|
||||
EN_SKILL_BYCFG_MAX = 24,
|
||||
EN_SKILL_BYCFG_MM = 25,
|
||||
EN_SKILL_BYAP_MAX = 26,
|
||||
EN_SKILL_BYAP_MM = 27,
|
||||
EN_SKILL_QCOUNT_MM = 28,
|
||||
EN_SKILL_RELEASE_MM = 29,
|
||||
};
|
||||
|
||||
export const enum EnhanceCalcType {
|
||||
NONE = 0,
|
||||
ECT_AC = 1,
|
||||
ECT_AC_EV = 2,
|
||||
ECT_AC_EV_AP = 3,
|
||||
};
|
||||
|
||||
// 游戏单位类型
|
||||
|
@ -76,8 +76,9 @@ let TriggerManager = {
|
||||
|
||||
onTrigger(sender: Skill, param: SkillParam): SkillTarget[] {
|
||||
let effectid = sender._data.effect_typeid;
|
||||
let env = sender.getEnhanceValue(param);
|
||||
let effv = sender.getEffValue(param.cardpoint);
|
||||
|
||||
let effv = sender.getEffValue(param.edd_cnt, param.cardpoint);
|
||||
|
||||
let tgts = sender.getTargets(param);
|
||||
if(!tgts || !tgts.length){
|
||||
return null;
|
||||
@ -93,7 +94,7 @@ let TriggerManager = {
|
||||
case SkillEffectType.CARD_CHG_EN:
|
||||
case SkillEffectType.CARD_GETDIRECT:
|
||||
tgts.forEach((item)=>{
|
||||
sender.handleCard(effectid, effv + env, item);
|
||||
sender.handleCard(effectid, effv, item);
|
||||
});
|
||||
break;
|
||||
case SkillEffectType.POWER_ENHANCE:
|
||||
@ -101,7 +102,7 @@ let TriggerManager = {
|
||||
case SkillEffectType.HURT_POWER:
|
||||
case SkillEffectType.HURT_ALL:
|
||||
tgts.forEach((item)=>{
|
||||
sender.handlePower(effectid, effv + env, item);
|
||||
sender.handlePower(effectid, effv, item);
|
||||
});
|
||||
break;
|
||||
case SkillEffectType.SUMMON_NPC:
|
||||
@ -117,17 +118,17 @@ let TriggerManager = {
|
||||
break;
|
||||
case SkillEffectType.HURT_HP:
|
||||
tgts.forEach((item)=>{
|
||||
sender.handleHP(effv + env, item);
|
||||
sender.handleHP(effv, item);
|
||||
});
|
||||
break;
|
||||
case SkillEffectType.POWER_ADD_BUFF:
|
||||
tgts.forEach((item)=>{
|
||||
sender.addBuff(effectid, effv + env, item);
|
||||
sender.addBuff(effectid, effv, item);
|
||||
});
|
||||
break;
|
||||
case SkillEffectType.HURT_REDUCE:
|
||||
tgts.forEach((item)=>{
|
||||
sender.reduceHurt(effv + env, item);
|
||||
sender.reduceHurt(effv, item);
|
||||
});
|
||||
break;
|
||||
case SkillEffectType.REBORN:
|
||||
@ -137,22 +138,22 @@ let TriggerManager = {
|
||||
break;
|
||||
case SkillEffectType.ENHANCE_MAGIC:
|
||||
tgts.forEach((item)=>{
|
||||
sender.enhanceMagic(effv + env, item);
|
||||
sender.enhanceMagic(effv, item);
|
||||
});
|
||||
break;
|
||||
case SkillEffectType.SILENT:
|
||||
tgts.forEach((item)=>{
|
||||
sender.silent(effv + env, item);
|
||||
sender.silent(effv, item);
|
||||
});
|
||||
break;
|
||||
case SkillEffectType.ATTACK:
|
||||
tgts.forEach((item)=>{
|
||||
sender.attack(item, param);
|
||||
sender.attack(effv, item, param);
|
||||
});
|
||||
break;
|
||||
case SkillEffectType.ATTACK_BACK:
|
||||
tgts.forEach((item)=>{
|
||||
sender.attack_back(effv + env, item, param);
|
||||
sender.attack_back(effv, item, param);
|
||||
});
|
||||
break;
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user