public void SendAnimation(ushort Animation, Sprite To, Sprite From, byte speed = 100, bool repeat = false) { var format = new ServerFormat29((uint)From.Serial, (uint)To.Serial, Animation, 0, speed); if (!repeat) { Aisling.Show(Scope.NearbyAislings, format); return; } if (To is Aisling) { new TaskFactory().StartNew(() => { while (true) { if (!Aisling.InsideView(To)) { break; } (To as Aisling).Show(Scope.NearbyAislings, format); Thread.Sleep(1000); } }); } }
public override void OnUse(Sprite sprite, Action <int> cb) { var enemy = sprite.GetInfront(8); var count = 1; if (enemy != null) { foreach (var i in enemy) { if (i == null) { continue; } if (sprite.Serial == i.Serial) { continue; } if (i is Money) { continue; } var animation = new ServerFormat29 { CasterSerial = (uint)sprite.Serial, TargetSerial = (uint)i.Serial, CasterEffect = 10011, TargetEffect = 10011, Speed = 100 }; //=$E$1*10 *$F$1 *G1 / 10 var dmg = sprite.Dex * 3 * sprite.Position.DistanceFrom(i.Position); dmg *= count; i.ApplyDamage(sprite, dmg, false, 28); sprite.Show(Scope.NearbyAislings, animation); cb?.Invoke(count++); } } }
public void SendAnimation(ushort Animation, Sprite To, Sprite From, byte speed = 100) { var format = new ServerFormat29((uint)From.Serial, (uint)To.Serial, Animation, 0, speed); Aisling.Show(Scope.NearbyAislings, format); }
public virtual void Format29Handler(ServerFormat29 format) { }