处理嘲讽技能

This commit is contained in:
y.x 2020-12-08 16:08:38 +08:00
parent 8140d7ff27
commit bb6c51a5b9
6 changed files with 81 additions and 22 deletions

View File

@ -92,9 +92,31 @@ export class BattleHandler {
case GameUnitType.HERO:
case GameUnitType.PET:
if(skill.isSingleTarget()){
if(param.dstpet && this.petIsValid(param.dstpet, players, skill._data.targetid)){
let pet = param.dstpet;
let bok = pet && this.petIsValid(pet, players, skill._data.targetid);
if(skill.isHurtPowerSkill()){
let tauntpets: PetHandler[] = [];
if(bok){
let bfind = false;
players.forEach((item:PlayerHandler) =>{
let obj = item.findTauntPet();
if(obj) {
tauntpets.push(obj);
if(obj == pet){
bfind = true;
}
}
});
bok = bfind || tauntpets.length <= 0;
}
if(!bok && tauntpets.length > 0){
pet = tauntpets[0];
bok = true;
}
}
if(bok){
lst.push(new SkillTarget(skill, param.srcplayer, param.srcpet,
param.dstpet, param.dstpet._isHero? GameUnitType.HERO: GameUnitType.PET));
pet, pet._isHero? GameUnitType.HERO: GameUnitType.PET));
}
}else{
if(skill.isAllTarget()){
@ -315,7 +337,7 @@ export class BattleHandler {
return this._room.bRemovePet(apet.exportRemoveData());
};
public onPlayerAddCardNotify(aplayer: PlayerHandler, count: number, maxcount: number){
public onPlayerAddCardNotify(aplayer: PlayerHandler, count: number, maxcount: number, from?: PlayerHandler){
return this._room.addCard(aplayer.getId(), count, maxcount);
};

View File

@ -199,6 +199,15 @@ export class PetHandler {
public clear(){
this._halos.length = 0;
this._owner.onHaloChanged(this);
this._waitskills.length = 0;
};
public taunt(){
this._istaunt = true;
};
public taunt_cancel(){
this._istaunt = false;
};
public hasHalo(): boolean{

View File

@ -282,6 +282,12 @@ export class PlayerHandler {
return this._pets.includes(apet);
};
public findTauntPet(): PetHandler{
return this._pets.find((item: PetHandler) =>{
return item._istaunt;
})
};
public hasTransEffCardSkill(): boolean{
if(!this._self){
return false;

View File

@ -99,6 +99,10 @@ export class Skill {
return this._data.effect_typeid == SkillEffectType.CARD_CHG_EN;
};
isHurtPowerSkill(){
return this._data.effect_typeid == SkillEffectType.HURT_POWER;
};
isSingleTarget(){
switch(this._data.rangeid){
case SkillRangeUnitType.SELF:
@ -264,14 +268,13 @@ export class Skill {
}
};
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);
}else{
tgt.fail(efftype, -1);
}
handleHP(effvalue: number, tgt: SkillTarget){
let efftype = SkillEffectType.HURT_HP;
if(tgt.dsttype == GameUnitType.PLAYER){
let n = tgt.dst.addHp(effvalue);
tgt.success(efftype, n);
}else{
tgt.fail(efftype, -1);
}
};
@ -295,18 +298,27 @@ export class Skill {
}
};
taunt(tgt:SkillTarget){
let efftype = SkillEffectType.TAUNT;
if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){
tgt.dst.taunt();
tgt.success(efftype, 1);
}else{
tgt.fail(efftype, -1);
}
};
addBuff(efftype: SkillEffectType, effvalue: number, tgt: SkillTarget){
};
reduceHurt(efftype: SkillEffectType, effvalue: number, tgt: SkillTarget){
if(efftype == SkillEffectType.HURT_REDUCE){
if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){
let n = tgt.dst.addReduceHurt(effvalue);
tgt.success(efftype, n);
}else{
tgt.fail(efftype, -1);
}
reduceHurt(effvalue: number, tgt: SkillTarget){
let efftype = SkillEffectType.HURT_REDUCE;
if(tgt.dsttype != GameUnitType.NONE && tgt.dsttype != GameUnitType.PLAYER){
let n = tgt.dst.addReduceHurt(effvalue);
tgt.success(efftype, n);
}else{
tgt.fail(efftype, -1);
}
};

View File

@ -102,6 +102,14 @@ export class SkillTarget{
}else{
this.res.forEach((item: SkillResult) => {
let ed = new SKillEffectData();
if(this.dsttype == GameUnitType.PLAYER){
ed.pos = 0;
ed.player = this.dst.getId();
}else {
ed.pos = this.dst._idx;
ed.player = this.dst._owner.getId();
}
ed.pos = this.dsttype != GameUnitType.PLAYER? this.dst:
ed.effect_id = item.effect_type;
ed.val = item.bsuccess? item.effect_res: item.err;
ed.result = item.bsuccess? 0: -1;

View File

@ -107,10 +107,12 @@ let TriggerManager = {
});
break;
case SkillEffectType.TAUNT:
//todo: 不处理
tgts.forEach((item)=>{
sender.taunt(item);
});
case SkillEffectType.HURT_HP:
tgts.forEach((item)=>{
sender.handleHP(effectid, effv + env, item);
sender.handleHP(effv + env, item);
});
break;
case SkillEffectType.POWER_ADD_BUFF:
@ -120,7 +122,7 @@ let TriggerManager = {
break;
case SkillEffectType.HURT_REDUCE:
tgts.forEach((item)=>{
sender.reduceHurt(effectid, effv + env, item);
sender.reduceHurt(effv + env, item);
});
break;
default: