private static bool Prefix(Scp049_2PlayerScript __instance, GameObject windowObj)
 {
     if (__instance._hub.gameObject.GetComponent <SCP457Controller>() != null)
     {
         return(false);
     }
     return(true);
 }
Exemplo n.º 2
0
        private static bool HurtPlayer(Scp049_2PlayerScript __instance, GameObject plyObj)
        {
            try
            {
                if (!__instance._iawRateLimit.CanExecute(true) || plyObj == null)
                {
                    return(false);
                }

                var scp    = __instance.GetPlayer();
                var player = plyObj?.GetPlayer();

                if (player == null)
                {
                    return(false);
                }

                if (!__instance.iAm049_2 || Vector3.Distance(scp.Position, player.Position) > __instance.distance * 1.5f)
                {
                    return(false);
                }

                if (!SynapseExtensions.GetHarmPermission(scp, player))
                {
                    return(false);
                }

                ev.Get.Scp.InvokeScpAttack(scp, player, Api.Enum.ScpAttackType.Scp0492_Scratch, out var allow);

                if (!allow)
                {
                    return(false);
                }

                player.PlayerStats.DealDamage(new ScpDamageHandler(scp.Hub, __instance.damage, DeathTranslations.Zombie));
                Hitmarker.SendHitmarker(scp.Connection, 1f);
                scp.ClassManager.RpcPlaceBlood(player.Position, 0, player.RoleType == RoleType.Spectator ? 1.3f : 0.5f);
                return(false);
            }
            catch (Exception e)
            {
                Synapse.Api.Logger.Get.Error($"Synapse-Event: ScpAttackEvent(Scp049-2) failed!!\n{e}");
                return(true);
            }
        }
Exemplo n.º 3
0
        private static bool Prefix(Scp049_2PlayerScript __instance, GameObject plyObj)
        {
            try
            {
                if (!__instance._iawRateLimit.CanExecute(true) || plyObj == null)
                {
                    return(false);
                }

                var scp    = __instance.GetPlayer();
                var player = plyObj.GetPlayer();

                if (player == null)
                {
                    return(false);
                }

                if (scp.RoleType != RoleType.Scp0492 || Vector3.Distance(scp.Position, player.Position) > __instance.distance * 1.5f)
                {
                    return(false);
                }

                if (!scp.WeaponManager.GetShootPermission(player.ClassManager))
                {
                    return(false);
                }

                ev.Get.Scp.InvokeScpAttack(scp, player, Api.Enum.ScpAttackType.Scp0492_Scratch, out var allow);

                if (!allow)
                {
                    return(false);
                }

                player.Hurt((int)__instance.damage, DamageTypes.Scp0492, scp);
                __instance.TargetHitMarker(scp.Connection);
                scp.ClassManager.RpcPlaceBlood(player.Position, 0, player.RoleType == RoleType.Spectator ? 1.3f : 0.5f);
                return(false);
            }
            catch (Exception e)
            {
                Synapse.Api.Logger.Get.Error($"Synapse-Event: ScpAttackEvent(Scp049-2) failed!!\n{e}\nStackTrace:\n{e.StackTrace}");
                return(true);
            }
        }
Exemplo n.º 4
0
    private void Attack()
    {
        RaycastHit raycastHit;

        if (Physics.Raycast(this.plyCam.transform.position, this.plyCam.transform.forward, out raycastHit, this.distance))
        {
            Scp049_2PlayerScript scp049_2PlayerScript = raycastHit.transform.GetComponent <Scp049_2PlayerScript>();
            if (scp049_2PlayerScript == null)
            {
                scp049_2PlayerScript = raycastHit.transform.GetComponentInParent <Scp049_2PlayerScript>();
            }
            if (scp049_2PlayerScript != null && !scp049_2PlayerScript.sameClass)
            {
                Hitmarker.Hit(1f);
                this.CallCmdHurtPlayer(raycastHit.transform.gameObject, base.GetComponent <HlapiPlayer>().PlayerId);
            }
        }
    }
