コード例 #1
0
ファイル: Hmd.cs プロジェクト: RogerFK/HMD
        protected override void OnValidShoot(GameObject target, ref float damage)
        {
            WeaponManager weps = PlayerObject.GetComponent <WeaponManager>();
            Transform     cam  = PlayerObject.GetComponent <Scp049PlayerScript>().plyCam.transform;
            Ray           ray  = new Ray(cam.position, cam.forward);

            Physics.Raycast(cam.position + cam.forward, cam.forward, out RaycastHit playerHit, PlayerMask);
            HitboxIdentity hitbox = playerHit.collider?.GetComponent <HitboxIdentity>();

            damage = 0;

            if (overCharged)
            {
                damage = HmdPlugin.TagDamage;

                if (hitbox != null)
                {
                    Timing.In(x =>
                    {
                        OverchargeDetonate(weps, target.GetComponent <PlyMovementSync>().position);
                        if (weps.GetShootPermission(target.GetComponent <CharacterClassManager>()))
                        {
                            float glitchTime = x;
                            for (int i = 0; i < HmdPlugin.TagGlitches; i++)
                            {
                                Timing.In(y => TargetShake(target), glitchTime += GlitchLength);
                            }
                        }
                    }, HmdPlugin.TagTime);
                }
                else if (Physics.Raycast(ray, out RaycastHit hit, 500f, WorldMask))
                {
                    Timing.In(x =>
                    {
                        OverchargeDetonate(weps, hit.point);
                    }, DetonateFlash(hit.point));
                }
            }
            else
            {
                PlayerStats stats = target.GetComponent <PlayerStats>();
                float       damageTmp;
                if (target.GetComponent <CharacterClassManager>().curClass == (int)Role.SCP_106)
                {
                    damageTmp = HmdPlugin.Scp106Damage;
                }
                else
                {
                    damageTmp = HitHandler(hitbox);
                }

                stats.HurtPlayer(
                    new PlayerStats.HitInfo(
                        damageTmp,
                        PlayerObject.GetComponent <NicknameSync>().myNick + " (" + PlayerObject.GetComponent <CharacterClassManager>().SteamId + ")",
                        DamageTypes.E11StandardRifle,
                        PlayerObject.GetComponent <QueryProcessor>().PlayerId
                        ),
                    target);
            }


            int shots = Barrel == 1 ? HmdPlugin.SuppressedKrakatoa : HmdPlugin.Krakatoa;

            for (int i = 0; i < shots; i++)
            {
                weps.CallRpcConfirmShot(false, weps.curWeapon);
            }
        }