mirror of
https://github.com/sp-tarkov/modules.git
synced 2025-02-12 20:50:44 -05:00
fix scavProfileLoadPatch
This commit is contained in:
parent
2dfc019b21
commit
2c2fe26f0b
@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using SPT.Reflection.CodeWrapper;
|
||||
using SPT.Reflection.Patching;
|
||||
using SPT.Reflection.Utils;
|
||||
@ -15,15 +16,14 @@ namespace SPT.SinglePlayer.Patches.ScavMode
|
||||
{
|
||||
protected override MethodBase GetTargetMethod()
|
||||
{
|
||||
// Struct331 - 20575
|
||||
// Struct348 - 32128
|
||||
var desiredType = typeof(TarkovApplication)
|
||||
.GetNestedTypes(PatchConstants.PublicDeclaredFlags)
|
||||
.SingleCustom(x => x.GetField("timeAndWeather") != null
|
||||
&& x.GetField("timeHasComeScreenController") != null
|
||||
&& x.Name.Contains("Struct"));
|
||||
|
||||
var desiredMethod = desiredType.GetMethods(PatchConstants.PublicDeclaredFlags)
|
||||
.FirstOrDefault(x => x.Name == "MoveNext");
|
||||
var desiredMethod = AccessTools.Method(desiredType, "MoveNext");
|
||||
|
||||
Logger.LogDebug($"{this.GetType().Name} Type: {desiredType?.Name}");
|
||||
Logger.LogDebug($"{this.GetType().Name} Method: {desiredMethod?.Name}");
|
||||
@ -61,6 +61,7 @@ namespace SPT.SinglePlayer.Patches.ScavMode
|
||||
|
||||
var brFalseLabel = generator.DefineLabel();
|
||||
var brLabel = generator.DefineLabel();
|
||||
|
||||
var newCodes = CodeGenerator.GenerateInstructions(new List<Code>()
|
||||
{
|
||||
new Code(OpCodes.Ldloc_1),
|
||||
@ -75,16 +76,23 @@ namespace SPT.SinglePlayer.Patches.ScavMode
|
||||
new CodeWithLabel(OpCodes.Stfld, brLabel, typeof(TarkovApplication).GetNestedTypes(BindingFlags.Public).SingleCustom(IsTargetNestedType), "profile")
|
||||
});
|
||||
|
||||
foreach (var code in newCodes)
|
||||
{
|
||||
Logger.LogInfo($"opcode: {code?.opcode} - operand: {code?.operand}");
|
||||
}
|
||||
|
||||
codes.RemoveRange(searchIndex, 4);
|
||||
codes.InsertRange(searchIndex, newCodes);
|
||||
|
||||
return codes.AsEnumerable();
|
||||
}
|
||||
|
||||
private static bool IsTargetNestedType(System.Type nestedType)
|
||||
private static bool IsTargetNestedType(Type nestedType)
|
||||
{
|
||||
return nestedType.GetMethods(PatchConstants.PublicDeclaredFlags)
|
||||
.Count(x => x.GetParameters().Length == 1 && x.GetParameters()[0].ParameterType == typeof(IResult)) > 0 && nestedType.GetField("savageProfile") != null;
|
||||
return nestedType.GetMethods(PatchConstants.PublicDeclaredFlags).Count() > 0 &&
|
||||
nestedType.GetFields().Length == 6 &&
|
||||
nestedType.GetField("savageProfile") != null &&
|
||||
nestedType.GetField("profile") != null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user