public static Task HandleTaskError(BaseAspect aspect, AspectMethodInfo methodInfo, Task task) { task.ContinueWith((t, state) => { HandleTaskError(methodInfo, t, state); }, new Tuple <BaseAspect, AspectMethodInfo>(aspect, methodInfo), TaskContinuationOptions.OnlyOnFaulted); return(task); }
public static Task HandleTaskExit(BaseAspect aspect, AspectMethodInfo methodInfo, Task task) { task.ContinueWith((t, state) => { var tuple = state as Tuple <BaseAspect, AspectMethodInfo>; var aspectInfo = tuple.Item1; var info = tuple.Item2; info.Returns = t; aspectInfo.OnExit(info); }, new Tuple <BaseAspect, AspectMethodInfo>(aspect, methodInfo), TaskContinuationOptions.None); return(task); }
protected override void OnInvoke(BaseAspect aspect) { BaseExplodeEffect fx = CreateEffect(aspect); if (fx == null) { return; } fx.EffectHandler = e => { if (e.ProcessIndex != 0) { return; } foreach (var t in AcquireTargets<Mobile>(aspect, e.Source.Location, 0)) { OnTargeted(aspect, t); } }; fx.Send(); }
protected override void OnDamage(BaseAspect aspect, Mobile target, ref int damage) { base.OnDamage(aspect, target, ref damage); Effects.SendBoltEffect(target, true, aspect.Hue); }
protected override void OnUnlocked(BaseAspect aspect) { base.OnUnlocked(aspect); aspect.Yell("I SEE THE FUTURE. THERE IS NO FUTURE!"); }
protected override void OnLocked(BaseAspect aspect) { base.OnLocked(aspect); aspect.Yell("TIME... IS RELATIVE!"); }
protected override BaseExplodeEffect CreateEffect(BaseAspect aspect) { return new EnergyExplodeEffect(aspect.Location, aspect.Map, Math.Max(5, aspect.RangePerception / 2)); }
protected abstract BaseExplodeEffect CreateEffect(BaseAspect aspect);
protected virtual void OnTargeted(BaseAspect aspect, Mobile target) { Damage(aspect, target); }
protected abstract BaseWaveEffect CreateEffect(BaseAspect aspect);