0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 05:50:44 -05:00

430 Commits

Author SHA1 Message Date
Merijn Hendriks
accb0ab9f6 Reduce bot difficulty requests (!111)
Requires server-side changes (will need your help @TheSparta for this!).

This combined all the single bot difficulty requests into a single GET request (`/singleplayer/bot/difficulties`) with the following data structure:
```json
[
    {
        "role": "assault",
        "difficulty": "easy",
        "data": "assets/database/bots/types/assault.json difficulty easy contents"
    },
    {
        "role": "pmcbot",
        "difficulty": "normal",
        "data": "assets/database/bots/types/pmcbot.json difficulty normal contents"
    }
]
```
The request expects all roles and all their respective difficulties to be in the response.

Co-authored-by: Merijn Hendriks <merijnhendriks@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#111
Reviewed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-authored-by: Merijn Hendriks <senko-san@noreply.dev.sp-tarkov.com>
Co-committed-by: Merijn Hendriks <senko-san@noreply.dev.sp-tarkov.com>
2024-04-20 22:32:28 +00:00
Merijn Hendriks
d5fc27e383 improve-http (!110)
Ported Haru's updated HTTP code to Aki.

## Changes

- Added async support to Client
- Removed obsolete-marked code

## Impact

The code marked deprecated and scheduled for removal in 3.8.0 is removed in this PR.
Modders were already informed through IDE warnings and in the release notes, which also contained an upgrade path to the new `Aki.Common.Http.Client`.

Reviewed-on: SPT-AKI/Modules#110
Reviewed-by: Terkoiz <terkoiz@noreply.dev.sp-tarkov.com>
Co-authored-by: Merijn Hendriks <senko-san@noreply.dev.sp-tarkov.com>
Co-committed-by: Merijn Hendriks <senko-san@noreply.dev.sp-tarkov.com>
2024-04-20 22:32:16 +00:00
Dev
edf81d800c Update incorrect gclass ref inside GetNewBotTemplatesPatch 2024-04-20 22:41:11 +01:00
Dev
14b4eb2f63 merge 381 into 390 2024-04-20 22:36:42 +01:00
efa7a175c3 Exit if the user has deleted the BepInEx/plugins/spt folder (!109)
Added as a check in the PrePatch, because while users delete `BepInEx/plugins/spt` often, it would be uncommon for them to also delete the prepatcher

No idea why there's a second commit in this PR, it doesn't actually change anything. Just Git Things™

Co-authored-by: Terkoiz <terkoiz@spt.dev>
Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#109
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-04-20 21:54:26 +01:00
84cc152e17 Exit if the user has deleted the BepInEx/plugins/spt folder (!109)
Added as a check in the PrePatch, because while users delete `BepInEx/plugins/spt` often, it would be uncommon for them to also delete the prepatcher

No idea why there's a second commit in this PR, it doesn't actually change anything. Just Git Things™

Co-authored-by: Terkoiz <terkoiz@spt.dev>
Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#109
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-04-17 07:49:49 +00:00
Dev
91bc0ed1e0 Update class refs to get project building 2024-04-15 12:04:31 +01:00
Dev
ef08750adb 29704 2024-04-15 11:47:56 +01:00
83ca08ac87 381 > 390 (!108)
Co-authored-by: Kaeno <kaeno@noreply.dev.sp-tarkov.com>
Co-authored-by: Dev <dev@dev.sp-tarkov.com>
Reviewed-on: SPT-AKI/Modules#108
2024-04-15 10:36:40 +00:00
Dev
6041bea712 made AddLoot() async Task so it can be awaited 2024-04-11 16:20:15 +01:00
Dev
558d5a3f6e Added money to non-FiR list for PMCs 2024-04-08 10:07:11 +01:00
c5a0c6998d Fixed BTR exceptions introduced by previous commit (!107)
Todo:

- Fix BTR spawning in and driving around at a weird angle
  - Perhaps because the serverside BTR is missing an instance of `VehicleSuspension`
- Randomise BTR spawn time instead of always spawning at raid start
- Add spawn chance for BTR instead of guaranteed spawn in raid
- Test BTR trader services

