Skip to content

Commit 142c2a2

Browse files
committed
Update
1 parent 438dd6f commit 142c2a2

17 files changed

Lines changed: 459 additions & 259 deletions

Commands/CensorsInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ public class CensorsInfo : ICommand
1515

1616
public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out string response)
1717
{
18-
if (PlayerExtensions.Scp96sCencors.Count == 0)
18+
if (PlayerExtensions.Scp96Censors.Count == 0)
1919
{
2020
response = "No active SCP-96 sensors.";
2121
return true;
2222
}
2323

24-
IEnumerable<string> lines = PlayerExtensions.Scp96sCencors.Select(data =>
24+
IEnumerable<string> lines = PlayerExtensions.Scp96Censors.Select(data =>
2525
{
2626
string schematicName = data.Value?.name ?? "null";
2727
return $"{data.Key.Nickname} -> {schematicName}";

Commands/ScramblesInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ public class ScramblesInfo : ICommand
1515
public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out string response)
1616
{
1717

18-
if (ProjectSCRAMBLE.ActiveScramblePlayers.Count == 0)
18+
if (ProjectSCRAMBLE.SCRAMBLE.ActiveScramblePlayers.Count == 0)
1919
{
2020
response = "No active scramble player.";
2121
return true;
2222
}
2323

24-
IEnumerable<string> lines = ProjectSCRAMBLE.ActiveScramblePlayers.Select(data =>
24+
IEnumerable<string> lines = ProjectSCRAMBLE.SCRAMBLE.ActiveScramblePlayers.Select(data =>
2525
{
2626
string mainPlayer = data.Key.Nickname;
2727
List<string> scrambled = [.. data.Value.Select(p => p.Nickname)];

Configs/Config.cs

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,37 +27,53 @@ public class Config : IConfig
2727
[Description("How much power should the SCRAMBLEs use to obfuscate 96's face? (1 = default, >1 = faster, <1 = slower)")]
2828
public float ChargeUsageMultiplayer { get; set; } = 1;
2929

30-
[Description("Attach to head or Directl attach to player")]
30+
[Description("Attach to head or Directly attach to player")]
3131
public bool AttachCensorToHead { get; set; } = true;
3232

3333
[Description("0.1 is okey, 0.01 better/good , 0.001 greater")]
3434
public float AttachToHeadsyncInterval { get; set; } = 0.01f;
3535

36+
#if PMER
3637
[Description("Censor schematic name")]
3738
public string CensorSchematic { get; set; } = "Censormain";
39+
#else
40+
[Description("Rotate censor randomly")]
41+
public bool CensorRotate { get; set; } = true;
42+
43+
[Description("Censor Color")]
44+
public Color CensorColor { get; set; } = new Color(0, 0, 0, 1);
45+
#endif
46+
47+
[Description("Censor scale")]
48+
public Vector3 CensorScale { get; set; } = Vector3.one * 0.5f;
3849

39-
[Description("Censor schematic scale")]
40-
public Vector3 CensorSchematicScale { get; set; } = new Vector3(0.5f, 0.5f , 0.5f);
4150

4251
[Description("Wearing time (default 5)")]
43-
public float ActivateTime { get; set; } = 1f;
52+
public bool OverrideWearingTime { get; set; } = true;
53+
public float WearingTime { get; set; } = 1f;
54+
4455

4556
[Description("Removal time (default 5.1)")]
46-
public float DeactivateTime { get; set; } = 1f;
57+
public bool OverrideWearingOffTime { get; set; } = true;
58+
public float WearingOffTime { get; set; } = 1f;
59+
4760

4861
[Description("Custom item settings")]
4962
public ProjectSCRAMBLE ProjectSCRAMBLE { get; set; } = new ProjectSCRAMBLE();
5063

64+
5165
[Description("Hint settings")]
5266
public Hints Hint { get; set; } = new Hints();
5367
public class Hints
5468
{
55-
public float XCordinate { get; set; } = 370;
5669
public float YCordinate { get; set; } = 90;
70+
#if HSM
71+
public float XCordinate { get; set; } = 370;
5772
public int FontSize { get; set; } = 20;
5873

5974
[Description("0 = left , 1 = right, 2 = center")]
6075
public int Alligment { get; set; } = 0;
76+
#endif
6177
}
6278
}
6379
}

EventHandlers.cs

Lines changed: 43 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,48 @@
1-
using MEC;
1+
using System.Linq;
2+
3+
using MEC;
24
using UnityEngine;
35
using PlayerRoles;
4-
using System.Linq;
6+
using ProjectSCRAMBLE.Extensions;
7+
58
using Exiled.API.Enums;
69
using Exiled.API.Features;
710
using Exiled.API.Extensions;
8-
using ProjectSCRAMBLE.Extensions;
9-
using ProjectMER.Features.Objects;
1011
using Exiled.Events.EventArgs.Player;
1112
using Exiled.Events.EventArgs.Scp096;
13+
1214
using Scp96Event = Exiled.Events.Handlers.Scp096;
1315
using PlayerEvent = Exiled.Events.Handlers.Player;
16+
using Scp914Event = Exiled.Events.Handlers.Scp914;
17+
using Exiled.Events.EventArgs.Scp914;
18+
19+
#if PMER
20+
using ProjectMER.Features.Objects;
21+
#endif
1422

1523
namespace ProjectSCRAMBLE
1624
{
1725
public class EventHandlers
1826
{
19-
public void Sucsribe()
27+
public void Subscribe()
2028
{
2129
PlayerEvent.Verified += OnVerified;
2230
PlayerEvent.Spawned += OnChangedRole;
2331
PlayerEvent.ReceivingEffect += OnChangeEffect;
24-
32+
2533
Scp96Event.AddingTarget += OnAddingTarget;
2634
}
2735

28-
public void UnSucsribe()
29-
{
36+
public void Unsubscribe()
37+
{
3038
PlayerEvent.Verified -= OnVerified;
3139
PlayerEvent.Spawned -= OnChangedRole;
3240
PlayerEvent.ReceivingEffect -= OnChangeEffect;
3341

3442
Scp96Event.AddingTarget -= OnAddingTarget;
3543
}
3644

45+
3746
private void OnChangedRole(SpawnedEventArgs ev)
3847
{
3948
if (ProjectSCRAMBLE.SCRAMBLE == null)
@@ -46,23 +55,29 @@ private void OnChangedRole(SpawnedEventArgs ev)
4655
}
4756
else if (ev.Player.Role == RoleTypeId.Scp096)
4857
{
49-
Timing.CallDelayed(0.5f, () => ev.Player.AddCensor());
58+
Timing.CallDelayed(0.5f, ev.Player.AddCensor);
5059
Log.Debug($"Scp96:{ev.Player.Nickname} added censor");
5160
}
5261
}
5362

5463
public void OnAddingTarget(AddingTargetEventArgs ev)
5564
{
56-
if (!ev.IsLooking || !ProjectSCRAMBLE.ActiveScramblePlayers.ContainsKey(ev.Target))
65+
if (!ev.IsLooking)
5766
return;
5867

59-
bool shouldRandomError = Plugin.Instance.Config.RandomError && Random.Range(0f, 100f) <= Plugin.Instance.Config.RandomErrorChance;
68+
if (!ProjectSCRAMBLE.SCRAMBLE.ActiveScramblePlayers.ContainsKey(ev.Target))
69+
return;
70+
71+
Config config = Plugin.Instance.Config;
72+
Translation translation = Plugin.Instance.Translation;
6073

61-
if (!Plugin.Instance.Config.ScrambleCharge)
74+
bool shouldRandomError = config.RandomError && Random.Range(0f, 100f) <= config.RandomErrorChance;
75+
76+
if (!config.ScrambleCharge)
6277
{
6378
if (shouldRandomError)
6479
{
65-
ev.Target.AddSCRAMBLEHint(Plugin.Instance.Translation.Error);
80+
ev.Target.AddSCRAMBLEHint(translation.Error);
6681
return;
6782
}
6883

@@ -71,7 +86,9 @@ public void OnAddingTarget(AddingTargetEventArgs ev)
7186
}
7287

7388
ushort serial = 0;
74-
foreach (var key in ev.Target.Inventory.UserInventory.Items.Keys)
89+
90+
var items = ev.Target.Inventory.UserInventory.Items.Keys;
91+
foreach (ushort key in items)
7592
{
7693
if (ProjectSCRAMBLE.SCRAMBLE.TrackedSerials.Contains(key))
7794
{
@@ -96,31 +113,32 @@ [SCRAMBLE ERROR]
96113
return;
97114
}
98115

99-
if (!ProjectSCRAMBLE.ScrambleCharges.TryGetValue(serial, out float charge))
116+
if (!ProjectSCRAMBLE.SCRAMBLE.ScrambleCharges.TryGetValue(serial, out float charge))
100117
{
101-
ProjectSCRAMBLE.ScrambleCharges[serial] = 100f;
102-
ev.Target.AddSCRAMBLEHint(Plugin.Instance.Translation.Charge.Replace("{charge}", charge.FormatCharge()));
118+
charge = 100f;
119+
ProjectSCRAMBLE.SCRAMBLE.ScrambleCharges[serial] = charge;
120+
ev.Target.AddSCRAMBLEHint(translation.Charge.Replace("{charge}", charge.FormatCharge()));
103121
ev.IsAllowed = false;
104122
return;
105123
}
106124

107125
if (charge <= 0f)
108126
{
109-
ev.Target.AddSCRAMBLEHint(Plugin.Instance.Translation.OffCharge);
127+
ev.Target.AddSCRAMBLEHint(translation.OffCharge);
110128
ev.Target.DeObfuscateScp96s();
111129
return;
112130
}
113131

114-
ProjectSCRAMBLE.ScrambleCharges[serial] -= Time.deltaTime * Plugin.Instance.Config.ChargeUsageMultiplayer;
132+
ProjectSCRAMBLE.SCRAMBLE.ScrambleCharges[serial] -= Time.deltaTime * config.ChargeUsageMultiplayer;
115133

116134
if (shouldRandomError)
117135
{
118-
ev.Target.AddSCRAMBLEHint(Plugin.Instance.Translation.Error);
119-
Timing.CallDelayed(0.5f , () => ev.Target.AddSCRAMBLEHint(Plugin.Instance.Translation.Charge.Replace("{charge}", charge.FormatCharge())));
136+
ev.Target.AddSCRAMBLEHint(translation.Error);
137+
Timing.CallDelayed(0.5f , () => ev.Target.AddSCRAMBLEHint(translation.Charge.Replace("{charge}", charge.FormatCharge())));
120138
return;
121139
}
122140

123-
ev.Target.AddSCRAMBLEHint(Plugin.Instance.Translation.Charge.Replace("{charge}", charge.FormatCharge()));
141+
ev.Target.AddSCRAMBLEHint(translation.Charge.Replace("{charge}", charge.FormatCharge()));
124142
ev.IsAllowed = false;
125143
}
126144

@@ -131,7 +149,7 @@ private void OnChangeEffect(ReceivingEffectEventArgs ev)
131149

132150
ev.Player.RemoveSCRAMBLEHint();
133151

134-
if (!ProjectSCRAMBLE.ActiveScramblePlayers.ContainsKey(ev.Player))
152+
if (!ProjectSCRAMBLE.SCRAMBLE.ActiveScramblePlayers.ContainsKey(ev.Player))
135153
return;
136154

137155
ev.Player.DeObfuscateScp96s();
@@ -140,9 +158,9 @@ private void OnChangeEffect(ReceivingEffectEventArgs ev)
140158

141159
public void OnVerified(VerifiedEventArgs ev)
142160
{
143-
foreach (SchematicObject schmt in PlayerExtensions.Scp96sCencors.Values)
161+
foreach (GameObject censor in PlayerExtensions.Scp96Censors.Values)
144162
{
145-
ev.Player.DestroySchematic(schmt);
163+
ev.Player.HideNetworkObject(censor);
146164
}
147165
}
148166
}

Extensions/CommonExtensions.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
using Exiled.API.Features;
5+
6+
using HarmonyLib;
7+
8+
using MEC;
9+
10+
using UnityEngine;
11+
12+
using Utils.NonAllocLINQ;
13+
14+
namespace ProjectSCRAMBLE.Extensions
15+
{
16+
public static class CommonExtensions
17+
{
18+
public static string FormatCharge(this float Float)
19+
{
20+
return ((int)Float).ToString();
21+
}
22+
23+
public static void PatchSingleType(this Harmony harmony, Type patchClass)
24+
{
25+
PatchClassProcessor processor = new(harmony, patchClass);
26+
processor.Patch();
27+
}
28+
29+
public static void AttachToTransform(this Transform thisTransform, Transform targetTransform)
30+
{
31+
Timing.RunCoroutine(Methods.TrackHead(thisTransform, targetTransform, Plugin.Instance.Config.AttachToHeadsyncInterval));
32+
}
33+
34+
public static void HideForUnGlassesPlayer(this GameObject gameObject, Player CensorOwner)
35+
{
36+
foreach (Player normalply in Player.List)
37+
{
38+
if (normalply.IsHost)
39+
continue;
40+
41+
if (ProjectSCRAMBLE.SCRAMBLE.ActiveScramblePlayers.TryGetValue(normalply, out List<Player> scp96s))
42+
{
43+
scp96s.AddIfNotContains(CensorOwner);
44+
continue;
45+
}
46+
47+
normalply.HideNetworkObject(gameObject);
48+
}
49+
}
50+
}
51+
}

Extensions/FloatExtension.cs

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)