Skip to content

Commit 568e24c

Browse files
committed
fix pickups on escape
disable appearances bc not works
1 parent d48b7a2 commit 568e24c

File tree

3 files changed

+33
-18
lines changed

3 files changed

+33
-18
lines changed

SimpleCustomRoles/Handler/PlayerHandler.cs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ public class PlayerHandler : CustomEventsHandler
1616
{
1717
public override void OnPlayerChangingRole(PlayerChangingRoleEventArgs ev)
1818
{
19+
ev.Player.ClearBroadcasts();
1920
PlayerEscaped.Remove(ev.Player);
2021
if (ev.ChangeReason != PlayerRoles.RoleChangeReason.None)
2122
CustomRoleHelpers.UnSetCustomInfoToPlayer(ev.Player, false);
23+
/*
2224
if (ev.ChangeReason == PlayerRoles.RoleChangeReason.Destroyed)
2325
return;
2426
if (ev.ChangeReason == PlayerRoles.RoleChangeReason.Died)
@@ -28,6 +30,7 @@ public override void OnPlayerChangingRole(PlayerChangingRoleEventArgs ev)
2830
if (ev.NewRole == PlayerRoles.RoleTypeId.Destroyed)
2931
return;
3032
Timing.CallDelayed(0.2f, () => AppearanceSyncExtension.ForceSync(ev.Player));
33+
*/
3134
}
3235

3336
public override void OnPlayerDroppingItem(PlayerDroppingItemEventArgs ev)
@@ -64,7 +67,6 @@ public override void OnPlayerChangedSpectator(PlayerChangedSpectatorEventArgs ev
6467
return;
6568
if (ev.OldTarget != null && CustomRoleHelpers.Contains(ev.OldTarget))
6669
{
67-
// todo dont clear, just queue
6870
ev.Player.ClearBroadcasts();
6971
}
7072
if (ev.NewTarget != null && CustomRoleHelpers.TryGetCustomRole(ev.NewTarget, out var role))
@@ -147,6 +149,7 @@ public override void OnPlayerDeath(PlayerDeathEventArgs ev)
147149

148150
public override void OnPlayerEscaping(PlayerEscapingEventArgs ev)
149151
{
152+
List<Pickup> droppedItems = [];
150153
Player player = ev.Player;
151154
if (PlayerEscaped.Contains(player))
152155
return;
@@ -162,7 +165,6 @@ public override void OnPlayerEscaping(PlayerEscapingEventArgs ev)
162165
var roleTypeToEscapeTo = potentialEscapeRoles.Select(static x => x.Value).FirstOrDefault();
163166
if (roleTypeToEscapeTo == PlayerRoles.RoleTypeId.None)
164167
return;
165-
List<Pickup> droppedItems = [];
166168
foreach (var item in player.Items.ToList())
167169
{
168170
var dropped = item.DropItem();
@@ -174,7 +176,7 @@ public override void OnPlayerEscaping(PlayerEscapingEventArgs ev)
174176
ev.EscapeScenario = Escape.EscapeScenarioType.Custom;
175177
PlayerEscaped.Add(player);
176178
Timing.CallDelayed(1.5f, () => PlayerEscaped.Remove(player));
177-
Timing.CallDelayed(3.5f, () =>
179+
Timing.CallDelayed(2.5f, () =>
178180
{
179181
foreach (var item in droppedItems)
180182
{
@@ -203,12 +205,20 @@ public override void OnPlayerEscaping(PlayerEscapingEventArgs ev)
203205
{
204206
var dropped = item.DropItem();
205207
dropped.IsLocked = true;
206-
storage.ItemsAfterEscaped.Add(dropped);
208+
droppedItems.Add(dropped);
207209
}
208210
var success = CustomRoleHelpers.SetNewRole(player, roleToEscapeTo, true);
209211
PlayerEscaped.Add(player);
210212
Timing.CallDelayed(1.5f, () => PlayerEscaped.Remove(player));
211-
Timing.CallDelayed(3.5f, storage.ItemsAfterEscaped.Clear);
213+
Timing.CallDelayed(2.5f, () =>
214+
{
215+
foreach (var item in droppedItems)
216+
{
217+
item.Position = player.Position;
218+
item.IsLocked = false;
219+
item.IsInUse = false;
220+
}
221+
});
212222
}
213223

214224
public override void OnServerWaveRespawned(WaveRespawnedEventArgs ev)
@@ -236,9 +246,11 @@ public override void OnServerWaveRespawned(WaveRespawnedEventArgs ev)
236246
{
237247
Main.Instance.InWaveRoles.Remove(item);
238248
}
249+
/*
239250
foreach (var item in ev.Players)
240251
{
241252
AppearanceSyncExtension.ForceSync(item);
242253
}
254+
*/
243255
}
244256
}

SimpleCustomRoles/Handler/ServerHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ internal class ServerHandler : CustomEventsHandler
1414
{
1515
public override void OnServerRoundEnded(RoundEndedEventArgs ev)
1616
{
17-
AppearanceSyncExtension.Stop();
17+
//AppearanceSyncExtension.Stop();
1818
}
1919

2020
public static void ReloadRoles()
@@ -49,7 +49,7 @@ public override void OnServerWaitingForPlayers()
4949

5050
public override void OnServerRoundStarted()
5151
{
52-
AppearanceSyncExtension.Start();
52+
//AppearanceSyncExtension.Start();
5353
if (Main.Instance.Config.IsPaused)
5454
return;
5555

SimpleCustomRoles/RoleInfo/CustomRoleInfoStorage.cs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ public class CustomRoleInfoStorage(Player owner) : CustomDataStore(owner)
2424
private bool onDefaultScale;
2525
public CustomRoleBaseInfo Role;
2626
public string OldCustomInfo = string.Empty;
27-
public List<Pickup> ItemsAfterEscaped = [];
2827
public bool ResetRole { get; set; }
2928
public void Apply()
3029
{
@@ -38,7 +37,13 @@ public void Reset()
3837
Role = null;
3938
Owner.IsBypassEnabled = false;
4039
ScaleHelper.SetScale(Owner, Vector3.one);
41-
AppearanceSyncExtension.RemovePlayer(Owner, false);
40+
/*
41+
foreach (var item in Player.ReadyList.Where(x => x != Owner))
42+
{
43+
FpcServerPositionDistributor.SendRole(item.ReferenceHub, Owner.ReferenceHub, Owner.Role);
44+
}
45+
*/
46+
//AppearanceSyncExtension.RemovePlayer(Owner, false);
4247
Owner.Position += Vector3.up;
4348
if (string.IsNullOrEmpty(OldCustomInfo))
4449
OldCustomInfo = string.Empty;
@@ -172,14 +177,6 @@ private void SetInventory()
172177
Server.RunCommand(string.Format(Main.Instance.Config.CustomItemCommand, item, Owner.PlayerId));
173178
}
174179
}
175-
176-
foreach (var item in ItemsAfterEscaped)
177-
{
178-
item.Position = Owner.Position;
179-
item.IsLocked = false;
180-
if (!Owner.IsInventoryFull)
181-
Owner.AddItem(item);
182-
}
183180
}
184181

185182
private void SetMaxStats()
@@ -245,7 +242,13 @@ private void SetFpc()
245242
// Appearance
246243
if (Role.Fpc.Appearance != PlayerRoles.RoleTypeId.None)
247244
{
248-
AppearanceSyncExtension.AddPlayer(Owner, Role.Fpc.Appearance);
245+
/*
246+
foreach (var item in Player.ReadyList.Where(x => x != Owner))
247+
{
248+
FpcServerPositionDistributor.SendRole(item.ReferenceHub, Owner.ReferenceHub, Role.Fpc.Appearance);
249+
}
250+
*/
251+
//AppearanceSyncExtension.AddPlayer(Owner, Role.Fpc.Appearance);
249252
}
250253
// Voice Channel
251254
if (Role.Fpc.VoiceChatChannel != VoiceChat.VoiceChatChannel.None)

0 commit comments

Comments
 (0)