mirror of
https://github.com/sp-tarkov/modules.git
synced 2025-02-13 01:50:45 -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.CodeWrapper;
|
||||||
using SPT.Reflection.Patching;
|
using SPT.Reflection.Patching;
|
||||||
using SPT.Reflection.Utils;
|
using SPT.Reflection.Utils;
|
||||||
@ -15,15 +16,14 @@ namespace SPT.SinglePlayer.Patches.ScavMode
|
|||||||
{
|
{
|
||||||
protected override MethodBase GetTargetMethod()
|
protected override MethodBase GetTargetMethod()
|
||||||
{
|
{
|
||||||
// Struct331 - 20575
|
// Struct348 - 32128
|
||||||
var desiredType = typeof(TarkovApplication)
|
var desiredType = typeof(TarkovApplication)
|
||||||
.GetNestedTypes(PatchConstants.PublicDeclaredFlags)
|
.GetNestedTypes(PatchConstants.PublicDeclaredFlags)
|
||||||
.SingleCustom(x => x.GetField("timeAndWeather") != null
|
.SingleCustom(x => x.GetField("timeAndWeather") != null
|
||||||
&& x.GetField("timeHasComeScreenController") != null
|
&& x.GetField("timeHasComeScreenController") != null
|
||||||
&& x.Name.Contains("Struct"));
|
&& x.Name.Contains("Struct"));
|
||||||
|
|
||||||
var desiredMethod = desiredType.GetMethods(PatchConstants.PublicDeclaredFlags)
|
var desiredMethod = AccessTools.Method(desiredType, "MoveNext");
|
||||||
.FirstOrDefault(x => x.Name == "MoveNext");
|
|
||||||
|
|
||||||
Logger.LogDebug($"{this.GetType().Name} Type: {desiredType?.Name}");
|
Logger.LogDebug($"{this.GetType().Name} Type: {desiredType?.Name}");
|
||||||
Logger.LogDebug($"{this.GetType().Name} Method: {desiredMethod?.Name}");
|
Logger.LogDebug($"{this.GetType().Name} Method: {desiredMethod?.Name}");
|
||||||
@ -61,6 +61,7 @@ namespace SPT.SinglePlayer.Patches.ScavMode
|
|||||||
|
|
||||||
var brFalseLabel = generator.DefineLabel();
|
var brFalseLabel = generator.DefineLabel();
|
||||||
var brLabel = generator.DefineLabel();
|
var brLabel = generator.DefineLabel();
|
||||||
|
|
||||||
var newCodes = CodeGenerator.GenerateInstructions(new List<Code>()
|
var newCodes = CodeGenerator.GenerateInstructions(new List<Code>()
|
||||||
{
|
{
|
||||||
new Code(OpCodes.Ldloc_1),
|
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")
|
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.RemoveRange(searchIndex, 4);
|
||||||
codes.InsertRange(searchIndex, newCodes);
|
codes.InsertRange(searchIndex, newCodes);
|
||||||
|
|
||||||
return codes.AsEnumerable();
|
return codes.AsEnumerable();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool IsTargetNestedType(System.Type nestedType)
|
private static bool IsTargetNestedType(Type nestedType)
|
||||||
{
|
{
|
||||||
return nestedType.GetMethods(PatchConstants.PublicDeclaredFlags)
|
return nestedType.GetMethods(PatchConstants.PublicDeclaredFlags).Count() > 0 &&
|
||||||
.Count(x => x.GetParameters().Length == 1 && x.GetParameters()[0].ParameterType == typeof(IResult)) > 0 && nestedType.GetField("savageProfile") != null;
|
nestedType.GetFields().Length == 6 &&
|
||||||
|
nestedType.GetField("savageProfile") != null &&
|
||||||
|
nestedType.GetField("profile") != null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user