Exemplo n.º 5
0
 private static bool Prefix(Scp049_2PlayerScript __instance, GameObject plyObj)
 {
     if (__instance._hub.gameObject.GetComponent <SCP457Controller>() != null)
     {
         Transform  playerCameraReference = __instance._hub.PlayerCameraReference;
         Collider[] array = Physics.OverlapSphere(playerCameraReference.position + playerCameraReference.forward * 1.25f, MainClass.singleton.Config.attack_settings.radius_attack, LayerMask.GetMask(new string[]
         {
             "PlyCenter"
         }));
         HashSet <GameObject> hashSet = new HashSet <GameObject>();
         foreach (Collider collider in array)
         {
             global::ReferenceHub componentInParent3 = collider.GetComponentInParent <global::ReferenceHub>();
             if (!(componentInParent3 == null) && !(componentInParent3 == __instance._hub) && !componentInParent3.characterClassManager.IsAnyScp() && hashSet.Add(componentInParent3.gameObject) && !Physics.Linecast(__instance._hub.transform.position, componentInParent3.transform.position, LayerMask.GetMask(new string[]
             {
                 "Default"
             })))
             {
                 var burningComponent = componentInParent3.gameObject.GetComponent <BurningComponent>();
                 if (burningComponent != null)
                 {
                     if (!Physics.Linecast(__instance._hub.playerMovementSync.RealModelPosition, componentInParent3.gameObject.transform.position, __instance._hub.playerMovementSync.CollidableSurfaces))
                     {
                         var burn = burningComponent.burningtime;
                         burn += MainClass.singleton.Config.attack_settings.burning_time;
                         burningComponent.burningAppliedBy = __instance._hub;
                         if (burn > MainClass.singleton.Config.attack_settings.burning_time_max)
                         {
                             burn = MainClass.singleton.Config.attack_settings.burning_time_max;
                         }
                         burningComponent.burningtime = burn;
                         burningComponent.colatime    = MainClass.singleton.Config.attack_settings.cola_duration;
                         burningComponent.hub.ReferenceHub.playerEffectsController.EnableEffect <CustomPlayerEffects.Scp207>(MainClass.singleton.Config.attack_settings.cola_duration);
                         burningComponent.hub.ReferenceHub.playerEffectsController.GetEffect <CustomPlayerEffects.Scp207>().ServerChangeIntensity(1);
                         burningComponent.hub.ReferenceHub.playerStats.HurtPlayer(new PlayerStats.HitInfo(MainClass.singleton.Config.attack_settings.dmg_amount, "SCP457", DamageTypes.Asphyxiation, 0), burningComponent.hub.GameObject);
                     }
                 }
             }
         }
         return(false);
     }
     return(true);
 }
Exemplo n.º 6
0
        private static void SCPMode()
        {
            var ccm = PlayerManager.localPlayer.GetComponent <CharacterClassManager>();
            Scp173PlayerScript   peanut   = ccm.GetComponent <Scp173PlayerScript>();
            Scp049PlayerScript   doctor   = ccm.GetComponent <Scp049PlayerScript>();
            Scp049_2PlayerScript zombie   = ccm.GetComponent <Scp049_2PlayerScript>();
            Scp939PlayerScript   dogo     = ccm.GetComponent <Scp939PlayerScript>();
            Scp096PlayerScript   shyguy   = ccm.GetComponent <Scp096PlayerScript>();
            Scp106PlayerScript   larry    = ccm.GetComponent <Scp106PlayerScript>();
            Scp079PlayerScript   computer = ccm.GetComponent <Scp079PlayerScript>();


            if (peanut.iAm173)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    if (Vector3.Distance(PlayerManager.localPlayer.transform.position, player.transform.position) < 4f + peanut.boost_teleportDistance.Evaluate(PlayerManager.localPlayer.GetComponent <PlayerStats>().GetHealthPercent()))
                    {
                        peanut.GetType().GetMethod("HurtPlayer", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(peanut, new object[]
                        {
                            player,
                            "123"
                        });
                    }
                }
            }
            if (doctor.iAm049)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    if ((player != PlayerManager.localPlayer) && (Vector3.Distance(PlayerManager.localPlayer.transform.position, player.transform.position) < 3.5f))
                    {
                        doctor.GetType().GetMethod("InfectPlayer", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(doctor, new object[]
                        {
                            player,
                            "123"
                        });
                    }
                }
            }
            if (zombie.iAm049_2)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    if ((player != PlayerManager.localPlayer) && (Vector3.Distance(PlayerManager.localPlayer.transform.position, player.transform.position) < 4f))
                    {
                        zombie.CallCmdHurtPlayer(player, "123");
                    }
                }
            }
            if (dogo.iAm939)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    // ccm.klasy[player.GetComponent<CharacterClassManager>().curClass].team != Team.SCP
                    if ((player != PlayerManager.localPlayer) && (Vector3.Distance(Camera.main.transform.position, player.transform.position) < 1.3 * dogo.attackDistance))
                    {
                        dogo.CallCmdShoot(player);
                    }
                }
            }
            if (shyguy.iAm096)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    if ((Vector3.Distance(Camera.main.transform.position, player.transform.position) < 3.5f))
                    {
                        shyguy.GetType().GetMethod("CallCmdHurtPlayer", BindingFlags.Instance | BindingFlags.Public).Invoke(shyguy, new object[]
                        {
                            player
                        });
                    }
                }
            }
            if (larry.iAm106)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    if (Vector3.Distance(Camera.main.transform.position, player.transform.position) < 3.5f)
                    {
                        larry.CallCmdMovePlayer(player, ServerTime.time);
                    }
                }
            }
            if (computer.iAm079)
            {
            }
        }
Exemplo n.º 7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Scp0492Role"/> class.
 /// </summary>
 /// <param name="player">The encapsulated player.</param>
 internal Scp0492Role(Player player)
 {
     Owner  = player;
     script = player.ReferenceHub.characterClassManager.Scp0492;
 }