示例#1
0
 public void OnWaveStart(Event e)
 {
     if (config.eventType == PassiveSkillEventType.WaveStart)
     {
         var target = CharacerSearch.SearchTarget(caster, skill.config.targetType, skill.config.targetFieltType);
         foreach (Characer characer in target)
         {
             skill.Cast(characer);
         }
     }
 }
示例#2
0
 public void DoAttack()
 {
     if (skill != null)
     {
         skill.Cast(CharacerSearch.SearchTarget(this, TargetType.Enemy, TargetFieltType.HpPercentLowest)[0]);
     }
     else
     {
     }
     animation.Play("attack");
 }
示例#3
0
    public void Update()
    {
        if (!isCasted)
        {
            return;
        }

        attackTimer -= Time.deltaTime;
        if (attackTimer <= 0)
        {
            attackTimer = config.attackInterval;
            List <Characer> targets = new List <Characer>();
            if (config.isAoe)
            {
                targets = CharacerSearch.SearchTarget(caster, config.targetType, TargetFieltType.None);
            }
            else
            {
                targets.Add(target);
            }

            foreach (var t in targets)
            {
                DoAttack(t);
            }

            attackTimes++;
        }

        int maxTimes = config.attackTimes;

        if (attackTimes >= maxTimes)
        {
            isCasted = false;

            if (config.onePunch)
            {
                if (overflowDamage > 1)
                {
                    var targets = CharacerSearch.SearchTarget(caster, TargetType.Enemy, TargetFieltType.None);
                    foreach (var t in targets)
                    {
                        var damageInfo = DamageUtil.CalculateDamage(caster, t, overflowDamage);
                        t.BeAttacked(damageInfo);
                    }
                }
            }
        }
    }