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); }