// 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); } }
/// <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); }
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; }
/// <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; }
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); }
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); }
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); }
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; }
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; } }
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"); }
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); } }
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); } }