From 30082e25e45dcfa4011c7e6ba9347d0ceb1691f0 Mon Sep 17 00:00:00 2001 From: Lumi Date: Wed, 28 May 2025 22:26:52 +0100 Subject: [PATCH 1/3] feat: jailbird setting start --- .../.idea/codeStyles/codeStyleConfig.xml | 5 ++++ .../ExclusiveColorSetting.cs | 2 +- SillySCP/API/Settings/JailbirdSetting.cs | 22 ++++++++++++++++ .../{Features => Settings}/StruggleSetting.cs | 2 +- SillySCP/Handlers/SSSSHandler.cs | 25 ++++++++++++++++--- SillySCP/Patches/RueISendHint.cs | 2 +- SillySCP/Patches/SkeletonDamageStrangle.cs | 1 + SillySCP/Patches/SkeletonStrangle.cs | 9 ++----- SillySCP/Patches/SnakePatch.cs | 1 - SillySCP/SillySCP.csproj | 7 +++++- 10 files changed, 61 insertions(+), 15 deletions(-) create mode 100644 .idea/.idea.SillySCP/.idea/codeStyles/codeStyleConfig.xml rename SillySCP/API/{Features => Settings}/ExclusiveColorSetting.cs (97%) create mode 100644 SillySCP/API/Settings/JailbirdSetting.cs rename SillySCP/API/{Features => Settings}/StruggleSetting.cs (99%) diff --git a/.idea/.idea.SillySCP/.idea/codeStyles/codeStyleConfig.xml b/.idea/.idea.SillySCP/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/.idea.SillySCP/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/SillySCP/API/Features/ExclusiveColorSetting.cs b/SillySCP/API/Settings/ExclusiveColorSetting.cs similarity index 97% rename from SillySCP/API/Features/ExclusiveColorSetting.cs rename to SillySCP/API/Settings/ExclusiveColorSetting.cs index e1bd6bf..71b7735 100644 --- a/SillySCP/API/Features/ExclusiveColorSetting.cs +++ b/SillySCP/API/Settings/ExclusiveColorSetting.cs @@ -3,7 +3,7 @@ using SecretAPI.Features.UserSettings; using SillySCP.API.Modules; -namespace SillySCP.API.Features +namespace SillySCP.API.Settings { public class ExclusiveColorSetting : CustomDropdownSetting { diff --git a/SillySCP/API/Settings/JailbirdSetting.cs b/SillySCP/API/Settings/JailbirdSetting.cs new file mode 100644 index 0000000..7a31d81 --- /dev/null +++ b/SillySCP/API/Settings/JailbirdSetting.cs @@ -0,0 +1,22 @@ +using LabApi.Features.Wrappers; +using SecretAPI.Features.UserSettings; +using SillySCP.API.Modules; + +namespace SillySCP.API.Settings +{ + public class JailbirdSetting : CustomTwoButtonSetting + { + public const int SettingId = 837; + + public JailbirdSetting() + : base(SettingId, "Meow on Jailbird swing", "Yes", "No", hint: "When you or someone else swings the jailbird, should you hear the meow?") + {} + + protected override CustomSetting CreateDuplicate() => new JailbirdSetting(); + + public override CustomHeader Header { get; } = SSSSModule.Header; + + protected override void HandleSettingUpdate(Player player) + {} + } +} \ No newline at end of file diff --git a/SillySCP/API/Features/StruggleSetting.cs b/SillySCP/API/Settings/StruggleSetting.cs similarity index 99% rename from SillySCP/API/Features/StruggleSetting.cs rename to SillySCP/API/Settings/StruggleSetting.cs index 9e9ed24..be3ad3c 100644 --- a/SillySCP/API/Features/StruggleSetting.cs +++ b/SillySCP/API/Settings/StruggleSetting.cs @@ -17,7 +17,7 @@ using Player = LabApi.Features.Wrappers.Player; using Scp3114Role = Exiled.API.Features.Roles.Scp3114Role; -namespace SillySCP.API.Features +namespace SillySCP.API.Settings { public class StruggleSetting : CustomKeybindSetting { diff --git a/SillySCP/Handlers/SSSSHandler.cs b/SillySCP/Handlers/SSSSHandler.cs index fcd9551..cc0d60f 100644 --- a/SillySCP/Handlers/SSSSHandler.cs +++ b/SillySCP/Handlers/SSSSHandler.cs @@ -1,8 +1,10 @@ -using Exiled.Events.EventArgs.Player; +using Exiled.Events.EventArgs.Item; +using Exiled.Events.EventArgs.Player; using SecretAPI.Features.UserSettings; -using SillySCP.API.Features; using SillySCP.API.Interfaces; using SillySCP.API.Modules; +using SillySCP.API.Settings; +using UnityEngine; using UserSettings.ServerSpecific; namespace SillySCP.Handlers @@ -14,12 +16,29 @@ public void Init() Exiled.Events.Handlers.Player.Verified += OnVerified; ServerSpecificSettingsSync.ServerOnSettingValueReceived += SettingRecieved; - CustomSetting.Register(new ExclusiveColorSetting(), new StruggleSetting()); + CustomSetting.Register(new ExclusiveColorSetting(), new StruggleSetting(), new JailbirdSetting()); + + // jailbird handler + + Exiled.Events.Handlers.Item.Swinging += OnJailbirdSwing; } public void Unregister() { Exiled.Events.Handlers.Player.Verified -= OnVerified; + + Exiled.Events.Handlers.Item.Swinging -= OnJailbirdSwing; + } + + private void OnJailbirdSwing(SwingingEventArgs ev) + { + AudioPlayer audioPlayer = AudioPlayer.CreateOrGet($"Jailbird {ev.Player.Nickname}", onIntialCreation: (p) => + { + p.transform.parent = ev.Player.Transform; + Speaker speaker = p.AddSpeaker("Jailbird Speaker", isSpatial: true, minDistance: 5f, maxDistance: 15f); + speaker.transform.parent = ev.Player.Transform; + speaker.transform.localPosition = Vector3.zero; + }); } private void OnVerified(VerifiedEventArgs ev) diff --git a/SillySCP/Patches/RueISendHint.cs b/SillySCP/Patches/RueISendHint.cs index 4a5a1d8..c6a51ee 100644 --- a/SillySCP/Patches/RueISendHint.cs +++ b/SillySCP/Patches/RueISendHint.cs @@ -1,7 +1,7 @@ using HarmonyLib; using Hints; using RueI; -using SillySCP.API.Features; +using SillySCP.API.Settings; namespace SillySCP.Patches { diff --git a/SillySCP/Patches/SkeletonDamageStrangle.cs b/SillySCP/Patches/SkeletonDamageStrangle.cs index a4c1003..befcea0 100644 --- a/SillySCP/Patches/SkeletonDamageStrangle.cs +++ b/SillySCP/Patches/SkeletonDamageStrangle.cs @@ -1,6 +1,7 @@ using HarmonyLib; using PlayerRoles.PlayableScps.Scp3114; using SillySCP.API.Features; +using SillySCP.API.Settings; namespace SillySCP.Patches { diff --git a/SillySCP/Patches/SkeletonStrangle.cs b/SillySCP/Patches/SkeletonStrangle.cs index 1bb25d1..dcb2c3f 100644 --- a/SillySCP/Patches/SkeletonStrangle.cs +++ b/SillySCP/Patches/SkeletonStrangle.cs @@ -1,13 +1,8 @@ -using CustomPlayerEffects; -using Exiled.API.Features; -using HarmonyLib; +using HarmonyLib; using LabApi.Features.Wrappers; using PlayerRoles.PlayableScps.Scp3114; -using PlayerRoles.Subroutines; -using RueI.Elements; using SecretAPI.Features.UserSettings; -using SillySCP.API.Features; -using Utils.NonAllocLINQ; +using SillySCP.API.Settings; using Player = LabApi.Features.Wrappers.Player; namespace SillySCP.Patches diff --git a/SillySCP/Patches/SnakePatch.cs b/SillySCP/Patches/SnakePatch.cs index 9cad20f..e5b38a1 100644 --- a/SillySCP/Patches/SnakePatch.cs +++ b/SillySCP/Patches/SnakePatch.cs @@ -7,7 +7,6 @@ using InventorySystem.Items.Keycards.Snake; using static HarmonyLib.AccessTools; using MEC; -using Mirror; namespace SillySCP.Patches { diff --git a/SillySCP/SillySCP.csproj b/SillySCP/SillySCP.csproj index a410644..4da7d45 100644 --- a/SillySCP/SillySCP.csproj +++ b/SillySCP/SillySCP.csproj @@ -12,6 +12,7 @@ embedded + @@ -19,8 +20,12 @@ - + + + + + From 2e14bf4d3a2d90b7886458a456c5e25f405a3160 Mon Sep 17 00:00:00 2001 From: Lumi Date: Wed, 28 May 2025 22:30:03 +0100 Subject: [PATCH 2/3] feat: condition --- SillySCP/Handlers/SSSSHandler.cs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/SillySCP/Handlers/SSSSHandler.cs b/SillySCP/Handlers/SSSSHandler.cs index cc0d60f..deb8f95 100644 --- a/SillySCP/Handlers/SSSSHandler.cs +++ b/SillySCP/Handlers/SSSSHandler.cs @@ -32,13 +32,22 @@ public void Unregister() private void OnJailbirdSwing(SwingingEventArgs ev) { - AudioPlayer audioPlayer = AudioPlayer.CreateOrGet($"Jailbird {ev.Player.Nickname}", onIntialCreation: (p) => - { - p.transform.parent = ev.Player.Transform; - Speaker speaker = p.AddSpeaker("Jailbird Speaker", isSpatial: true, minDistance: 5f, maxDistance: 15f); - speaker.transform.parent = ev.Player.Transform; - speaker.transform.localPosition = Vector3.zero; - }); + AudioPlayer audioPlayer = AudioPlayer.CreateOrGet($"Jailbird {ev.Player.Nickname}", + condition: hub => + { + LabApi.Features.Wrappers.Player player = LabApi.Features.Wrappers.Player.Get(hub); + if (player == null) return true; + JailbirdSetting setting = CustomSetting.GetPlayerSetting(JailbirdSetting.SettingId, player); + return setting == null || setting.IsDefault; + }, + onIntialCreation: (p) => + { + p.transform.parent = ev.Player.Transform; + Speaker speaker = p.AddSpeaker("Jailbird Speaker", isSpatial: true, minDistance: 5f, maxDistance: 15f); + speaker.transform.parent = ev.Player.Transform; + speaker.transform.localPosition = Vector3.zero; + } + ); } private void OnVerified(VerifiedEventArgs ev) From 7cfb46a8537aba0c6a8c9a1535845bf075f91798 Mon Sep 17 00:00:00 2001 From: Lumi Date: Mon, 9 Jun 2025 19:26:34 +0100 Subject: [PATCH 3/3] feat: swinging events --- SillySCP/Handlers/SSSSHandler.cs | 50 ++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/SillySCP/Handlers/SSSSHandler.cs b/SillySCP/Handlers/SSSSHandler.cs index deb8f95..789c031 100644 --- a/SillySCP/Handlers/SSSSHandler.cs +++ b/SillySCP/Handlers/SSSSHandler.cs @@ -1,11 +1,16 @@ -using Exiled.Events.EventArgs.Item; +using Exiled.API.Enums; +using Exiled.API.Extensions; +using Exiled.API.Features; +using Exiled.Events.EventArgs.Item; using Exiled.Events.EventArgs.Player; +using PlayerRoles.PlayableScps.Scp079.Cameras; using SecretAPI.Features.UserSettings; using SillySCP.API.Interfaces; using SillySCP.API.Modules; using SillySCP.API.Settings; using UnityEngine; using UserSettings.ServerSpecific; +using Camera = Exiled.API.Features.Camera; namespace SillySCP.Handlers { @@ -21,6 +26,13 @@ public void Init() // jailbird handler Exiled.Events.Handlers.Item.Swinging += OnJailbirdSwing; + + string sillyAudiosLocation = Path.Combine(Paths.Configs, "Silly Audios"); + + AudioClipStorage.LoadClip(Path.Combine(sillyAudiosLocation, "kali 1.ogg"), "meow 1"); + AudioClipStorage.LoadClip(Path.Combine(sillyAudiosLocation, "kali 2.ogg"), "meow 2"); + AudioClipStorage.LoadClip(Path.Combine(sillyAudiosLocation, "cyn 1.ogg"), "meow 3"); + AudioClipStorage.LoadClip(Path.Combine(sillyAudiosLocation, "cyn 2.ogg"), "meow 4"); } public void Unregister() @@ -30,24 +42,30 @@ public void Unregister() Exiled.Events.Handlers.Item.Swinging -= OnJailbirdSwing; } - private void OnJailbirdSwing(SwingingEventArgs ev) + private void OnJailbirdEvent(Exiled.API.Features.Player player) { - AudioPlayer audioPlayer = AudioPlayer.CreateOrGet($"Jailbird {ev.Player.Nickname}", + AudioPlayer audioPlayer = AudioPlayer.CreateOrGet($"Jailbird {player.Nickname}", condition: hub => - { - LabApi.Features.Wrappers.Player player = LabApi.Features.Wrappers.Player.Get(hub); - if (player == null) return true; - JailbirdSetting setting = CustomSetting.GetPlayerSetting(JailbirdSetting.SettingId, player); - return setting == null || setting.IsDefault; - }, - onIntialCreation: (p) => - { - p.transform.parent = ev.Player.Transform; - Speaker speaker = p.AddSpeaker("Jailbird Speaker", isSpatial: true, minDistance: 5f, maxDistance: 15f); - speaker.transform.parent = ev.Player.Transform; - speaker.transform.localPosition = Vector3.zero; - } + { + LabApi.Features.Wrappers.Player plr = LabApi.Features.Wrappers.Player.Get(hub); + if (plr == null) return true; + JailbirdSetting setting = CustomSetting.GetPlayerSetting(JailbirdSetting.SettingId, plr); + return setting == null || setting.IsOptionA; + }, + onIntialCreation: p => + { + p.transform.parent = player.Transform; + Speaker speaker = p.AddSpeaker("Jailbird Speaker", isSpatial: true, minDistance: 5f, maxDistance: 15f); + speaker.transform.parent = player.Transform; + speaker.transform.localPosition = Vector3.zero; + } ); + audioPlayer.AddClip(AudioClipStorage.AudioClips.Values.GetRandomValue(data => data.Name.Contains("meow")).Name, 3); + } + + private void OnJailbirdSwing(SwingingEventArgs ev) + { + OnJailbirdEvent(ev.Player); } private void OnVerified(VerifiedEventArgs ev)