Example #1
0
        protected override void PerformingTick()
        {
            int actualDamage = TargetUnit.Hit(Performer, HPPerTic, AttackType.Ethereal, this);
            int actualHeal   = Performer.Heal(TargetUnit, actualDamage);

            if (actualHeal != actualDamage || TargetUnit.CanBeDestroyed)
            {
                TryEndPerform(false);
            }
        }
        protected override void PerformingTick()
        {
            base.PerformingTick();
            if (TargetUnit.State != UnitState.Alive)
            {
                TryEndPerform(true);
                return;
            }

            if (demonSmokeCharge == null)
            {
                Game.Instance.Scene.Add(demonSmokeCharge = new Effects.DemonSmoke1Small());
            }
            else
            {
                TargetUnit.Hit(Performer, 50, AttackType.Ethereal, this);
                if (!second)
                {
                    Performer.Heal(Performer, 100);
                }
                second = false;
                demonSmokeCharge.Stop();
                demonSmokeTransport = demonSmokeCharge;
                demonSmokeCharge    = new Client.Game.Map.Effects.DemonSmoke1Small();
                Game.Instance.Scene.Add(demonSmokeCharge);
                transport = new Common.Interpolator3 {
                    Value = TargetUnit.Translation
                };
                transport.AddKey(transportKey = new Common.InterpolatorKey <Vector3>
                {
                    Time     = TickPeriod,
                    TimeType = Common.InterpolatorKeyTimeType.Relative,
                    Value    = Performer.Translation
                });
                if (TargetUnit.State != UnitState.Alive)
                {
                    new DemonLinkExplosion
                    {
                        Performer      = Performer,
                        Mediator       = TargetUnit,
                        TargetEntity   = TargetUnit,
                        TargetPosition = TargetUnit.Position
                    }.TryStartPerform();
                }
            }
        }
 protected override void PerformingTick()
 {
     base.PerformingTick();
     TargetUnit.Hit(Performer, TicDamage, AttackType.Ethereal, this);
 }