FunkFrog / ShareSuite

Risk of Rain 2 Item, Money, & Equipment sharing mod build upon BepInEx
https://thunderstore.io/package/FunkFrog-and-Sipondo/ShareSuite/
GNU General Public License v3.0
39 stars 27 forks source link

Korean Language causes client pickups to freeze all game network traffic (?) #124

Open FunkFrog opened 3 years ago

FunkFrog commented 3 years ago

Installed Mods Only ShareSuite and R2Api

Describe the bug When the game language is set to Korean and a client picks up an item, the game enters an endless loop of invalidly formatted pickup messages.

[Info   : Unity Log] GenericPickupController.HandlePickupMessage: Received pickup message.
[Error  : Unity Log] FormatException: Input string was not in a correct format.
Stack trace:
System.Text.StringBuilder.AppendFormatHelper (System.IFormatProvider provider, System.String format, System.ParamsArray args) (at <2fa7a6a452ca43df998f07fd1486c0df>:0)
System.String.FormatHelper (System.IFormatProvider provider, System.String format, System.ParamsArray args) (at <2fa7a6a452ca43df998f07fd1486c0df>:0)
System.String.Format (System.String format, System.Object arg0, System.Object arg1, System.Object arg2) (at <2fa7a6a452ca43df998f07fd1486c0df>:0)
DMD<ConstructChatString>?-2146446592._RoR2_Chat+PlayerPickupChatMessage::ConstructChatString (RoR2.Chat+PlayerPickupChatMessage this) (at <a04d365de7e646948de80913cebf8d54>:0)
DMD<>?-2146446592.Trampoline<RoR2.Chat+PlayerPickupChatMessage::ConstructChatString>?1379875840 (RoR2.Chat+PlayerPickupChatMessage ) (at <100f00ddf03c43faa56b6d6f8f63b94d>:0)
ShareSuite.ItemSharingHooks.FixZeroItemCount (On.RoR2.Chat+PlayerPickupChatMessage+orig_ConstructChatString orig, RoR2.Chat+PlayerPickupChatMessage self) (at <d216f435dd2c43988ddd605bdb328768>:0)
DMD<>?-2146446592.Hook<RoR2.Chat+PlayerPickupChatMessage::ConstructChatString>?433267584 (RoR2.Chat+PlayerPickupChatMessage ) (at <d57bffe2e7074486ac9028825d234a42>:0)
RoR2.Chat.AddMessage (RoR2.Chat+ChatMessageBase message) (at <b2a8f28d2811419eafa07a88f8c3d4bf>:0)
RoR2.Chat.AddPickupMessage (RoR2.CharacterBody body, System.String pickupToken, UnityEngine.Color32 pickupColor, System.UInt32 pickupQuantity) (at <b2a8f28d2811419eafa07a88f8c3d4bf>:0)
RoR2.GenericPickupController.HandlePickupMessage (UnityEngine.Networking.NetworkMessage netMsg) (at <b2a8f28d2811419eafa07a88f8c3d4bf>:0)
UnityEngine.Networking.NetworkConnection.InvokeHandler (UnityEngine.Networking.NetworkMessage netMsg) (at <42c37d49d97b482091ab8a042de4bcf4>:0)
UnityEngine.Networking.LocalClient.ProcessInternalMessages () (at <42c37d49d97b482091ab8a042de4bcf4>:0)
UnityEngine.Networking.LocalClient.Update () (at <42c37d49d97b482091ab8a042de4bcf4>:0)
UnityEngine.Networking.NetworkClient.UpdateClients () (at <42c37d49d97b482091ab8a042de4bcf4>:0)
UnityEngine.Networking.NetworkIdentity.UNetStaticUpdate () (at <42c37d49d97b482091ab8a042de4bcf4>:0)

This seems to retry endlessly until the host ends the game, causing clients to desync from the server completely.

To Reproduce Set game language to Korean Install ShareSuite Have client pick up the item

Expected behavior It outputs the pickup message without crashing

Current fix for problem Set game language to English

Full Console Output LogOutput.log