Reviewed-on: SPT-AKI/Modules#107
Co-authored-by: Arys <arys@noreply.dev.sp-tarkov.com>
Co-committed-by: Arys <arys@noreply.dev.sp-tarkov.com>
2024-04-07 08:05:07 +00:00
Dev
b6a86e0edb 29624 2024-04-05 18:49:44 +01:00
Dev
fe9d7cafa3 29618 2024-04-05 09:30:09 +01:00
9e8cdc6469 Fixed BTR NRE at raid start, more NREs to solve (!105)
Todo:

- Fix NREs that randomly occur while the BTR is moving, relating to `ToDestinationEvent`
- Fix NRE spam upon exfiltration from raid with BTR, relating to `BTREndRaidItemDeliveryPatch`
- Enter BTR and test trader functionality

Errors were observed on Woods, not yet tested on Streets

Reviewed-on: SPT-AKI/Modules#105
Co-authored-by: Arys <arys@noreply.dev.sp-tarkov.com>
Co-committed-by: Arys <arys@noreply.dev.sp-tarkov.com>
2024-04-05 08:10:37 +00:00
6dd3a3cf99
Fix betalogoPatch 2024-04-05 00:17:33 -04:00
70d0d60198
Update modules to 29577 UNTESTED 2024-04-05 00:17:32 -04:00
Dev
9feec7ec7f
29577 2024-04-05 00:17:32 -04:00
42d2ac37dd
increase the ragdoll limits to hopefully prevent bodys falling into themselves 2024-04-05 00:17:23 -04:00
2fbaef5eff Clamp the Y velocity so bots dont go flying into the air. 2024-04-01 14:03:10 +01:00
Merijn Hendriks
9c89c31c68 Modernize HTTP v2 (!104)
This PR won't affect modders who have already updated their mods to 3.8.0. They just need to re-compile.

