Exemplo n.º 1
0
        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();
                }
            }
        }
Exemplo n.º 2
0
        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();
                }
            }
        }