From 5ac7d0643d469bb1633d3bc811d41fd5160358f0 Mon Sep 17 00:00:00 2001 From: Paulov Date: Thu, 9 May 2024 16:20:31 +0100 Subject: [PATCH] Fix Camora / Cylinder bullet use sync --- .../Player/Weapons/InitiateShotPacket.cs | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/Source/Coop/NetworkPacket/Player/Weapons/InitiateShotPacket.cs b/Source/Coop/NetworkPacket/Player/Weapons/InitiateShotPacket.cs index 4df67292..09de0a31 100644 --- a/Source/Coop/NetworkPacket/Player/Weapons/InitiateShotPacket.cs +++ b/Source/Coop/NetworkPacket/Player/Weapons/InitiateShotPacket.cs @@ -4,6 +4,7 @@ */ using BepInEx.Logging; +using ChartAndGraph; using Comfort.Common; using EFT; using EFT.InventoryLogic; @@ -15,6 +16,7 @@ using System.Net.Sockets; using UnityEngine; using UnityEngine.UIElements; +using static EFT.UI.CharacterSelectionStartScreen; using static StayInTarkov.Networking.SITSerialization; namespace StayInTarkov.Coop.NetworkPacket.Player.Weapons @@ -161,6 +163,7 @@ protected override void Process(CoopPlayerClient client) if (firearmControllerClient.Weapon.GetCurrentMagazine() is CylinderMagazineClass cylindermag) { + cylindermag.Camoras[cylindermag.CurrentCamoraIndex].RemoveItem(); cylindermag.IncrementCamoraIndex(); firearmControllerClient.FirearmsAnimator.SetCamoraIndex(cylindermag.CurrentCamoraIndex); } @@ -171,6 +174,9 @@ protected override void Process(CoopPlayerClient client) firearmControllerClient.LightAndSoundShot(ShotPosition, ShotDirection, ammoToFire.AmmoTemplate); } + + + break; default: break; @@ -190,18 +196,22 @@ private IEnumerator DisableBoltActionAnim(SITFirearmControllerClient client) private void GetBulletToFire(CoopPlayerClient client, Weapon weapon_0, out BulletClass ammoToFire) { + var pic = ItemFinder.GetPlayerInventoryController(client); + if (weapon_0.GetCurrentMagazine() is CylinderMagazineClass cylindermag) { - ammoToFire = cylindermag.GetFirstAmmo(singleFireMode: false); - // Is Used? - ammoToFire.IsUsed = true; + //ammoToFire = cylindermag.GetFirstAmmo(singleFireMode: false); - Logger.LogDebug($"Used CylinderMagazineClass first bullet {ammoToFire}"); + ammoToFire = cylindermag.Cartridges.Count > 0 + ? (BulletClass)cylindermag.Cartridges.PopToNowhere(pic).Value.Item + : cylindermag.Camoras.Length > 0 ? (BulletClass)cylindermag.Camoras[cylindermag.CurrentCamoraIndex].ContainedItem + : null; + + Logger.LogDebug($"Used CylinderMagazineClass {ammoToFire}"); return; } - var pic = ItemFinder.GetPlayerInventoryController(client); // Find the Ammo in the Chamber Slot[] chambers = weapon_0.Chambers; @@ -209,7 +219,9 @@ private void GetBulletToFire(CoopPlayerClient client, Weapon weapon_0, out Bulle // ammoToFire if (ammoToFire != null) { +#if DEBUG Logger.LogDebug($"Used {ammoToFire} in Chamber"); +#endif weapon_0.Chambers[0].RemoveItem().OrElse(elseValue: false); return; } @@ -229,9 +241,10 @@ private void GetBulletToFire(CoopPlayerClient client, Weapon weapon_0, out Bulle //} //else //{ - ammoToFire = (BulletClass)currentMagazine.Cartridges.PopToNowhere(pic).Value.Item; - - Logger.LogDebug($"Popped {ammoToFire} to nowhere"); + ammoToFire = (BulletClass)currentMagazine.Cartridges.PopToNowhere(pic).Value.Item; +#if DEBUG + Logger.LogDebug($"Popped {ammoToFire} to nowhere"); +#endif //}