Exemplo n.º 1
0
        // ReSharper disable once InconsistentNaming
        public static bool Prefix(DissonanceUserSetup __instance, bool value)
        {
            try
            {
                var intercom  = __instance.IntercomAsHuman;
                var radio     = __instance.RadioAsHuman;
                var scp939    = __instance.MimicAs939;
                var scpchat   = __instance.SCPChat;
                var spectator = __instance.SpectatorChat;

                scp939 = SynapseConfigs.SpeakingScps.Contains((int)__instance.GetPlayer().Role);

                Events.InvokeSpeakEvent(__instance, ref intercom, ref radio, ref scp939, ref scpchat, ref spectator);

                __instance.SCPChat         = scpchat;
                __instance.SpectatorChat   = spectator;
                __instance.IntercomAsHuman = intercom;

                if (scp939)
                {
                    __instance.MimicAs939 = value;
                }
                if (radio)
                {
                    __instance.RadioAsHuman = value;
                }

                return(true);
            }
            catch (Exception e)
            {
                Log.Error($"SpeakEvent Error: {e}");
                return(true);
            }
        }
Exemplo n.º 2
0
        /// <inheritdoc />
        protected override void RoleAdded(Player player)
        {
            player.UnitName = "Scp035";

            Timing.CallDelayed(1.5f, () =>
            {
                player.ChangeAppearance(VisibleRole);
                player.ChangeWalkingSpeed(MovementMultiplier);
                player.ChangeRunningSpeed(MovementMultiplier);
                player.IsGodModeEnabled = false;
            });

            player.Scale = Scale;
            DissonanceUserSetup dissonance = player.GameObject.GetComponent <DissonanceUserSetup>();

            dissonance.EnableListening(TriggerType.Role, Assets._Scripts.Dissonance.RoleType.SCP);
            dissonance.EnableSpeaking(TriggerType.Role, Assets._Scripts.Dissonance.RoleType.SCP);
            dissonance.SCPChat = true;

            foreach (Item item in player.Items.ToList())
            {
                if (CustomItem.TryGet(item, out CustomItem customItem))
                {
                    customItem.Spawn(player.Position, item);
                    player.RemoveItem(item);
                }
            }

            player.DropItems();

            Timing.RunCoroutine(Appearance(player), $"{player.UserId}-appearance");
            Timing.RunCoroutine(Corrosion(player), $"{player.UserId}-corrosion");

            base.RoleAdded(player);
        }
Exemplo n.º 3
0
        internal static void InvokeSpeakEvent(DissonanceUserSetup dissonance, ref bool intercom, ref bool radio,
                                              ref bool scp939, ref bool scpChat, ref bool spectator)
        {
            if (SpeakEvent == null)
            {
                return;
            }

            var ev = new PlayerSpeakEvent
            {
                IntercomTalk        = intercom,
                RadioTalk           = radio,
                Scp939Talk          = scp939,
                ScpChat             = scpChat,
                SpectatorChat       = spectator,
                DissonanceUserSetup = dissonance,
                Player = dissonance.gameObject.GetPlayer()
            };

            SpeakEvent.Invoke(ev);

            intercom  = ev.IntercomTalk;
            radio     = ev.RadioTalk;
            scp939    = ev.Scp939Talk;
            scpChat   = ev.ScpChat;
            spectator = ev.SpectatorChat;
        }
Exemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="VoiceChattingEventArgs"/> class.
 /// </summary>
 /// <param name="player"><inheritdoc cref="Player"/></param>
 /// <param name="radio"><inheritdoc cref="Radio"/></param>
 /// <param name="dissonanceUserSetup"><inheritdoc cref="DissonanceUserSetup"/></param>
 /// <param name="isVoiceChatting"><inheritdoc cref="IsVoiceChatting"/></param>
 /// <param name="isAllowed"><inheritdoc cref="IsAllowed"/></param>
 public VoiceChattingEventArgs(Player player, Radio radio, DissonanceUserSetup dissonanceUserSetup, bool isVoiceChatting, bool isAllowed = true)
 {
     Player = player;
     Radio  = radio;
     DissonanceUserSetup = dissonanceUserSetup;
     IsVoiceChatting     = isVoiceChatting;
     IsAllowed           = isAllowed;
 }
