diff --git a/CustomClasses/BloodFueledManager.cs b/CustomClasses/BloodFueledManager.cs index d670ae9..b7d4455 100644 --- a/CustomClasses/BloodFueledManager.cs +++ b/CustomClasses/BloodFueledManager.cs @@ -1,51 +1,10 @@ -using CustomPlayerEffects; using LabApi.Features.Wrappers; -using Mirror; using PlayerRoles.FirstPersonControl; -using UnityEngine; -using UnityEngine.SceneManagement; using Logger = LabApi.Features.Console.Logger; using Random = System.Random; namespace CustomClasses; -public abstract class CustomPlayerEffect : StatusEffectBase -{ - private static bool _isLoaded; - - public Player Owner { get; private set; } = null!; - - protected override void Start() - { - Owner = Player.Get(Hub); - base.Start(); - } - - public override string ToString() => $"{GetType().Name}: Owner ({Owner}) - Intensity ({Intensity}) - Duration {Duration}"; - - internal static void Initialize() - { - SceneManager.sceneLoaded += (_, _) => - { - if (_isLoaded) - return; - - _isLoaded = true; - - var playerEffects = NetworkManager.singleton.playerPrefab.GetComponent().playerEffectsController.effectsGameObject.transform; - var type = typeof(DisableStaminaRegenEffect); - if (!typeof(StatusEffectBase).IsAssignableFrom(type)) - { - Logger.Error($"[CustomPlayerEffect.Initialize] {type.FullName} is not a valid StatusEffectBase and thus could not be registered!"); - return; - } - - // register effect into prefab - new GameObject(type.Name, type).transform.parent = playerEffects; - }; - } -} - public class DisableStaminaRegenEffect : CustomPlayerEffect, IStaminaModifier { public bool StaminaModifierActive => IsEnabled; diff --git a/CustomClasses/CustomClasses.cs b/CustomClasses/CustomClasses.cs index e16c356..3747c54 100644 --- a/CustomClasses/CustomClasses.cs +++ b/CustomClasses/CustomClasses.cs @@ -113,9 +113,11 @@ public sealed class CustomClasses : Plugin // Then decode using standard base64 var decodedBytes = Convert.FromBase64String(standardized); var decodedMessage = System.Text.Encoding.UTF8.GetString(decodedBytes); - + Logger.Info(decodedMessage); + CustomPlayerEffect.Initialize(); + PlayerEvents.Spawned += OnPlayerSpawned; ServerEvents.RoundEnded += OnRoundEnded; Scp914Events.ProcessingPickup += OnScp914ProcessingPickup; diff --git a/CustomClasses/CustomPlayerEffect.cs b/CustomClasses/CustomPlayerEffect.cs new file mode 100644 index 0000000..8482bbf --- /dev/null +++ b/CustomClasses/CustomPlayerEffect.cs @@ -0,0 +1,45 @@ +using CustomPlayerEffects; +using LabApi.Features.Wrappers; +using Mirror; +using UnityEngine; +using UnityEngine.SceneManagement; +using Logger = LabApi.Features.Console.Logger; + +namespace CustomClasses; + +public abstract class CustomPlayerEffect : StatusEffectBase +{ + private static bool _isLoaded; + + public Player Owner { get; private set; } = null!; + + protected override void Start() + { + Owner = Player.Get(Hub); + base.Start(); + } + + public override string ToString() => $"{GetType().Name}: Owner ({Owner}) - Intensity ({Intensity}) - Duration {Duration}"; + + internal static void Initialize() + { + SceneManager.sceneLoaded += (_, _) => + { + if (_isLoaded) + return; + + _isLoaded = true; + + var playerEffects = NetworkManager.singleton.playerPrefab.GetComponent().playerEffectsController.effectsGameObject.transform; + var type = typeof(DisableStaminaRegenEffect); + if (!typeof(StatusEffectBase).IsAssignableFrom(type)) + { + Logger.Error($"[CustomPlayerEffect.Initialize] {type.FullName} is not a valid StatusEffectBase and thus could not be registered!"); + return; + } + + // register effect into prefab + new GameObject(type.Name, type).transform.parent = playerEffects; + }; + } +} \ No newline at end of file diff --git a/CustomClasses/SetCClassCommand.cs b/CustomClasses/SetCClassCommand.cs index f071e37..b55fbc6 100644 --- a/CustomClasses/SetCClassCommand.cs +++ b/CustomClasses/SetCClassCommand.cs @@ -67,6 +67,7 @@ public class SetCClassCommand : ICommand SerpentsHandManager.PreSpawn(player); }), "negromancer" => manager.ForceSpawn(player, customClasses.NegromancerConfig, typeof(NegromancerConfig), null), + "bloodfueled" => manager.ForceSpawn(player, customClasses.BloodFueledConfig, typeof(BloodFueledConfig), null), _ => false };