This is a resubmission of my previous PR (SPT-AKI/Modules#99) with additional code cleanup and fixes.
Instead of outright removing the functionality, this time I deprecate it instead (marked for removal in next release).

Requires SPT-AKI/Server#274 to function.

## Overview

- HTTP modernization
  - Adds `Aki.Common.Http.Client`, a replacement for `Aki.Common.Http.Request` and builds on top of `System.Net.Http.HttpClient`
  - Implements failsafe retries when requesting during busy connections
  - Improved debugging
  - Improved performance
  - Deprecades old request code
- Bundle system
  - Fixes remote downloaded bundles using external IP
  - Implements functional bundle caching from remote sources
  - Implements multi-threaded bundle downloads
  - Implements Unity-compatible bundle format support
  - Extensive cleanup
  - Deprecated unneccecary models

## Why?

In it's current state, the bundle system is ducktaped together in 2021, fundumentally broken and in desperate need of a cleanup and fixes.
The HTTP code hasn't been updated since 2021, and `HttpWebRequest` has been deprecated by Microsoft for a while now.
There was also a lot of opportunity left for simple performance gains that even reduces the complexity of the code.

As for why not two separate PRs (HTTP modernization, bundle rework): both were deeply interconnected. A change in one requires modification in the other. Hence the current approach.

## Testing

The code has been validated and tested by @TheSparta and me.
A large section of the code has been implemented and tested extensively by modders.

### Local

1. Start the game from 127.0.0.1
2. The game starts loading bundles from the mods path

### Remote, full re-aquire

1. Start the server from LAN IP (http.json, set host to `cmd > ipconfig` address, example: `192.168.178.32`)
2. Start the game from LAN IP
3. A folder named `user/cache/bundles` is created

### Remote, partial-aquire (deleted)

1. Ensure all bundles are cached
2. Delete one of the aquired bundles from cache
3. Start the server from LAN IP (http.json, set host to `cmd > ipconfig` address, example: `192.168.178.32`)
4. Start the game from LAN IP
5. The bundle is redownloaded

### Remote, partial-aquire (invalid crc)

1. Ensure all bundles are cached
2. Update a bundle mod with a new bundle on the same path
3. Start the server from LAN IP (http.json, set host to `cmd > ipconfig` address, example: `192.168.178.32`)
4. Start the game from LAN IP
5. The bundle is redownloaded

### Remote, use cache

1. Ensure all bundles are cached
2. Start the server from LAN IP (http.json, set host to `cmd > ipconfig` address, example: `192.168.178.32`)
3. Start the game from LAN IP
4. The game starts loading bundles from the cache path

## Risk assessment

In order to reduce friction between releases, this PR introduces a deprecation system.
Obsolete classes and methods have been marked deprecated.
These will remain available for the current release and continue to function as normal for this release.
A warning will be displayed during build when a modder relies on the deprecated functionality.
The marked classes and methods are to be removed in the next release.

The server-side changes have no impact on modders.

## Deprecation

The following classes are affected:

- `Aki.Common.Http.Request`: Replaced by `Aki.Common.Http.Request`
- `Aki.Common.Http.WebConstants`: Replaced by functionality from `System.Net.Http`
- `Aki.Custom.Models.BundleInfo`: Replaced by `Aki.Custom.Models.BundleItem`

The following methods are affected:

- `Aki.Common.Http.RequestHandler.GetData(path, hasHost)`: `hasHost` enables connection outside intended host.
- `Aki.Common.Http.RequestHandler.GetJson(path, hasHost)`: `hasHost` enables connection outside intended host.
- `Aki.Common.Http.RequestHandler.PostJson(path, json, hasHost)`: `hasHost` enables connection outside intended host.
- `Aki.Common.Http.RequestHandler.PutJson(path, json, hasHost)`: `hasHost` enables connection outside intended host.

The deprecated methods and `Aki.Custom.Models.BundleInfo` are self-contained and can be removed independently.
The deprecated classes require removal of all deprecated code at once.

Reviewed-on: SPT-AKI/Modules#104
Reviewed-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-authored-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
Co-committed-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
2024-03-29 18:43:46 +00:00
Dev
a4669f9c1e Remove bad remapping:
"GStruct419": "AchievementModelClass"
2024-03-28 15:14:06 +00:00
Dev
39483b13c3 Rename bad remapping of IBallisticsCalculator to ISubInteractions 2024-03-26 22:48:55 +00:00
Merijn Hendriks
245f21c3d8 Improve bundle documentation (!101)
Most of this code was (re-)written in 0.12.9, almost 3 years ago.
Current understanding of how it worked was limited, so I went back and broke it until I understood it properly.

I added comments where I could and slightly altered the logic of `GetManifestJson` to make it easier to read.

Regarding removal of `GetManifestBundle`: you can't. While `Windows.json` contains most of the bundle info, some info (like `Doge`) resides outside of this. Removing `GetManifestBundle` results in the game failing to load.

Reviewed-on: SPT-AKI/Modules#101
Co-authored-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
Co-committed-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
2024-03-25 09:53:20 +00:00
Dev
f3df1e319c Update mappings 2024-03-24 17:40:52 +00:00
701f676085 Decapitalize BepInEx sub-directories (!100)
This reverts changes to the directory paths made in commit: c7bc0b05143c7062a0c70150cb872b5070f4859c

fixes [SPT-AKI/Issues#588](SPT-AKI/Issues#588)

Co-authored-by: MadByte <madbyte@tuta.io>
Reviewed-on: SPT-AKI/Modules#100
Co-authored-by: MadByte <madbyte@noreply.dev.sp-tarkov.com>
Co-committed-by: MadByte <madbyte@noreply.dev.sp-tarkov.com>
2024-03-24 09:09:43 +00:00
b327096980 Ensure we only alter Playerscavs IsAi Data 2024-03-23 12:48:51 +00:00
44748dc0a6 Fix mounted Turrets causing errors 2024-03-23 11:29:42 +00:00
3aa514a5e8 Reworked ArmorDamageCounterPatch 2024-03-22 20:25:38 +00:00
a77fc7f036 Changed the way we count shot ammo. Fixed NRE when player is null when trying to calculate armor damage 2024-03-22 18:45:49 +00:00
c29589768d Add Patches to add extra data to end of raid screen 2024-03-21 15:21:57 +00:00
3885b9e585 Fix ref 2024-03-21 11:10:37 +00:00
df2df290f4 Update refs with updated remapping 2024-03-21 11:09:00 +00:00
Dev
831bf36327 Add additional remappings 2024-03-21 11:05:48 +00:00
37ae603982 Start of adding missing stats 2024-03-21 11:04:53 +00:00
Dev
065c446e83 Update patch to skip doing changes if group owner is player - same as client 2024-03-20 17:38:32 +00:00
497e581c1e Create an exfil dumper patch for aki-debugging (!98)
This patch can be used to dump the data contained in the `allExtracts.json` files in the server locations database. When enabled, load into each map sequentially, and the extract data will be dumped to `ExfilDumps/{mapName}/allExtracts.json`, ready to be copy/pasted into the server `database/locations` directory

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#98
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-03-20 09:45:46 +00:00
8443e6b5d3 Update Description of command 2024-03-19 12:54:17 +00:00
f43e907193 Fix patch looking for wrong Wildspawntype enum 2024-03-19 12:15:56 +00:00
b769a87b89 Add comment to explain expected behavior. 2024-03-19 11:18:34 +00:00
9d8c285094 Add a console command to reload client/profile 2024-03-19 09:43:17 +00:00
Dev
00f0d786f9 Add additional class remappings
Update readme to include additional info on powershell install
2024-03-18 16:37:54 +00:00
7650b751ae Last small optimization. 2024-03-17 18:18:03 +00:00
aa786f44a0 Optimization of getting mines and filtering them to only enable/disable lightkeepers mines. 2024-03-17 16:43:44 +00:00
b1e1841311 Small optimization 2024-03-17 16:00:40 +00:00
de325c8b0d remove CulistsPriestEvent and RavangeZryachiyEvent from running IsEnemyPatch Letting them use BSG logic instead.
Added a patch to handle Closing all extracts but 1 for when cultist ritual succeeds in halloween event.
Halloween Event doesnt seem to work well when map has newspawn system enabled. I think bots are getting stuck getting loaded. causing delayed spawns of cultists.
2024-03-17 12:47:59 +00:00
0afc0dd93b Fix nlog string formatting removing useful information, and throwing an exception in certain situations (!97)
Fixes exception thrown when trace logging is enabled and you accept a quest

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#97
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-03-17 08:56:30 +00:00
Cj
293fa8d90c Enable BSG logging (!96)
Needs merged with: SPT-AKI/Server#262

Short story first: Last night I was poking around the code as I always do looking for the cause of an exception and got sick and tired of the generic bad exceptions we always work off of. So I fixed it.

This allows us access to BSG's internal logging using Nlog. This is useful for everybody. Not just SPT dev's, but mod dev's alike. It can be enabled from `core.json` with the option to send the output to the server.

Here's an example of the improvement, its huge. Bepinex console is the gerneric logging we always use, the editor behind it is the improved logging from Nlog. Its night and day.

![image](/attachments/491dd8b6-e89a-4809-b19e-c5906ab6989e)

The levels are based off of Nlog ordinals where low is more logging, high is less. (Stupid I know, but what can you do)

Verbosity is as follows:
 * In all cases, except off, better exceptions will be logged.
 * to see the logging output in your bepinex logs, make sure you have debug logging enabled in bepinex.
 * WARNING: trace-info logging will quickly create log files in the megabytes.
 * 0 - trace
 * 1 - debug
 * 2 - info
 * 3 - warn
 * 4 - error
 * 5 - fatal
 * 6 - off

Co-authored-by: Cj <161484149+CJ-SPT@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#96
Co-authored-by: Cj <cj@noreply.dev.sp-tarkov.com>
Co-committed-by: Cj <cj@noreply.dev.sp-tarkov.com>
2024-03-16 21:04:00 +00:00
Dev
540bf9fb59 Fix mapping error 2024-03-15 21:46:58 +00:00
Dev
690ad0faa6 Fix mapping issue 2024-03-15 16:47:11 +00:00