using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.DI; using SPTarkov.Server.Core.Models.Spt.Config; using SPTarkov.Server.Core.Models.Spt.Mod; using SPTarkov.Server.Core.Models.Utils; using SPTarkov.Server.Core.Servers; using SPTarkov.Server.Core.Services; namespace realisticThermalScopes { public record ModMetadata : AbstractModMetadata { public override string Name { get; init; } = "realisticThermalScopes"; public override string Author { get; init; } = "FiveF"; public override List? Contributors { get; init; } public override SemanticVersioning.Version Version { get; init; } = new("2.0.0"); public override SemanticVersioning.Range SptVersion { get; init; } = new("~4.0.0"); public override List? Incompatibilities { get; init; } public override Dictionary? ModDependencies { get; init; } public override string? Url { get; init; } public override bool? IsBundleMod { get; init; } = true; public override string? License { get; init; } = "MIT"; public override string ModGuid { get; init; } = "com.fivef.realisticthermalscopes"; } [Injectable(TypePriority = OnLoadOrder.PostSptModLoader)] public class editBundle(ISptLogger logger) : IOnLoad { public Task OnLoad() { return Task.CompletedTask; } } [Injectable(TypePriority = OnLoadOrder.PostDBModLoader + 1)] public class editDatabase( ISptLogger logger, DatabaseService databaseService) : IOnLoad { public Task OnLoad() { changeSensForTherScopes(); return Task.CompletedTask; } private void changeSensForTherScopes() { var itemsTable = databaseService.GetTables().Templates.Items; //FLIR RS-32 2.25-9x 35mm 60Hz thermal riflescope var flirProps = itemsTable["5d1b5e94d7ad1a2b865a96b0"].Properties; double fovZoomInGame = 0.55; //~0.05 spt3.11 flirProps.Zooms = new List> { new List { 2.25, 9 } }; flirProps.AimSensitivity = new List> { new() { fovZoomInGame / ((List>)flirProps.Zooms)[0][0], fovZoomInGame / ((List>)flirProps.Zooms)[0][1] } }; //SIG Sauer ECHO1 1-2x30mm 30Hz thermal reflex scope var echo1Props = itemsTable["6478641c19d732620e045e17"].Properties; fovZoomInGame = 0.564; //~0.05 spt3.11 echo1Props.Zooms = new List> { new List { 1, 2, 1, 2 } }; var echo1PropsTrueZoom = new List { 1.75, 3.5, 1.75, 3.5 }; var newEcho1AimSensitivity = new List { fovZoomInGame / echo1PropsTrueZoom[0], fovZoomInGame / echo1PropsTrueZoom[1], fovZoomInGame / echo1PropsTrueZoom[2], fovZoomInGame / echo1PropsTrueZoom[3] }; echo1Props.AimSensitivity = new List> { newEcho1AimSensitivity }; //Torrey Pines Logic T12W 30Hz thermal reflex sight var t12Props = itemsTable["609bab8b455afd752b2e6138"].Properties; fovZoomInGame = 0.72; //~0.05 spt3.11 t12Props.Zooms = new List> { new List { 1 } }; t12Props.AimSensitivity = new List> { new() { fovZoomInGame / ((List>)t12Props.Zooms)[0][0] } }; //Armasight Zeus-Pro 640 2-8x50 30Hz thermal scope var zeusProps = itemsTable["63fc44e2429a8a166c7f61e6"].Properties; fovZoomInGame = 0.55; //~0.05 spt3.11 zeusProps.Zooms = new List> { new List { 2, 16, 2, 16 } }; zeusProps.AimSensitivity = new List> { new() { fovZoomInGame / ((List>)zeusProps.Zooms)[0][0], fovZoomInGame / ((List>)zeusProps.Zooms)[0][1], fovZoomInGame / ((List>)zeusProps.Zooms)[0][2], fovZoomInGame / ((List>)zeusProps.Zooms)[0][3] } }; //Cyclone Shakhin 3.7x thermal scope var shakhinProps = itemsTable["67641b461c2eb66ade05dba6"].Properties; fovZoomInGame = 0.5423; //~0.05 spt3.11 shakhinProps.Zooms = new List> { new List { 3.7 } }; shakhinProps.AimSensitivity = new List> { new() { fovZoomInGame / ((List>)shakhinProps.Zooms)[0][0] } }; //Trijicon REAP-IR thermal scope var reapProps = itemsTable["5a1eaa87fcdbcb001865f75e"].Properties; fovZoomInGame = 0.55; //~0.05 spt3.11 reapProps.Zooms = new List> { new List { 9.6, 1.2 } }; reapProps.AimSensitivity = new List> { new() { fovZoomInGame / ((List>)reapProps.Zooms)[0][0], fovZoomInGame / ((List>)reapProps.Zooms)[0][1] } }; /* const ultimaThrmProps = itemsData[`606f2696f2cb2e02a42aceb1`]._props fovZoomInGame = ; //~0.05 spt3.11 ultimaThrmProps.Zooms[0] = ; ultimaThrmProps.AimSensitivity[0] = [fovZoomInGame / ultimaThrmProps.Zooms[0][0], fovZoomInGame / ultimaThrmProps.Zooms[0][1]]; */ /* //this zeusProps.AimSensitivity = new List> { new() { ... }, new() { ... } }; //for this "AimSensitivity": [ [ ... ], [ ... ] ] */ } } }