예제 #1
0
        override internal List <Unit> onEventTime(double currentTime)
        {
            movingSpell.moveIgnoreEdges(currentTime);
            if (currentTime <= duration)
            {
                Hero   closest  = null;
                double minDist2 = 0.0;

                foreach (Hero potentialTarget in potentialTargets)
                {
                    double dist2 = potentialTarget.Distance2(movingSpell);
                    if (dist2 <= Math.Pow(radius + Const.EPSILON, 2) && (closest == null || dist2 < minDist2))
                    {
                        minDist2 = dist2;
                        closest  = potentialTarget;
                    }
                }

                if (closest != null)
                {
                    Const.game.events.Add(new StunEvent(closest, 0, 2));
                    doDamage(closest, (int)(closest.maxMana * dmgMultiplier), attacker);
                    return(createListOfUnit());
                }
            }

            return(EMPTYLIST);
        }
예제 #2
0
        override internal List <Unit> onEventTime(double currentTime)
        {
            movingSpell.moveIgnoreEdges(currentTime);
            double dist2       = movingSpell.Distance2(unit);
            double compareDist = Math.Pow(radius, 2);

            if (currentTime <= duration && dist2 <= compareDist)
            {
                doDamage(unit, (int)(damage + damageByTime * currentTime), attacker);
            }
            movingSpell.moveIgnoreEdges(currentTime * -1);

            return(EMPTYLIST);
        }