コード例 #1
0
ファイル: ReplyAdapter.cs プロジェクト: projectsoca/onefete
 void OnAvatarClick(AvatarReplyAdapterClickEventArgs args) => AvatarClick?.Invoke(this, args);
コード例 #2
0
        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);
            }
        }