Skip to content

Commit

Permalink
Check that multiplayer is active before handling sniper packets in ca…
Browse files Browse the repository at this point in the history
…ses where it has to get client MPTweaks.

Fixes #33.
  • Loading branch information
roncli committed Aug 13, 2020
1 parent ebc1e5e commit efd2cce
Showing 1 changed file with 26 additions and 33 deletions.
59 changes: 26 additions & 33 deletions GameMod/MPSniperPackets.cs
Expand Up @@ -86,12 +86,13 @@ static bool AlwaysUseEnergy()
static ParticleElement MaybePlayerFire(Player player, ProjPrefab type, Vector3 pos, Quaternion rot, float strength = 0, WeaponUnlock upgrade_lvl = WeaponUnlock.LEVEL_0, bool no_sound = false, int slot = -1, int force_id = -1)
{
if (!enabled) return ProjectileManager.PlayerFire(player, type, pos, rot, strength, upgrade_lvl, no_sound, slot, force_id);
if (!GameplayManager.IsMultiplayerActive) return ProjectileManager.PlayerFire(player, type, pos, rot, strength, upgrade_lvl, no_sound, slot, force_id);
if (NetworkServer.active && !MPTweaks.ClientHasTweak(player.connectionToClient.connectionId, "sniper")) return ProjectileManager.PlayerFire(player, type, pos, rot, strength, upgrade_lvl, no_sound, slot, force_id);

// Set this to false so that creepers and devastators do not explode unless the server tells us.
CreeperSyncExplode.m_allow_explosions = false;

if (GameplayManager.IsMultiplayerActive && player.isLocalPlayer && type == ProjPrefab.missile_devastator)
if (player.isLocalPlayer && type == ProjPrefab.missile_devastator)
{
MPSniperPackets.justFiredDev = true;
}
Expand Down Expand Up @@ -803,9 +804,10 @@ class MPSniperPacketsSwitchToEnergyWeapon
static bool Prefix(Player __instance)
{
if (!MPSniperPackets.enabled) return true;
if (!(GameplayManager.IsMultiplayerActive && NetworkServer.active)) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

return !(GameplayManager.IsMultiplayerActive && NetworkServer.active);
return false;
}
}

Expand All @@ -818,13 +820,9 @@ class MPSniperPacketsSwitchToAmmoWeapon
static bool Prefix(Player __instance, ref bool __result)
{
if (!MPSniperPackets.enabled) return true;
if (!(GameplayManager.IsMultiplayerActive && NetworkServer.active)) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

if (!(GameplayManager.IsMultiplayerActive && NetworkServer.active))
{
return true;
}

__result = __instance.m_weapon_level[4] != WeaponUnlock.LOCKED || __instance.m_weapon_level[3] != WeaponUnlock.LOCKED || __instance.m_weapon_level[5] != WeaponUnlock.LOCKED;

return false;
Expand Down Expand Up @@ -961,13 +959,9 @@ class MPSniperPacketsPlayerSynchronizeWeapon
static bool Prefix(Player __instance, WeaponType value)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

if (!GameplayManager.IsMultiplayer)
{
return true;
}

if (__instance.m_weapon_type != value)
{
if (!NetworkServer.active)
Expand Down Expand Up @@ -998,13 +992,9 @@ class MPSniperPacketsPlayerSynchronizeWeaponPrev
static bool Prefix(Player __instance, WeaponType value)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

if (!GameplayManager.IsMultiplayer)
{
return true;
}

if (__instance.m_weapon_type_prev != value)
{
if (!NetworkServer.active)
Expand Down Expand Up @@ -1035,6 +1025,7 @@ class MPSniperPacketsDisableRpcSetEnergy
static bool Prefix(Player __instance)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

return false;
Expand All @@ -1050,6 +1041,7 @@ class MPSniperPacketsDisableRpcSetAmmo
static bool Prefix(Player __instance)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

return false;
Expand Down Expand Up @@ -1155,9 +1147,10 @@ class MPSniperPacketsTargetAddHUDMessageEnergyIncreased
static bool Prefix(Player __instance)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

return !GameplayManager.IsMultiplayerActive;
return false;
}
}

Expand All @@ -1170,6 +1163,7 @@ class MPSniperPacketsUseEnergy
static bool Prefix(Player __instance, float amount)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

if (__instance.m_overdrive || Player.CheatUnlimited)
Expand Down Expand Up @@ -1221,9 +1215,10 @@ class MPSniperPacketsTargetAddHUDMessageAmmoIncreased
static bool Prefix(Player __instance)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

return !GameplayManager.IsMultiplayerActive;
return false;
}
}

Expand All @@ -1236,6 +1231,7 @@ class MPSniperPacketsUseAmmo
static bool Prefix(Player __instance, int amount)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

if (__instance.m_overdrive || Player.CheatUnlimited)
Expand Down Expand Up @@ -1279,9 +1275,10 @@ class MPSniperPacketsSwitchToNextMissileWithAmmo
static bool Prefix(Player __instance)
{
if (!MPSniperPackets.enabled) return true;
if (!(GameplayManager.IsMultiplayerActive && NetworkServer.active)) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

return !(GameplayManager.IsMultiplayerActive && NetworkServer.active);
return false;
}
}

Expand All @@ -1294,13 +1291,9 @@ class MPSniperPacketsPlayerSynchronizeMissile
static bool Prefix(Player __instance, MissileType value)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

if (!GameplayManager.IsMultiplayer)
{
return true;
}

if (!NetworkServer.active)
{
__instance.m_missile_type = value;
Expand Down Expand Up @@ -1328,13 +1321,9 @@ class MPSniperPacketsPlayerSynchronizeMissilePrev
static bool Prefix(Player __instance, MissileType value)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

if (!GameplayManager.IsMultiplayer)
{
return true;
}

if (__instance.m_missile_type_prev != value)
{
if (!NetworkServer.active)
Expand Down Expand Up @@ -1365,6 +1354,7 @@ class MPSniperPacketsRpcSetMissileType
static bool Prefix(Player __instance)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

return false;
Expand All @@ -1380,6 +1370,7 @@ class MPSniperPacketsRpcSetMissileAmmo
static bool Prefix(Player __instance)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.connectionToClient.connectionId, "sniper")) return true;

return false;
Expand Down Expand Up @@ -1469,9 +1460,10 @@ class MPSniperPacketsDetonatorInFlight
static bool Prefix(PlayerShip __instance)
{
if (!MPSniperPackets.enabled) return true;
if (!(GameplayManager.IsMultiplayerActive && NetworkServer.active)) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(__instance.c_player.connectionToClient.connectionId, "sniper")) return true;

return !(GameplayManager.IsMultiplayerActive && NetworkServer.active);
return false;
}
}

Expand All @@ -1484,14 +1476,15 @@ class MPSniperPacketsExplodePlayerDetonators
static bool Prefix(Player p)
{
if (!MPSniperPackets.enabled) return true;
if (!GameplayManager.IsMultiplayerActive) return true;
if (NetworkServer.active && !MPTweaks.ClientHasTweak(p.connectionToClient.connectionId, "sniper")) return true;

if (GameplayManager.IsMultiplayer && NetworkServer.active && !MPSniperPackets.serverCanDetonate)
if (NetworkServer.active && !MPSniperPackets.serverCanDetonate)
{
return false;
}

if (GameplayManager.IsMultiplayer && !NetworkServer.active && p.isLocalPlayer)
if (!NetworkServer.active && p.isLocalPlayer)
{
if (MPSniperPackets.justFiredDev)
{
Expand Down

0 comments on commit efd2cce

Please sign in to comment.