0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 01:30:45 -05:00

removed more un-needed patches

This commit is contained in:
CWX 2024-08-02 16:44:14 +01:00
parent c234e0d1d6
commit e3bc4e3210
5 changed files with 4 additions and 199 deletions

View File

@ -1,52 +0,0 @@
using SPT.Reflection.Patching;
using EFT;
using System.Reflection;
using HarmonyLib;
namespace SPT.Custom.Patches
{
public class BotEnemyTargetPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
return AccessTools.Method(typeof(BotsController), nameof(BotsController.AddEnemyToAllGroupsInBotZone));
}
/// <summary>
/// AddEnemyToAllGroupsInBotZone()
/// Goal: by default, AddEnemyToAllGroupsInBotZone doesn't check if the bot group is on the same side as the player.
/// The effect of this is that when you are a Scav and kill a Usec, every bot group in the zone will aggro you including other Scavs.
/// This should fix that.
/// </summary>
[PatchPrefix]
private static bool PatchPrefix(BotsController __instance, IPlayer aggressor, IPlayer groupOwner, IPlayer target)
{
BotZone botZone = groupOwner.AIData.BotOwner.BotsGroup.BotZone;
foreach (var item in __instance.Groups())
{
if (item.Key != botZone)
{
continue;
}
foreach (var group in item.Value.GetGroups(notNull: true))
{
if (!group.Enemies.ContainsKey(aggressor) && ShouldAttack(aggressor, target, group))
{
group.AddEnemy(aggressor, EBotEnemyCause.AddEnemyToAllGroupsInBotZone);
}
}
}
return false;
}
private static bool ShouldAttack(IPlayer attacker, IPlayer victim, BotsGroup groupToCheck)
{
// Group should target if player attack a victim on the same side or if the group is not on the same side as the player.
bool shouldAttack = attacker.Side != groupToCheck.Side
|| attacker.Side == victim.Side;
return !groupToCheck.HaveMemberWithRole(WildSpawnType.gifter) && groupToCheck.ShallRevengeFor(victim) && shouldAttack;
}
}
}

View File

@ -1,40 +0,0 @@
using SPT.Reflection.Patching;
using EFT;
using System.Reflection;
using HarmonyLib;
namespace SPT.Custom.Patches
{
/// <summary>
/// Goal: patch removes the current bot from its own enemy list - occurs when adding bots type to its enemy array in difficulty settings
/// </summary>
public class BotSelfEnemyPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
return AccessTools.Method(typeof(BotOwner), nameof(BotOwner.PreActivate));
}
[PatchPrefix]
private static bool PatchPrefix(BotOwner __instance, BotsGroup group)
{
IPlayer selfToRemove = null;
foreach (var enemy in group.Enemies)
{
if (enemy.Key.Id == __instance.Id)
{
selfToRemove = enemy.Key;
break;
}
}
if (selfToRemove != null)
{
group.Enemies.Remove(selfToRemove);
}
return true;
}
}
}

View File

@ -1,30 +0,0 @@
using SPT.Reflection.Patching;
using System.Reflection;
using HarmonyLib;
namespace SPT.Custom.Patches
{
public class BotsGroupLetBossesShootPmcsPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
return AccessTools.Method(typeof(BotsGroup), nameof(BotsGroup.CheckAndAddEnemy));
}
/// <summary>
/// CheckAndAddEnemy()
/// Goal: This patch lets bosses shoot back once a PMC has shot them
/// Force method to always run the code
/// </summary>
[PatchPrefix]
private static bool PatchPrefix(ref bool ignoreAI)
{
// original
// return player.HealthController.IsAlive && (!player.AIData.IsAI || ignoreAI) && !this.Enemies.ContainsKey(player) && this.AddEnemy(player, EBotEnemyCause.checkAddTODO);
ignoreAI = true;
return true; // Do Original
}
}
}

View File

@ -1,68 +0,0 @@
using SPT.Reflection.Patching;
using SPT.Reflection.Utils;
using EFT;
using System.Linq;
using System.Reflection;
using Comfort.Common;
using System;
using static LocationSettingsClass;
namespace SPT.Custom.Patches
{
/// <summary>
/// Local games do not set the locationId property like a network game does, `LocationId` is used by various bsg systems
/// e.g. btr/lightkeeper services
/// </summary>
public class SetLocationIdOnRaidStartPatch : ModulePatch
{
private static PropertyInfo _locationProperty;
protected override MethodBase GetTargetMethod()
{
Type localGameBaseType = PatchConstants.LocalGameType.BaseType;
// At this point, gameWorld.MainPlayer isn't set, so we need to use the LocalGame's `Location_0` property
_locationProperty = localGameBaseType.GetProperties(PatchConstants.PublicDeclaredFlags)
.SingleCustom(x => x.PropertyType == typeof(Location));
// Find the TimeAndWeatherSettings handling method
var desiredMethod = localGameBaseType.GetMethods(PatchConstants.PublicDeclaredFlags).SingleOrDefault(IsTargetMethod);
Logger.LogDebug($"{GetType().Name} Type: {localGameBaseType?.Name}");
Logger.LogDebug($"{GetType().Name} Method: {desiredMethod?.Name}");
return desiredMethod;
}
private static bool IsTargetMethod(MethodInfo mi)
{
// Find method_3(TimeAndWeatherSettings timeAndWeather)
var parameters = mi.GetParameters();
return (parameters.Length == 1 && parameters[0].ParameterType == typeof(TimeAndWeatherSettings));
}
[PatchPostfix]
private static void PatchPostfix(AbstractGame __instance)
{
var gameWorld = Singleton<GameWorld>.Instance;
// EFT.HideoutGame is an internal class, so we can't do static type checking :(
if (__instance.GetType().Name.Contains("HideoutGame"))
{
return;
}
Location location = _locationProperty.GetValue(__instance) as Location;
if (location == null)
{
Logger.LogError($"[SetLocationId] Failed to get location data");
return;
}
gameWorld.LocationId = location.Id;
Logger.LogDebug($"[SetLocationId] Set locationId to: {location.Id}");
}
}
}

View File

@ -22,25 +22,20 @@ namespace SPT.Custom
new EasyBundlePatch().Enable();
// TODO: check if these patches are needed
// new BotsGroupLetBossesShootPmcsPatch().Enable();
new CustomAiPatch().Enable();
new AddTraitorScavsPatch().Enable();
new PmcTakesAgesToHealLimbsPatch().Enable();
new SendFleaListingTaxAmountToServerPatch().Enable();
new DisableNonHalloweenExitsDuringEventPatch().Enable();
// new SetLocationIdOnRaidStartPatch().Enable();
// new AllScavsHostileHostileToPlayerScavPatch().Enable();
// new CopyPmcQuestsToPlayerScavPatch().Enable();
// new MergeScavPmcQuestsOnInventoryLoadPatch().Enable();
// Needed but needs editing
new IsEnemyPatch().Enable();
// Still need
new SendFleaListingTaxAmountToServerPatch().Enable();
new AddTraitorScavsPatch().Enable();
new IsEnemyPatch().Enable(); // Might be able to refactor
new CustomAiPatch().Enable();
new SaveSettingsToSptFolderPatch().Enable();
new QTEPatch().Enable();
new RedirectClientImageRequestsPatch().Enable();
new BotSelfEnemyPatch().Enable();
new DisableGameModeAdjustButtonPatch().Enable();
new FixPmcSpawnParamsNullErrorPatch().Enable();
new SetPreRaidSettingsScreenDefaultsPatch().Enable();