/// <summary> /// /// </summary> /// <param name="damageValue"></param> /// <param name="damageInfos"></param> /// <returns></returns> public override FightActionResultEnum ApplyEffect(ref int damageValue, CastInfos damageInfos = null) { // if (damageInfos.IsReflect || damageInfos.IsReturnedDamages || damageInfos.IsPoison) { return(FightActionResultEnum.RESULT_NOTHING); } // mort if (Caster.IsFighterDead) { Target.BuffManager.RemoveBuff(this); return(FightActionResultEnum.RESULT_NOTHING); } var targetTeleport = new CastInfos(EffectEnum.Teleport, CastInfos.SpellId, CastInfos.Caster.Cell.Id, 0, 0, 0, 0, 0, Target, null); var casterTeleport = new CastInfos(EffectEnum.Teleport, CastInfos.SpellId, Target.Cell.Id, 0, 0, 0, 0, 0, CastInfos.Caster, null); Caster.SetCell(null); Target.SetCell(null); if (TeleportEffect.ApplyTeleport(targetTeleport) == FightActionResultEnum.RESULT_END) { return(FightActionResultEnum.RESULT_END); } if (TeleportEffect.ApplyTeleport(casterTeleport) == FightActionResultEnum.RESULT_END) { return(FightActionResultEnum.RESULT_END); } // cancel damages damageValue = 0; var damageJet = damageInfos.RandomJet; damageInfos.IsReturnedDamages = true; return(DamageEffect.ApplyDamages(damageInfos, CastInfos.Caster, ref damageJet)); }
/// <summary> /// /// </summary> /// <param name="castInfos"></param> /// <returns></returns> public override FightActionResultEnum ApplyEffect(CastInfos castInfos) { if (castInfos.Target == null) { return(FightActionResultEnum.RESULT_NOTHING); } if (castInfos.SpellId == 445) { if (castInfos.Target.Team == castInfos.Caster.Team) { return(FightActionResultEnum.RESULT_NOTHING); } } else if (castInfos.SpellId == 438) { if (castInfos.Target.Team != castInfos.Caster.Team) { return(FightActionResultEnum.RESULT_NOTHING); } } var targetTeleport = new CastInfos(EffectEnum.Teleport, castInfos.SpellId, castInfos.Caster.Cell.Id, 0, 0, 0, 0, 0, castInfos.Target, null); var casterTeleport = new CastInfos(EffectEnum.Teleport, castInfos.SpellId, castInfos.Target.Cell.Id, 0, 0, 0, 0, 0, castInfos.Caster, null); castInfos.Caster.SetCell(null); castInfos.Target.SetCell(null); if (TeleportEffect.ApplyTeleport(targetTeleport) == FightActionResultEnum.RESULT_END) { return(FightActionResultEnum.RESULT_END); } if (TeleportEffect.ApplyTeleport(casterTeleport) == FightActionResultEnum.RESULT_END) { return(FightActionResultEnum.RESULT_END); } return(FightActionResultEnum.RESULT_NOTHING); }