Skip to content
This repository was archived by the owner on Sep 14, 2024. It is now read-only.

Commit 307e112

Browse files
v1.0.1
1 parent 07ee15a commit 307e112

File tree

3 files changed

+41
-18
lines changed

3 files changed

+41
-18
lines changed

MidroundJoin.csproj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99
https://nuget.bepinex.dev/v3/index.json
1010
</RestoreAdditionalProjectSources>
1111
<RootNamespace>MidroundJoin</RootNamespace>
12-
<Version>1.0.0</Version>
12+
<Version>1.0.1</Version>
1313
</PropertyGroup>
1414

1515
<ItemGroup>
1616
<PackageReference Include="BepInEx.Analyzers" Version="1.*" PrivateAssets="all" />
17+
<PackageReference Include="BepInEx.AssemblyPublicizer.MSBuild" Version="0.4.2" PrivateAssets="all" />
1718
<PackageReference Include="BepInEx.Core" Version="5.*" />
1819
<PackageReference Include="BepInEx.PluginInfoProps" Version="2.*" />
19-
<PackageReference Include="UnityEngine.Modules" Version="2022.1.0" IncludeAssets="compile" />
20+
<PackageReference Include="UnityEngine.Modules" Version="2021.2.7" IncludeAssets="compile" />
2021
</ItemGroup>
2122

2223
<ItemGroup Condition="'$(TargetFramework.TrimEnd(`0123456789`))' == 'net'">
@@ -33,7 +34,7 @@
3334
<Reference Include="Mirror">
3435
<HintPath>C:\Program Files (x86)\Steam\steamapps\common\Gladio Mori Demo\Gladio Mori_Data\Managed\Mirror.dll</HintPath>
3536
</Reference>
36-
<Reference Include="Mirror.Components">
37+
<Reference Include="Mirror.Components" Publicize="true">
3738
<HintPath>C:\Program Files (x86)\Steam\steamapps\common\Gladio Mori Demo\Gladio Mori_Data\Managed\Mirror.Components.dll</HintPath>
3839
</Reference>
3940
</ItemGroup>

src/Main.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@
22
using BepInEx.Bootstrap;
33
using BepInEx.Logging;
44
using HarmonyLib;
5+
using System.Collections.Generic;
56
using UnityEngine;
67

78
namespace ModMidroundJoin {
8-
[BepInPlugin("gay.crf.modiomori.midroundjoin", "MidRoundJoin", "1.0.0")]
9+
[BepInPlugin("gay.crf.modiomori.midroundjoin", "MidRoundJoin", "1.0.1")]
910
public class MidroundJoinPlugin : BaseUnityPlugin {
10-
public static ManualLogSource? Log;
11+
internal static ManualLogSource? Log;
12+
internal static Dictionary<uint, bool> DeleteCharacterOnce = new Dictionary<uint, bool>();
13+
1114
private void Awake() {
1215
Log = Logger;
1316
Chainloader.ManagerObject.hideFlags = HideFlags.HideAndDontSave;

src/Patches.cs

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using HarmonyLib;
22
using System.Collections.Generic;
33
using System.Linq;
4-
using System;
54
using Mirror;
65
using UnityEngine.SceneManagement;
76
using UnityEngine;
@@ -39,17 +38,18 @@ private static IEnumerable<CodeInstruction> AddPlayerHook(
3938

4039
[HarmonyPostfix,
4140
HarmonyPatch(typeof(NetworkServer), "AddPlayerForConnection",
42-
new Type[] { typeof(NetworkConnectionToClient), typeof(GameObject) })]
41+
new System.Type[] { typeof(NetworkConnectionToClient), typeof(GameObject) })]
4342
private static void PendingPlayerHook(NetworkConnectionToClient conn, GameObject player) {
44-
if (SceneManager.GetActiveScene().name != "LobbyMultiplayer") {
45-
NetworkRoomManager.PendingPlayer PendingPlayer;
46-
PendingPlayer.conn = conn;
47-
PendingPlayer.roomPlayer = player;
43+
if (SceneManager.GetActiveScene().name == "LobbyMultiplayer")
44+
return;
4845

49-
MultiplayerRoomManager RoomManager =
50-
(MultiplayerRoomManager)NetworkRoomManager.singleton;
51-
RoomManager.pendingPlayers.Add(PendingPlayer);
52-
}
46+
NetworkRoomManager RoomManager = (NetworkRoomManager)NetworkRoomManager.singleton;
47+
MultiplayerRoomPlayer RoomPlayer = player.GetComponent<MultiplayerRoomPlayer>();
48+
if (RoomPlayer == null)
49+
return;
50+
51+
MidroundJoinPlugin.DeleteCharacterOnce[RoomPlayer.netId] = true;
52+
RoomManager.SceneLoadedForPlayer(conn, player);
5353
}
5454

5555
[HarmonyPrefix,
@@ -60,18 +60,37 @@ private static void FixMovesetEquipmentHook(NetworkConnectionToClient conn,
6060
roomPlayer.GetComponent<MultiplayerRoomPlayer>();
6161
if (RoomPlayerComponent.selectedMoveSet != null &&
6262
(RoomPlayerComponent.selectedEquipment != null &&
63-
RoomPlayerComponent.selectedEquipment.Count > 0)) {
63+
RoomPlayerComponent.selectedEquipment.Count > 0))
6464
return;
65-
}
6665

6766
foreach (MoveSet Set in MoveSetHelpers.MoveSets) {
68-
MidroundJoinPlugin.Log!.LogInfo(Set.name);
6967
if (Set.name.Contains("Bardiche")) {
7068
RoomPlayerComponent.selectedMoveSet = Set;
7169
RoomPlayerComponent.selectedEquipment = Set.defaultEquipment;
7270
break;
7371
}
7472
}
7573
}
74+
75+
[HarmonyPostfix, HarmonyPatch(typeof(PlayerMultiplayerInputManager), "Start")]
76+
private static void FixBrokenCharacterOnMidroundJoin(
77+
PlayerMultiplayerInputManager __instance, GameObject ___playerCharacter) {
78+
if (__instance.multiplayerRoomPlayer == null)
79+
return;
80+
81+
NetworkManager NetMan = NetworkManager.singleton;
82+
if (NetMan != null && (NetMan.mode != NetworkManagerMode.Host &&
83+
NetMan.mode != NetworkManagerMode.ServerOnly))
84+
return;
85+
86+
if (!MidroundJoinPlugin.DeleteCharacterOnce.ContainsKey(
87+
__instance.multiplayerRoomPlayer.netId))
88+
return;
89+
90+
MidroundJoinPlugin.DeleteCharacterOnce.Remove(__instance.multiplayerRoomPlayer.netId);
91+
__instance.HandlePlayerDeath();
92+
Object.Destroy(___playerCharacter.transform.Find("PlayerModelPhysics").gameObject);
93+
Object.Destroy(___playerCharacter.transform.Find("PlayerModelAnimation").gameObject);
94+
}
7695
}
7796
}

0 commit comments

Comments
 (0)