private static async void BenchmarkHooks_OnCommand(CommandEventArgs eventArgs) { if (eventArgs.Arguments.Length != 1) { return; } var iterations = eventArgs.GetUInt32(0); var elapsed = TimeSpan.FromTicks(0); elapsed += RunBench( "EnchantmentDictionary.Set", iterations, null, (i, enchanted) => enchanted.Enchantments.Set((DexBonus e) => e.Value = i) ); await Timer.Pause(1_000); elapsed += RunBench( "EnchantmentDictionary.Get", iterations, null, (_, enchanted) => enchanted.Enchantments.Get((DexBonus e) => e.Value) ); await Timer.Pause(1_000); elapsed += RunBench( "EnchantmentHooks.Fire", iterations, subject => Enumerable.Range(0, 10).ToList().ForEach(i => subject.Enchantments.Set((HealingBonus e) => e.Value = i)), (i, enchanted) => { var val = 10.0 * i; (enchanted as Mobile).FireHook(h => h.OnHeal(enchanted, enchanted, null, ref val)); }); Console.WriteLine($"Finished all benchmarks in ({elapsed.TotalSeconds:F6} seconds)."); }
private static void Props_OnCommand(CommandEventArgs e) { if (e.Length == 1) { IEntity ent = World.FindEntity(e.GetUInt32(0)); if (ent == null) { e.Mobile.SendMessage("No object with that serial was found."); } else if (!BaseCommand.IsAccessible(e.Mobile, ent)) { e.Mobile.SendLocalizedMessage(500447); // That is not accessible. } else { e.Mobile.SendGump(new PropertiesGump(e.Mobile, ent)); } } else { e.Mobile.Target = new PropsTarget(); } }