Exemplo n.º 5
0
        public static bool Prefix(DissonanceUserSetup __instance, bool value)
        {
            CharacterClassManager ccm = __instance.gameObject.GetComponent <CharacterClassManager>();

            if (ccm.CurClass == RoleType.Scp0492)
            {
                __instance.MimicAs939 = value;
            }

            return(true);
        }
 public static bool Prefix(DissonanceUserSetup __instance, bool value)
 {
     if (__instance.gameObject.TryGetComponent(out CharacterClassManager ccm))
     {
         if (ccm.IsAnyScp())
         {
             __instance.MimicAs939 = value;
         }
     }
     return(true);
 }
Exemplo n.º 7
0
        public static bool Prefix(DissonanceUserSetup __instance, bool value)
        {
            CharacterClassManager ccm = __instance.gameObject.GetComponent <CharacterClassManager>();

            if (ccm.CurClass.Is939() || ccm.CurClass == RoleType.Scp049 && SCPSpeech.s049 || ccm.CurClass == RoleType.Scp0492 && SCPSpeech.s0492 || ccm.CurClass == RoleType.Scp079 && SCPSpeech.Enabled ||
                ccm.CurClass == RoleType.Scp096 && SCPSpeech.s096 || ccm.CurClass == RoleType.Scp106 && SCPSpeech.s106 || ccm.CurClass == RoleType.Scp173 && SCPSpeech.s173)
            {
                __instance.MimicAs939 = value;
            }

            return(true);
        }
Exemplo n.º 8
0
        public static bool Prefix(DissonanceUserSetup __instance, bool value)
        {
            if (!Plugin.Singleton.Config.Scp049Speech)
            {
                return(true);
            }

            CharacterClassManager ccm = __instance.gameObject.GetComponent <CharacterClassManager>();

            if (ccm.CurClass == RoleType.Scp049 || ccm.CurClass.Is939())
            {
                __instance.MimicAs939 = value;
            }

            return(true);
        }
Exemplo n.º 9
0
        internal void InvokePlayerSpeakEvent(DissonanceUserSetup userSetup, ref bool intercom, ref bool radio,
                                             ref bool scp939, ref bool scpChat, ref bool specChat, ref bool allow)
        {
            var ev = new PlayerSpeakEventArgs
            {
                Allow      = allow, Player = userSetup.GetPlayer(), IntercomTalk = intercom, RadioTalk = radio,
                Scp939Talk = scp939, ScpChat = scpChat, SpectatorChat = specChat, DissonanceUserSetup = userSetup
            };

            PlayerSpeakEvent?.Invoke(ev);

            intercom = ev.IntercomTalk;
            radio    = ev.RadioTalk;
            scp939   = ev.Scp939Talk;
            scpChat  = ev.ScpChat;
            specChat = ev.SpectatorChat;
            allow    = ev.Allow;
        }
Exemplo n.º 10
0
 public static void Prefix(DissonanceUserSetup __instance, bool value)
 {
     Exiled.API.Features.Player player = Exiled.API.Features.Player.Get(__instance.gameObject);
     if (string.IsNullOrEmpty(player?.UserId) || player.Team != Team.SCP)
     {
         return;
     }
     else if (ScpUtils.StaticInstance.Config.AllowedScps.Contains(player.Role))
     {
         __instance.MimicAs939 = value; return;
     }
     else if (string.IsNullOrEmpty(ServerStatic.GetPermissionsHandler()._groups.FirstOrDefault(g => g.Value == player.ReferenceHub.serverRoles.Group).Key) && !string.IsNullOrEmpty(player.ReferenceHub.serverRoles.MyText))
     {
         return;
     }
     else if (player.CheckPermission($"scputils_speak.{player.Role.ToString().ToLower()}"))
     {
         __instance.MimicAs939 = value;
     }
 }
