void OnAvatarClick(AvatarReplyAdapterClickEventArgs args) => AvatarClick?.Invoke(this, args);
void onClick(Instance bot, AvatarClick click) { if (click.TargetSession == 0) { return; } var source = app.GetUser(click.SourceSession); var target = app.GetUser(click.TargetSession); // Needed as there is no intermediate click event if (source == null) { return; } // Null session suggests bot if (target == null) { hitBot(source); return; } if (!source.GetSettingBool(keyMode, false) || !target.GetSettingBool(keyMode, false)) { return; } var diffX = Math.Abs(source.X - target.X); var diffY = Math.Abs(source.Y - target.Y); var diffZ = Math.Abs(source.Z - target.Z); if (diffX > .5 || diffY > .4 || diffZ > .5) { return; } if (cannotHit(source) || cannotHit(target)) { createHoverText(target.Position, 0, false); return; } var targetHealth = target.GetSettingInt(keyHealth, 100); var critical = VPServices.Rand.Next(100) <= 10; var damage = VPServices.Rand.Next(5, 25) * (critical ? 3 : 1); createHoverText(target.Position, damage, critical); createBloodSplat(target.Position); if (targetHealth - damage <= 0) { app.AlertAll(msgKill, target.Name, source.Name); target.SetSetting(keyDeath, DateTime.Now); target.SetSetting(keyHealth, 100); source.SetSetting(keyHealth, source.GetSettingInt(keyHealth) + 5); bot.Avatars.Teleport(click.TargetSession, AvatarPosition.GroundZero); } else { target.SetSetting(keyHealth, targetHealth - damage); } }