mirror of
https://github.com/sp-tarkov/modules.git
synced 2025-02-13 03:10:45 -05:00
Synchronize scav encyclopedia with PMC at raid start, and inspect any items in scav inventory (!81)
This makes SPT mimic live in how scav encyclopedia is handled Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com> Reviewed-on: SPT-AKI/Modules#81 Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com> Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
This commit is contained in:
parent
6f78f23cde
commit
c8507fb600
@ -64,6 +64,7 @@ namespace Aki.SinglePlayer
|
||||
new ScavSellAllRequestPatch().Enable();
|
||||
new HideoutQuestIgnorePatch().Enable();
|
||||
new LightKeeperServicesPatch().Enable();
|
||||
new ScavEncyclopediaPatch().Enable();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -0,0 +1,47 @@
|
||||
using Aki.Reflection.Patching;
|
||||
using Aki.Reflection.Utils;
|
||||
using Aki.SinglePlayer.Utils.InRaid;
|
||||
using EFT;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Aki.SinglePlayer.Patches.ScavMode
|
||||
{
|
||||
/**
|
||||
* At the start of a scav raid, copy the PMC encyclopedia to the scav profile, and
|
||||
* make sure the scav knows all of the items it has in its inventory
|
||||
*/
|
||||
internal class ScavEncyclopediaPatch : ModulePatch
|
||||
{
|
||||
protected override MethodBase GetTargetMethod()
|
||||
{
|
||||
return typeof(GameWorld).GetMethod(nameof(GameWorld.OnGameStarted));
|
||||
}
|
||||
|
||||
[PatchPostfix]
|
||||
public static void PatchPostFix()
|
||||
{
|
||||
if (RaidChangesUtil.IsScavRaid)
|
||||
{
|
||||
var scavProfile = PatchConstants.BackEndSession.ProfileOfPet;
|
||||
var pmcProfile = PatchConstants.BackEndSession.Profile;
|
||||
|
||||
// Handle old profiles where the scav doesn't have an encyclopedia
|
||||
if (scavProfile.Encyclopedia == null)
|
||||
{
|
||||
scavProfile.Encyclopedia = new Dictionary<string, bool>();
|
||||
}
|
||||
|
||||
// Sync the PMC encyclopedia to the scav profile
|
||||
foreach (var item in pmcProfile.Encyclopedia.Where(item => !scavProfile.Encyclopedia.ContainsKey(item.Key)))
|
||||
{
|
||||
scavProfile.Encyclopedia.Add(item.Key, item.Value);
|
||||
}
|
||||
|
||||
// Auto examine any items the scav doesn't know that are in their inventory
|
||||
scavProfile.LearnAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user