Merge branch 'second' of git.kingsome.cn:node/card_svr into second
This commit is contained in:
commit
1a3c295c79
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
BIN
doc/todolist2021.xmind
Normal file
BIN
doc/todolist2021.xmind
Normal file
Binary file not shown.
@ -234,7 +234,11 @@ export class PetHandler {
|
||||
};
|
||||
|
||||
public useSkill(skillid: number, count: number, obj: SkillParam): SkillTarget[]{
|
||||
return this._owner.handleSkill(skillid, count, obj, this);
|
||||
return this._owner.handleSkill(skillid, count, this, this, obj);
|
||||
};
|
||||
|
||||
public useSkillEx(skillid: number, count: number, sender: PetHandler): SkillTarget[]{
|
||||
return this._owner.handleSkill(skillid, count, this, sender);
|
||||
};
|
||||
|
||||
public subAP(value: number, from: PetHandler):number {
|
||||
@ -352,7 +356,7 @@ export class PetHandler {
|
||||
if(this._isHero){
|
||||
if(this._owner.canBeKill(value) && this.canReborn()){
|
||||
// 直接复活
|
||||
this._owner.simpleCheckSkills([this._rebornskill], this);
|
||||
this._owner.simpleCheckSkills([this._rebornskill], true, this);
|
||||
return 0;
|
||||
}
|
||||
return this._owner.addHP(value, from);
|
||||
|
@ -214,9 +214,13 @@ export class PlayerHandler {
|
||||
};
|
||||
|
||||
public useSkill(skillid: number, count: number, obj: SkillParam): SkillTarget[]{
|
||||
return this.handleSkill(skillid, count, obj, this._self);
|
||||
return this.handleSkill(skillid, count, this._self, this._self, obj);
|
||||
};
|
||||
|
||||
public useSkillEx(skillid: number, count: number, sender: PetHandler): SkillTarget[]{
|
||||
return this.handleSkill(skillid, count, this._self, sender);
|
||||
};
|
||||
|
||||
public newSkill(skillid: number): Skill{
|
||||
let obj = SkillMan.getSkill(skillid);
|
||||
if(obj){
|
||||
@ -225,11 +229,7 @@ export class PlayerHandler {
|
||||
return obj;
|
||||
};
|
||||
|
||||
public addSkill(skillid: number, count: number = 1, sender?: PetHandler): Skill[]{
|
||||
return this._self? this._self.addSkill(skillid, count, sender): null;
|
||||
};
|
||||
|
||||
public handleSkill(skillid: number, count: number, param: SkillParam, pet: PetHandler):SkillTarget[]{
|
||||
public handleSkill(skillid: number, count: number, pet: PetHandler, sender?: PetHandler, param?: SkillParam):SkillTarget[]{
|
||||
let cfg = CfgMan.findSkillCfg(skillid);
|
||||
if(!cfg){
|
||||
return null;
|
||||
@ -243,23 +243,21 @@ export class PlayerHandler {
|
||||
}else {
|
||||
let bhalo = false;
|
||||
let bchged = false;
|
||||
for(let i = 0; i < count; i++){
|
||||
let sl = pet.addSkill(skillid);
|
||||
if(sl && sl.length > 0){
|
||||
bchged = true;
|
||||
sl.forEach((obj: Skill)=>{
|
||||
if(obj.isBornSkill()){
|
||||
lst.push(obj);
|
||||
}else if(obj.isDieSkill()){
|
||||
//nothing to do
|
||||
}else if(obj.isAPHaloSkill() || obj.isBuffHaloSkill()){
|
||||
//only handle halo, not handle skill
|
||||
bhalo = true;
|
||||
}else{
|
||||
lst.push(obj);
|
||||
}
|
||||
});
|
||||
}
|
||||
let sl = pet.addSkill(skillid, count, sender);
|
||||
if(sl && sl.length > 0){
|
||||
bchged = true;
|
||||
sl.forEach((obj: Skill)=>{
|
||||
if(obj.isBornSkill()){
|
||||
lst.push(obj);
|
||||
}else if(obj.isDieSkill()){
|
||||
//nothing to do
|
||||
}else if(obj.isAPHaloSkill() || obj.isBuffHaloSkill()){
|
||||
//only handle halo, not handle skill
|
||||
bhalo = true;
|
||||
}else{
|
||||
lst.push(obj);
|
||||
}
|
||||
});
|
||||
}
|
||||
if(bhalo){
|
||||
this.onHaloAdd(pet, true);
|
||||
@ -268,7 +266,7 @@ export class PlayerHandler {
|
||||
pet.dataChanged(pet);
|
||||
}
|
||||
}
|
||||
return this.simpleCheckSkills(lst, pet, param);
|
||||
return this.simpleCheckSkills(lst, false, pet, param);
|
||||
};
|
||||
|
||||
public summonPet(petid: number, count: number = 1, exparam: SkillParam):number{
|
||||
@ -410,7 +408,7 @@ export class PlayerHandler {
|
||||
this.onEMChanged(apet._enmagic);//增加法强
|
||||
// 战吼
|
||||
if(!apet.isSilent()){
|
||||
this.simpleCheckSkills(apet._bornSkills, apet, param);
|
||||
this.simpleCheckSkills(apet._bornSkills, true, apet, param);
|
||||
}
|
||||
|
||||
this.checkSkills(TriggerType.PET_BORN, null, null, apet);
|
||||
@ -419,7 +417,7 @@ export class PlayerHandler {
|
||||
public onPetDied(apet: PetHandler): boolean{
|
||||
// 遗愿
|
||||
if(!apet.isSilent()){
|
||||
this.simpleCheckSkills(apet._dieSkills);
|
||||
this.simpleCheckSkills(apet._dieSkills, true);
|
||||
}
|
||||
|
||||
if(apet.isAlive()){
|
||||
@ -750,7 +748,10 @@ export class PlayerHandler {
|
||||
this._owner.onSkillResult(reslst);
|
||||
};
|
||||
|
||||
simpleCheckSkills(skills: Skill[], apet?: PetHandler, param?: SkillParam): SkillTarget[]{
|
||||
simpleCheckSkills(skills: Skill[], runimm: boolean, apet?: PetHandler, param?: SkillParam): SkillTarget[]{
|
||||
if(!skills || skills.length <= 0){
|
||||
return null;
|
||||
}
|
||||
let sp = param? param: new SkillParam(0, 0, 0, this, apet, this, apet);
|
||||
if(sp && sp.cardid == 0 && apet){
|
||||
if(!sp.edd_cnt){
|
||||
@ -762,7 +763,7 @@ export class PlayerHandler {
|
||||
}
|
||||
let reslst: SkillTarget[] = [];
|
||||
skills.forEach((item: Skill)=>{
|
||||
item.checkTrigger(TriggerType.NO_COND, null, sp, (skill: Skill, ap: SkillParam, res: SkillTarget[])=>{
|
||||
item.checkTrigger(runimm? TriggerType.NO_COND: TriggerType.NORMAL, null, sp, (skill: Skill, ap: SkillParam, res: SkillTarget[])=>{
|
||||
if(res){
|
||||
reslst.push(...res);
|
||||
}else{
|
||||
|
@ -468,6 +468,7 @@ export class Skill {
|
||||
let n = efftype == SkillEffectType.POWER_ENHANCE? tgt.dst.addBaseAP(effvalue, tgt.srcPet())
|
||||
: tgt.dst.addExAP(effvalue, tgt.srcPet());
|
||||
tgt.success(efftype, n);
|
||||
tgt.success(SkillEffectType.CHG_AP, n);
|
||||
}else{
|
||||
tgt.fail(efftype, -1);
|
||||
}
|
||||
@ -478,12 +479,16 @@ export class Skill {
|
||||
if(tgt.dsttype != GameUnitType.NONE){
|
||||
let oldhp = tgt.dst.getHP();
|
||||
let n = tgt.dst.beHurt(effv, tgt.srcPet());
|
||||
tgt.success(efftype, n);
|
||||
if(n != 0){
|
||||
tgt.success(SkillEffectType.HURT_POWER, n);
|
||||
tgt.success(SkillEffectType.CHG_AP, n);
|
||||
}
|
||||
let dthp = tgt.dst.getHP() - oldhp;
|
||||
if(dthp != 0){
|
||||
tgt.success(SkillEffectType.HURT_HP, dthp);
|
||||
tgt.success(SkillEffectType.CHG_HP, dthp);
|
||||
}
|
||||
if(n == 0 && dthp == 0){
|
||||
tgt.success(SkillEffectType.CHG_AP, 0);
|
||||
}
|
||||
let hv = n + dthp;
|
||||
let pet = tgt.srcPet();
|
||||
@ -491,7 +496,7 @@ export class Skill {
|
||||
//吸血
|
||||
let sv = pet.HPS(hv);
|
||||
if(sv != 0){
|
||||
tgt.success(SkillEffectType.HURT_POWER, sv, true);
|
||||
tgt.success(SkillEffectType.CHG_AP, sv, true);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
@ -509,6 +514,7 @@ export class Skill {
|
||||
let effv = this.EMV(effvalue);
|
||||
let n = tgt.dst.addHP(effv, tgt.srcPet());
|
||||
tgt.success(efftype, n);
|
||||
tgt.success(SkillEffectType.CHG_HP, n);
|
||||
}else{
|
||||
tgt.fail(efftype, -1);
|
||||
}
|
||||
@ -525,7 +531,7 @@ export class Skill {
|
||||
}
|
||||
};
|
||||
|
||||
summon(efftype: SkillEffectType, exparam: SkillParam, tgt: SkillTarget){
|
||||
summon(efftype: SkillEffectType, exparam: SkillParam, tgt: SkillTarget){
|
||||
switch(efftype){
|
||||
case SkillEffectType.SUMMON_NPC:
|
||||
{
|
||||
@ -543,6 +549,10 @@ export class Skill {
|
||||
case SkillEffectType.SUMMON_SKILL:
|
||||
{
|
||||
let obj = tgt.srcpet? tgt.srcpet: tgt.srcplayer;
|
||||
if(!obj){
|
||||
tgt.fail(efftype, -1);
|
||||
return;
|
||||
}
|
||||
|
||||
let n1 = this.getQuoteValue(this._data.quoteskill_times, this._data.quoteskill_timesmax, exparam.edd_cnt);
|
||||
let r1 = obj.useSkill(this._data.quoteskillid, n1, exparam);
|
||||
@ -568,19 +578,35 @@ export class Skill {
|
||||
}
|
||||
}
|
||||
|
||||
let ncount = this.getFinalValue(EnhanceCustomType.GET_TIMES, this._data.getskill_times, this._data.getskill_timesmax,
|
||||
exparam.edd_cnt, true);
|
||||
let obj = tgt.getTarget(this._data.skill_ownersid);
|
||||
let n1 = obj? obj.addSkill(this._data.getskillid, ncount, sender): 0;
|
||||
n1 && tgt.success(efftype, this._data.getskillid);
|
||||
let bres1 = false, bres2 = false;
|
||||
|
||||
ncount = this.getFinalValue(EnhanceCustomType.GET_TIMES, this._data.getskill2_times, this._data.getskill2_timesmax,
|
||||
exparam.edd_cnt, true);
|
||||
obj = tgt.getTarget(this._data.skill2_ownersid);
|
||||
let n2 = obj? obj.addSkill(this._data.getskill2id, ncount, sender): 0;
|
||||
n2 && tgt.success(efftype, this._data.getskill2id);
|
||||
if(this._data.getskillid){
|
||||
let obj = tgt.getTarget(this._data.skill_ownersid);
|
||||
if(!obj){
|
||||
tgt.fail(efftype, this._data.getskillid);
|
||||
}else{
|
||||
let ncount = this.getFinalValue(EnhanceCustomType.GET_TIMES, this._data.getskill_times, this._data.getskill_timesmax,
|
||||
exparam.edd_cnt, true);
|
||||
let res = obj.useSkillEx(this._data.getskillid, ncount, sender);
|
||||
res? tgt.success(efftype, this._data.getskillid): tgt.fail(efftype, this._data.getskillid);
|
||||
}
|
||||
bres1 = true;
|
||||
}
|
||||
|
||||
if(!n1 && !n2){
|
||||
if(this._data.getskill2id){
|
||||
let obj = tgt.getTarget(this._data.skill2_ownersid);
|
||||
if(!obj){
|
||||
tgt.fail(efftype, this._data.getskill2id);
|
||||
}else{
|
||||
let ncount = this.getFinalValue(EnhanceCustomType.GET_TIMES, this._data.getskill2_times, this._data.getskill2_timesmax,
|
||||
exparam.edd_cnt, true);
|
||||
let res = obj.useSkillEx(this._data.getskill2id, ncount, sender);
|
||||
res? tgt.success(efftype, this._data.getskill2id): tgt.fail(efftype, this._data.getskill2id);
|
||||
}
|
||||
bres2 = true;
|
||||
}
|
||||
|
||||
if(!bres1 && !bres2){
|
||||
tgt.fail(efftype, -1);
|
||||
}
|
||||
}
|
||||
@ -694,7 +720,10 @@ export class Skill {
|
||||
// let n = obj.canAttack()? obj.attack(this, dst, param, v, isAtkBack): 1;
|
||||
let n = obj.attack(this, dst, param, v, isAtkBack);
|
||||
if(n <= 0){
|
||||
tgt.success(SkillEffectType.HURT_POWER, n);
|
||||
tgt.success(efftype, n);
|
||||
if(n != 0){
|
||||
tgt.success(SkillEffectType.CHG_AP, n);
|
||||
}
|
||||
// if(this._data.quoteskillid){
|
||||
// let dp = this._data.skill_users? param.oppClone(): param;
|
||||
// let pet = tgt.srcpet;
|
||||
@ -705,7 +734,10 @@ export class Skill {
|
||||
// }
|
||||
let dthp = tgt.dst.getHP() - oldhp;
|
||||
if(dthp != 0){
|
||||
tgt.success(SkillEffectType.HURT_HP, dthp);
|
||||
tgt.success(SkillEffectType.CHG_HP, dthp);
|
||||
}
|
||||
if(n == 0 && dthp == 0){
|
||||
tgt.success(SkillEffectType.CHG_AP, 0);
|
||||
}
|
||||
let hv = n + dthp;
|
||||
let pet = tgt.srcPet();
|
||||
@ -713,7 +745,7 @@ export class Skill {
|
||||
//吸血
|
||||
let sv = pet.HPS(hv);
|
||||
if(sv != 0){
|
||||
tgt.success(SkillEffectType.HURT_POWER, sv, true);
|
||||
tgt.success(SkillEffectType.CHG_AP, sv, true);
|
||||
}
|
||||
}
|
||||
tgt.success(efftype, hv);
|
||||
|
@ -61,7 +61,7 @@ export const enum CondDecideType {
|
||||
* 6.获得新的卡牌后
|
||||
* 7.丢弃一张卡牌后:自己回合出一张牌,不算此列
|
||||
* 8.自己回合开始
|
||||
* 10.不处理
|
||||
* 10.正常检查
|
||||
* 11.受到伤害后
|
||||
* 12.发动冲锋技能(ID40122)前
|
||||
* 13.被冲锋后
|
||||
@ -93,6 +93,8 @@ export const enum TriggerType
|
||||
|
||||
ROUND_START_MYSELF = 8,
|
||||
|
||||
NORMAL = 9,
|
||||
|
||||
BE_HURT = 11,
|
||||
|
||||
BEFORE_ATTACK = 12,
|
||||
@ -190,7 +192,7 @@ export const enum SkillRangeUnitType{
|
||||
* 3.抽别人牌
|
||||
* 4.将几张点数卡变为一张效果强化卡
|
||||
* 5.强化战力(HP性质的战力)
|
||||
* 6.强化战力(护盾性质的战力)
|
||||
* 6.强化战力(护盾性质的战力)// 暂无用
|
||||
* 7.扣除战力(伤害)
|
||||
* 8.召唤随从(需引用ID)
|
||||
* 9.触发技能(需引用ID) // 已废弃
|
||||
@ -239,6 +241,9 @@ export const enum SkillEffectType
|
||||
CARD_DROP = 29,
|
||||
BUFF_SHIELD = 30,
|
||||
HP_STEAL_ENHANCE = 31,
|
||||
|
||||
CHG_AP = 10001,
|
||||
CHG_HP = 10002,
|
||||
};
|
||||
|
||||
// 技能效果参数类型
|
||||
|
@ -204,6 +204,7 @@ export class SkillTarget{
|
||||
return this.bresok? this.lasttime: 0;
|
||||
};
|
||||
|
||||
// 暂无用
|
||||
public exportData(): SkillInfoMsg{
|
||||
let msg = new SkillInfoMsg();
|
||||
msg.data = new SkillInfoData();
|
||||
@ -236,10 +237,12 @@ export class SkillTarget{
|
||||
obj.pos = st.srcpet? st.srcpet._idx: 0;
|
||||
obj.datas = [];
|
||||
lst.forEach((item: SkillTarget) => {
|
||||
item.res && item.res.forEach((skres: SkillResult) => {
|
||||
let ed = item.exportResData(skres);
|
||||
ed && obj.datas.push(ed);
|
||||
});
|
||||
let eds = item.exportEffDatas();
|
||||
eds && obj.datas.push(...eds);
|
||||
// item.res && item.res.forEach((skres: SkillResult) => {
|
||||
// let ed = item.exportResData(skres);
|
||||
// ed && obj.datas.push(ed);
|
||||
// });
|
||||
});
|
||||
return msg;
|
||||
};
|
||||
@ -271,6 +274,67 @@ export class SkillTarget{
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
public exportEffData(reslst: SkillResult[], bopp: boolean = false): SKillEffectData{
|
||||
if(!reslst || reslst.length <= 0){
|
||||
return null;
|
||||
}
|
||||
let ed = new SKillEffectData();
|
||||
let item = this;
|
||||
if(bopp){
|
||||
ed.pos = item.srcPet()._idx;
|
||||
ed.player = item.srcPlayer().getId();
|
||||
}else{
|
||||
if(item.dsttype == GameUnitType.PLAYER){
|
||||
ed.pos = 0;
|
||||
ed.player = (item.dst as PlayerHandler).getId();
|
||||
}else {
|
||||
ed.pos = (item.dst as PetHandler)._idx;
|
||||
ed.player = (item.dst as PetHandler)._owner.getId();
|
||||
}
|
||||
}
|
||||
|
||||
reslst.forEach((item: SkillResult) => {
|
||||
let obj = {
|
||||
effect_id: item.effect_type,
|
||||
val: item.bsuccess? item.effect_res: item.err,
|
||||
result: item.bsuccess? 0: -1,
|
||||
};
|
||||
if(!ed.data){
|
||||
ed.data = [obj];
|
||||
}else{
|
||||
ed.data.push(obj);
|
||||
}
|
||||
});
|
||||
|
||||
return ed;
|
||||
};
|
||||
|
||||
public exportEffDatas(): SKillEffectData[]{
|
||||
if(!this.res){
|
||||
return null;
|
||||
}
|
||||
let r1: SkillResult[] = [];
|
||||
let r2: SkillResult[] = [];
|
||||
|
||||
this.res.forEach((item: SkillResult) => {
|
||||
if(item.beffsrc){
|
||||
r2.push(item);
|
||||
}else{
|
||||
r1.push(item);
|
||||
}
|
||||
});
|
||||
|
||||
let reslst = [];
|
||||
|
||||
let res = this.exportEffData(r1);
|
||||
res && reslst.push(res);
|
||||
|
||||
res = this.exportEffData(r2, true);
|
||||
res && reslst.push(res);
|
||||
|
||||
return reslst;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -7,6 +7,9 @@ export class Trigger {
|
||||
};
|
||||
|
||||
isOK(tg_type: any){
|
||||
if(this._type == TriggerType.NO_COND){
|
||||
return true;
|
||||
}
|
||||
return this._type == tg_type;
|
||||
};
|
||||
}
|
||||
|
@ -86,14 +86,16 @@ let TriggerManager = {
|
||||
tgts = sender.getTargets(param);
|
||||
}
|
||||
|
||||
if(!tgts || !tgts.length){
|
||||
if(!tgts || tgts.length <= 0){
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (effectid) {
|
||||
case SkillEffectType.NONE:
|
||||
return tgts;
|
||||
|
||||
tgts.forEach((item: SkillTarget) =>{
|
||||
item.success(effectid, 0);
|
||||
});
|
||||
break;
|
||||
case SkillEffectType.CARD_ADD:
|
||||
case SkillEffectType.CARD_ADD_LIMIT:
|
||||
case SkillEffectType.CARD_STEAL:
|
||||
|
Loading…
x
Reference in New Issue
Block a user