skill logic, playerid

This commit is contained in:
yuexin 2020-12-04 18:06:22 +08:00
parent 4d4169c32d
commit b670832ca6
6 changed files with 108 additions and 32 deletions

View File

@ -274,6 +274,10 @@ export class BattleHandler {
return this._room.bAddPet(apet.exportData());
};
public onDelPetNotify(apet: PetHandler){
};
public onPlayerAddCard(aplayer: PlayerHandler, count: number, maxcount: number){
return this._room.addCard(aplayer.getId(), count, maxcount);
};

View File

@ -24,7 +24,7 @@ export class PetHandler {
_exap: number = 0; // 额外
_exredhurt: number;
_exredhurt: number = 0; // 减伤
_isHero: boolean = false;
@ -131,6 +131,19 @@ export class PetHandler {
if(this._baseap < 0){
this.die();
}
return value;
};
public addBaseAP(value: number){
this._baseap += value;
if(this._baseap < 0){
this.die();
}
return value;
};
public addExAP(value: number){
return this.addAP(value);
};
public totalAP(){
@ -138,7 +151,13 @@ export class PetHandler {
};
public beHurt(value: number){
this.addAP(-value);
let res = value * this._exredhurt;
return this.addAP(-res);
};
public addReduceHurt(value: number){
this._exredhurt += value;
return value;
};
public born(param: any){

View File

@ -50,7 +50,7 @@ export class PlayerHandler {
};
public getId(): string{
return this._player.heroId + '';
return this._player.id + '';
};
public newPet(): PetHandler {
@ -154,6 +154,18 @@ export class PlayerHandler {
return this._owner.onPlayerStealCard(this, dstplayer, count);
};
public addHP(value: number){
this._player.hp += value;
if(value < 0){
this.die();
}
return value;
};
public getHP(){
return this._player.hp;
};
public checkHalo(apet:PetHandler){
this._pets.forEach((obj: PetHandler)=>{
if(obj != apet){
@ -167,6 +179,10 @@ export class PlayerHandler {
this._friend = aplayer;
};
public die(){
//todo:
};
public onPetBorned(apet: PetHandler, param: SkillParam){
//todo: build pet init json -> client
this._owner.onAddPetNotify(apet);

View File

@ -235,8 +235,8 @@ export class Skill {
});
};
handleCard(efftype: SkillEffectType, effvalue: number, enhanceV: number, tgt: SkillTarget){
let res = effvalue + enhanceV;
handleCard(efftype: SkillEffectType, effvalue: number, tgt: SkillTarget){
let res = effvalue;
switch(efftype){
case SkillEffectType.CARD_ADD:
if(tgt.dsttype == GameUnitType.PLAYER){
@ -268,20 +268,50 @@ export class Skill {
}
};
handlePower(efftype: SkillEffectType, effvalue: number, enhanceV: number, tgt: SkillTarget){
handlePower(efftype: SkillEffectType, effvalue: number, tgt: SkillTarget){
switch(efftype){
case SkillEffectType.POWER_ENHANCE:
case SkillEffectType.POWEREX_ENHANCE:
if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){
let n = efftype == SkillEffectType.POWER_ENHANCE? tgt.dst.addBaseAP(effvalue): tgt.dst.addExAP(effvalue);
tgt.success(efftype, n);
}
break;
case SkillEffectType.HURT_POWER:
if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){
let n = tgt.dst.beHurt(effvalue);
tgt.success(efftype, n);
}
break;
default:
break;
}
};
handleHP(efftype: SkillEffectType, effvalue: number, tgt: SkillTarget){
if(efftype == SkillEffectType.HURT_HP){
if(tgt.dsttype == GameUnitType.PLAYER){
let n = tgt.dst.addHp(effvalue);
tgt.success(efftype, n);
}
}
};
summon(efftype: SkillEffectType, effvalue: number, tgt: SkillTarget){
};
handleHP(efftype: SkillEffectType, effvalue: number, enhanceV: number, tgt: SkillTarget){
addBuff(efftype: SkillEffectType, effvalue: number, tgt: SkillTarget){
};
summon(efftype: SkillEffectType, effvalue: number, enhanceV: number, tgt: SkillTarget){
};
addBuff(efftype: SkillEffectType, effvalue: number, enhanceV: number, tgt: SkillTarget){
reduceHurt(efftype: SkillEffectType, effvalue: number, tgt: SkillTarget){
if(efftype == SkillEffectType.HURT_REDUCE){
if(tgt.dsttype == GameUnitType.PLAYER){
let n = tgt.dst.addReduceHurt(effvalue);
tgt.success(efftype, n);
}
}
};
setOwner(owner: PetHandler) {

View File

@ -94,7 +94,7 @@ export const enum SkillRangeUnitType{
* 9.ID
* 10.
* 11.HP
* 12.
* 12.[]
* 13.
*/
export const enum SkillEffectType
@ -105,14 +105,14 @@ export const enum SkillEffectType
CARD_STEAL = 3,
CARD_CHG_EN = 4,
POWER_ENHANCE = 5,
HALO_ENHANCE = 5,
HURT_POWER = 6,
SUMMON_NPC = 7,
SUMMON_SKILL = 8,
TAUNT = 9,
HURT_HP = 10,
POWER_ADD_BUFF = 11,
HURT_RED = 12,
POWEREX_ENHANCE = 6,
HURT_POWER = 7,
SUMMON_NPC = 8,
SUMMON_SKILL = 9,
TAUNT = 10,
HURT_HP = 11,
POWER_ADD_BUFF = 12,
HURT_REDUCE = 13,
};
// 技能效果参数类型

View File

@ -90,34 +90,41 @@ let TriggerManager = {
case SkillEffectType.CARD_STEAL:
case SkillEffectType.CARD_CHG_EN:
tgts.forEach((item)=>{
sender.handleCard(effectid, effv, env, item);
sender.handleCard(effectid, effv + env, item);
});
break;
case SkillEffectType.POWER_ENHANCE:
case SkillEffectType.POWEREX_ENHANCE:
case SkillEffectType.HURT_POWER:
tgts.forEach((item)=>{
sender.handlePower(effectid, effv, env, item);
sender.handlePower(effectid, effv + env, item);
});
break;
case SkillEffectType.SUMMON_NPC:
case SkillEffectType.SUMMON_SKILL:
tgts.forEach((item)=>{
sender.summon(effectid, effv, env, item);
sender.summon(effectid, effv + env, item);
});
break;
case SkillEffectType.TAUNT:
//todo: 不处理
case SkillEffectType.HURT_HP:
tgts.forEach((item)=>{
sender.handleHP(effectid, effv, env, item);
sender.handleHP(effectid, effv + env, item);
});
break;
break;
case SkillEffectType.POWER_ADD_BUFF:
case SkillEffectType.HURT_RED:
tgts.forEach((item)=>{
sender.addBuff(effectid, effv, env, item);
sender.addBuff(effectid, effv + env, item);
});
break;
break;
case SkillEffectType.HURT_REDUCE:
tgts.forEach((item)=>{
sender.reduceHurt(effectid, effv + env, item);
});
break;
default:
break;
}
return tgts;
@ -132,14 +139,14 @@ let TriggerManager = {
case SkillEffectType.CARD_STEAL:
case SkillEffectType.CARD_CHG_EN:
case SkillEffectType.POWER_ENHANCE:
case SkillEffectType.HALO_ENHANCE:
case SkillEffectType.POWEREX_ENHANCE:
case SkillEffectType.HURT_POWER:
case SkillEffectType.SUMMON_NPC:
case SkillEffectType.SUMMON_SKILL:
case SkillEffectType.TAUNT:
case SkillEffectType.HURT_HP:
case SkillEffectType.POWER_ADD_BUFF:
case SkillEffectType.HURT_RED:
case SkillEffectType.HURT_REDUCE:
break;
}
},