Beispiel #1
0
 public virtual void HandleSkillEnd(NfSkill skill)
 {
     if (funHandleSkillEnd != null)
     {
         funHandleSkillEnd.call(table, skill);
     }
 }
Beispiel #2
0
    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;
    }
Beispiel #3
0
 public override void HandleSkillEnd(NfSkill skill)
 {
     if (--num <= 0)
     {
         OnEnd();
     }
 }
Beispiel #4
0
    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);
    }
Beispiel #5
0
 public override void HandleSkillEnd(NfSkill skill)
 {
     if (--num <= 0)
     {
         OnEnd();
     }
 }
Beispiel #6
0
    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);
    }
Beispiel #7
0
 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);
 }
Beispiel #8
0
 public override void HandleSkillEnd(NfSkill skill)
 {
     owner.visible = false;
     foreach (var b in owner.Buffs)
     {
         if (b.enabled && b is NfFenShenEndBuff == false)
         {
             b.End();
         }
     }
 }
Beispiel #9
0
    public override void HandleSkillEnd(NfSkill skill)
    {
        if (isActive)
        {
            var e = GetTarget();
            if (e != null)
            {
                DoTskill(owner, e);
                isActive = false;
                return;
            }
        }

        owner.MoveBack();
        EndBuff();
    }
Beispiel #10
0
    public override void HandleSkillEnd(NfSkill skill)
    {
        if (isActive)
        {
            var e = GetTarget();
            if (e != null)
            {
                DoTskill(owner, e);
                isActive = false;
                return;
            }
        }

        owner.MoveBack();
        EndBuff();
    }
Beispiel #11
0
    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();
        }
    }
Beispiel #12
0
    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();
        }
    }
Beispiel #13
0
    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);
    }
Beispiel #14
0
    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;
    }
Beispiel #15
0
    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
        }
    }
Beispiel #16
0
 public virtual void HandleSkillEnd(NfSkill skill)
 {
     if (funHandleSkillEnd != null)
     {
         funHandleSkillEnd.call(table, skill);
     }
 }
Beispiel #17
0
 public override void HandleSkillEnd(NfSkill skill)
 {
     owner.visible = false;
     foreach (var b in owner.Buffs)
     {
         if (b.enabled && b is NfFenShenEndBuff == false)
             b.End();
     }
 }