Exemplo n.º 11
0
        public static void MakePlayer035(Player player)
        {
            Scp035Player = player;
            Scp035Player.AddItem(ItemType.KeycardZoneManager);
            Scp035Player.ShowHint("You are now SCP-035", 5);
            Scp035Player.SetInfo(PlayerInfoArea.Role, "SCP-035");
            Scp035Player.DisplayNick = "[SCP-035] " + Scp035Player.Nick;
            foreach (NetworkBehaviour behaviour in Scp035Player.Hub.networkIdentity.NetworkBehaviours)
            {
                if (behaviour.GetType() == typeof(DissonanceUserSetup))
                {
                    DUS = (DissonanceUserSetup)behaviour;
                    //  Scp035.Singleton.AddLog("Found DissonanceUserSetup of player");
                }
            }
            DissonanceUserSetup dus = DUS;

            dus.SCPChat      = true;
            dus.MimicAs939   = true;
            dus.SpeakerAs079 = true;
            Hurt035Coroutine = Timing.RunCoroutine(Damage035());
            Scp035.Singleton.AddLog("Player " + Scp035Player.Nick + " is now Scp035");
        }
Exemplo n.º 12
0
        private static bool Prefix(DissonanceUserSetup __instance, bool value)
        {
            try
            {
                var intercom = __instance.IntercomAsHuman;
                var radio    = __instance.RadioAsHuman;
                var scp939   = __instance.MimicAs939;
                var scpChat  = __instance.SCPChat;
                var specChat = __instance.SpectatorChat;
                var allow    = true;

                //TODO: Insert Synapse-Speaking SCP's

                SynapseController.Server.Events.Player.InvokePlayerSpeakEvent(__instance, ref intercom, ref radio, ref scp939, ref scpChat, ref specChat, ref allow);

                __instance.SCPChat         = scpChat;
                __instance.SpectatorChat   = specChat;
                __instance.IntercomAsHuman = intercom;

                if (scp939)
                {
                    __instance.MimicAs939 = value;
                }
                if (radio)
                {
                    __instance.RadioAsHuman = value;
                }

                return(allow);
            }
            catch (Exception e)
            {
                SynapseController.Server.Logger.Error($"Synapse-Event: PlayerSpeak failed!!\n{e}");
                return(true);
            }
        }
Exemplo n.º 13
0
        private static bool Prefix(DissonanceUserSetup __instance, bool value)
        {
            try
            {
                var intercom = __instance.IntercomAsHuman;
                var radio    = __instance.RadioAsHuman;
                var scp939   = Server.Get.Configs.SynapseConfiguration.SpeakingScps.Contains((int)__instance.GetPlayer().RoleType);
                var scpChat  = __instance.SCPChat;
                var specChat = __instance.SpectatorChat;
                var allow    = true;



                SynapseController.Server.Events.Player.InvokePlayerSpeakEvent(__instance, ref intercom, ref radio, ref scp939, ref scpChat, ref specChat, ref allow);

                __instance.SCPChat         = scpChat;
                __instance.SpectatorChat   = specChat;
                __instance.IntercomAsHuman = intercom;

                if (scp939)
                {
                    __instance.MimicAs939 = value;
                }
                else
                {
                    __instance.MimicAs939 = false;
                }

                if (radio)
                {
                    __instance.RadioAsHuman = value;
                }

                try
                {
                    if (__instance.RadioAsHuman)
                    {
                        var player = __instance.GetPlayer();
                        var index  = __instance.GetComponent <Radio>().myRadio;

                        if (index != -1 && index < player.VanillaInventory.items.Count)
                        {
                            var item       = player.VanillaInventory.items[index].GetSynapseItem();
                            var allowradio = true;
                            SynapseController.Server.Events.Player.InvokePlayerItemUseEvent(player, item, Api.Events.SynapseEventArguments.ItemInteractState.Finalizing, ref allowradio);
                            __instance.RadioAsHuman = allowradio;
                        }
                    }
                }
                catch (Exception e)
                {
                    SynapseController.Server.Logger.Error($"Synapse-Event: PlayerUseItemEvent(Radio) failed!!\n{e}\nStackTrace:\n{e.StackTrace}");
                }

                return(allow);
            }
            catch (Exception e)
            {
                SynapseController.Server.Logger.Error($"Synapse-Event: PlayerSpeak failed!!\n{e}\nStackTrace:\n{e.StackTrace}");
                return(true);
            }
        }