处理嘲讽技能
This commit is contained in:
parent
8140d7ff27
commit
bb6c51a5b9
@ -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);
|
||||
};
|
||||
|
||||
|
@ -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{
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user