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); } } }
public void DoAttack() { if (skill != null) { skill.Cast(CharacerSearch.SearchTarget(this, TargetType.Enemy, TargetFieltType.HpPercentLowest)[0]); } else { } animation.Play("attack"); }
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); } } } } }