mirror of
https://github.com/sp-tarkov/modules.git
synced 2025-02-13 09:30:46 -05:00
![Merijn Hendriks](/assets/img/avatar_default.png)
This patch contains the following: - Initial async VFS code (for reading / writing files) - Simplified Http Client code - Added async support to Http Client, RequestHandler - Improved RequestHandler logging - Deferred bundle loading to EasyAssetPatch - Make GetManifestJson run async This comes with a number of benefits: - When downloading bundles, it will mention which files succeeded or failed to download - Bundle loading happens in the initial screen, not the white screen - Fixed the issue where bundle loading could break bepinex loading (too long load time) - Modders can now make async http request and read/write files async I removed logging of sessionid inside the RequestHandler for each request, sessionid is already visible from bepinex log startup parameters. At last, sorry for the amount of commits it took. I initially wanted to target the 3.9.0 branch, but decided to use 3.8.1 instead as async request can really help out some mods. Reviewed-on: SPT-AKI/Modules#117 Co-authored-by: Merijn Hendriks <merijn.d.hendriks@gmail.com> Co-committed-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
95 lines
4.0 KiB
C#
95 lines
4.0 KiB
C#
using System;
|
|
using Aki.Common;
|
|
using Aki.Custom.Airdrops.Patches;
|
|
using Aki.Custom.BTR.Patches;
|
|
using Aki.Custom.Patches;
|
|
using Aki.Custom.Utils;
|
|
using Aki.Reflection.Utils;
|
|
using Aki.SinglePlayer.Utils.MainMenu;
|
|
using BepInEx;
|
|
using UnityEngine;
|
|
|
|
namespace Aki.Custom
|
|
{
|
|
[BepInPlugin("com.spt-aki.custom", "AKI.Custom", AkiPluginInfo.PLUGIN_VERSION)]
|
|
class AkiCustomPlugin : BaseUnityPlugin
|
|
{
|
|
public void Awake()
|
|
{
|
|
Logger.LogInfo("Loading: Aki.Custom");
|
|
|
|
try
|
|
{
|
|
// Bundle patches should always load first
|
|
new EasyAssetsPatch().Enable();
|
|
new EasyBundlePatch().Enable();
|
|
|
|
new BossSpawnChancePatch().Enable();
|
|
new BotDifficultyPatch().Enable();
|
|
new CoreDifficultyPatch().Enable();
|
|
new OfflineRaidMenuPatch().Enable();
|
|
// Fixed in live, no need for patch
|
|
//new RaidSettingsWindowPatch().Enable();
|
|
new OfflineRaidSettingsMenuPatch().Enable();
|
|
// new SessionIdPatch().Enable();
|
|
new VersionLabelPatch().Enable();
|
|
new IsEnemyPatch().Enable();
|
|
new BotCalledDataTryCallPatch().Enable();
|
|
new BotCallForHelpCallBotPatch().Enable();
|
|
new BotOwnerDisposePatch().Enable();
|
|
new LocationLootCacheBustingPatch().Enable();
|
|
//new AddSelfAsEnemyPatch().Enable();
|
|
new CheckAndAddEnemyPatch().Enable();
|
|
new BotSelfEnemyPatch().Enable(); // needed
|
|
new AddEnemyToAllGroupsInBotZonePatch().Enable();
|
|
new AirdropPatch().Enable();
|
|
new AirdropFlarePatch().Enable();
|
|
new AddSptBotSettingsPatch().Enable();
|
|
new CustomAiPatch().Enable();
|
|
new AddTraitorScavsPatch().Enable();
|
|
new ExitWhileLootingPatch().Enable();
|
|
new QTEPatch().Enable();
|
|
new PmcFirstAidPatch().Enable();
|
|
new SettingsLocationPatch().Enable();
|
|
new SetLocationIdOnRaidStartPatch().Enable();
|
|
//new RankPanelPatch().Enable();
|
|
new RagfairFeePatch().Enable();
|
|
new ScavQuestPatch().Enable();
|
|
new FixBrokenSpawnOnSandboxPatch().Enable();
|
|
new BTRPathLoadPatch().Enable();
|
|
new BTRActivateTraderDialogPatch().Enable();
|
|
new BTRInteractionPatch().Enable();
|
|
new BTRExtractPassengersPatch().Enable();
|
|
new BTRBotAttachPatch().Enable();
|
|
new BTRReceiveDamageInfoPatch().Enable();
|
|
new BTRTurretCanShootPatch().Enable();
|
|
new BTRTurretDefaultAimingPositionPatch().Enable();
|
|
new BTRIsDoorsClosedPath().Enable();
|
|
new BTRPatch().Enable();
|
|
new BTRTransferItemsPatch().Enable();
|
|
new BTREndRaidItemDeliveryPatch().Enable();
|
|
new BTRDestroyAtRaidEndPatch().Enable();
|
|
new BTRVehicleMovementSpeedPatch().Enable();
|
|
new ScavItemCheckmarkPatch().Enable();
|
|
new ResetTraderServicesPatch().Enable();
|
|
new CultistAmuletRemovalPatch().Enable();
|
|
new HalloweenExtractPatch().Enable();
|
|
new ClampRagdollPatch().Enable();
|
|
|
|
HookObject.AddOrGetComponent<MenuNotificationManager>();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logger.LogError($"A PATCH IN {GetType().Name} FAILED. SUBSEQUENT PATCHES HAVE NOT LOADED");
|
|
Logger.LogError($"{GetType().Name}: {ex}");
|
|
MessageBoxHelper.Show($"A patch in {GetType().Name} FAILED. {ex.Message}. SUBSEQUENT PATCHES HAVE NOT LOADED, CHECK LOG FOR MORE DETAILS", "ERROR", MessageBoxHelper.MessageBoxType.OK);
|
|
Application.Quit();
|
|
|
|
throw;
|
|
}
|
|
|
|
Logger.LogInfo("Completed: Aki.Custom");
|
|
}
|
|
}
|
|
}
|