public virtual void HandleSkillEnd(NfSkill skill) { if (funHandleSkillEnd != null) { funHandleSkillEnd.call(table, skill); } }
public override void HandleHitEnd(Character target) { if (fenShen.visible) { return; } if (target.IsDead) { return; } float per = Percent; if (Fight.Rand(0, 101) > per) { return; } Vector3 dest = target.position; Vector3 dir = new Vector3(0f, 0f, 1f); fenShen.target = target; fenShen.position = dest + dir * NfSkill.CalcRadius(owner, target); fenShen.LookAt(target); fenShen.SrcPos = fenShen.position; fenShen.SrcRotation = fenShen.rotation; fenShen.visible = true; fenShen.EnableAlpha(true); DoTskill(fenShen, target); return; }
public override void HandleSkillEnd(NfSkill skill) { if (--num <= 0) { OnEnd(); } }
public override bool HandleBeHitPre(Character attacker) { if (type != FanJiType.PreFanJi) { return(false); } if (owner.IsDizzy) { return(false); } if (owner.CurrSkill != null) { if (owner.CurrSkill is NfThrowBack == false) { return(false); } if (owner.CurrSkill is NfJiTui == false) { return(false); } } if (Fight.Rand(0, 101) <= Percent && NfSkill.CanFanJi(attacker)) { NfSkill skill = DoTskill(owner, attacker); if (skill != null) { skill.isFanJi = true; } } return(false); }
public override bool HandleBeHitPre(Character attacker) { if (owner.IsDizzy || owner.IsBianYang || NfSkill.CanFanJi(attacker) == false) { return(false); } if (owner.CurrSkill != null) { if (owner.CurrSkill is NfThrowBack == false) { return(false); } if (owner.CurrSkill is NfJiTui == false) { return(false); } } if (num <= 0) { float per = Percent; if (Fight.Rand(1, 101) > per) { return(false); } } --num; DoTskill(owner, attacker); return(true); }
protected override void MoveTo(Vector3 pos, float animSpeed, NfSkill.MoveCallback callback) { float dist = Vector3.Distance(pos, attacker.position); float totalTime = dist / moveSpeed; float animLen = attacker.GetAnimLength(runAnim); animSpeed = animLen / totalTime; Move(attacker, pos, moveSpeed, runAnim, animSpeed, callback); }
public override void HandleSkillEnd(NfSkill skill) { owner.visible = false; foreach (var b in owner.Buffs) { if (b.enabled && b is NfFenShenEndBuff == false) { b.End(); } } }
public override void HandleSkillEnd(NfSkill skill) { if (isActive) { var e = GetTarget(); if (e != null) { DoTskill(owner, e); isActive = false; return; } } owner.MoveBack(); EndBuff(); }
public override void HandleSkillEnd(NfSkill skill) { if (skill.id == Tskill) { isAdd = false; float percent = Percent / 100f; List<Character> enemys = Fight.Inst.FindAllAttackTarget(owner); foreach (var e in enemys) { if (CanAtk(percent, e)) { DoTskill(owner, e); return; } } owner.MoveBack(); } }
public override void HandleSkillEnd(NfSkill skill) { if (skill.id == Tskill) { isAdd = false; float percent = Percent / 100f; List <Character> enemys = Fight.Inst.FindAllAttackTarget(owner); foreach (var e in enemys) { if (CanAtk(percent, e)) { DoTskill(owner, e); return; } } owner.MoveBack(); } }
public override int HandleBeHit(Character attacker, int damage, int addAnger) { if (type != FanJiType.FanJi) { return(damage); } if (owner.IsDizzy || owner.IsBianYang) { return(damage); } if (Fight.Rand(0, 101) <= Percent && CanFanJi(attacker)) { NfSkill skill = DoTskill(owner, attacker); if (skill != null) { skill.isFanJi = true; } } return(damage); }
public static int AddTdam(Character attacker, Character target, int damage, bool check, float tdamBaseValue, float tdamPerValue, NfSkill.TDamageType tdamType, string HitEffect) { float tdam = tdamBaseValue; float dam = 0f; float per = tdamPerValue; switch (tdamType) { case TDamageType.LowHPHighDam: { dam += damage * (tdam - (float)target.HP / (float)target.MaxHp); } break; case TDamageType.Real: { dam += damage + tdam; } break; case TDamageType.HuanXue: { bool can = true; if (target.isMonster) { if (target.monsterType != Monster.MonsterType.Normal) { can = false; } } if (can) { dam = damage + (int)(tdam * target.HP); if (!check) { float val = tdam * attacker.HP; attacker.BeRevHit(target, (int)val, HitEffect, null, HpLabelContainer.HitType.HuanXue); } } else { dam = damage; } } break; case TDamageType.PercentHPTrigger: { dam += damage; float cper = (float)target.HP / (float)target.MaxHp; if (cper <= per) dam += tdam; } break; case TDamageType.AddPercentHPDam: { bool can = true; if (target.isMonster) { if (target.monsterType != Monster.MonsterType.Normal) { can = false; } } if (!can) { dam += damage; } else { dam += damage + tdam * target.MaxHp; } } break; default: { dam = damage; }break; } return (int)dam; }
public void Start(NfSkill preskill) { Time.timeScale = GameMgr.timeScale; transform = attacker.transform; animation = attacker.mAnim; gameObject = attacker.gameObject; attacker.RestoreDir(); hit = false; enabled = true; isAddAnger = false; try { tiggerSkill = null; camAnim = null; preSkill = preskill; setHideMeshList(); OnSkillBegin(); } catch (KeyNotFoundException e) { End(); Debug.LogError("skill(" + id + ") " + e.Message); Debug.LogError(e.StackTrace); #if UNITY_EDITOR MessageBox.Show("skill error", "skill(" + id + ") " + e.Message); #endif } }
public override void HandleSkillEnd(NfSkill skill) { owner.visible = false; foreach (var b in owner.Buffs) { if (b.enabled && b is NfFenShenEndBuff == false) b.End(); } }