Updates Server README (!306)

- Updates the Server project README to include additional information about installation, development, and contribuation guidelines.
- Moves the feature list to a dedicated FEATURE.md file (linked from the README.md).
- Reviewed the FEATURES.md file to clean it up a little bit.

Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/306
Co-authored-by: Refringe <me@refringe.com>
Co-committed-by: Refringe <me@refringe.com>
This commit is contained in:
Refringe 2024-04-25 17:26:47 +00:00 committed by chomp
parent dce2ccbcfd
commit fbf1d7f7fb
4 changed files with 420 additions and 329 deletions

319
FEATURES.md Normal file
View File

@ -0,0 +1,319 @@
# Features
## Table of Contents
- [Profiles](#Profiles)
- [Progression](#progression)
- [Starting Profile Types](#starting-profile-types)
- [Bots](#bots)
- [AI Types](#ai-types)
- [Generation](#generation)
- [Inventory](#inventory)
- [Traders](#traders)
- [Flea market](#flea-market)
- [Quests](#quests)
- [Hideout](#hideout)
- [Weapon Building](#weapon-building)
- [Raids](#raids)
- [Messages](#messages)
- [Events](#events)
- [Modding](#modding)
## Profiles
### Progression
The player profile is stored as a JSON file, allowing for changes to persist across server restarts. The profile contains the following information for both your PMC and Scav player characters:
- Task Conditions
- Account Bonuses
- Model Selection
- Health
- Energy, Hydration, & Temperature
- Hideout Build & Production Status
- Items (Inventory, Insured, Quest, Wishlist)
- Inventory
- Quest Progress
- Flea Market Rating & Current Offers
- Common and Mastering Skills
- Various Raid Stats
- Trader Status and Loyalty Levels
- Extract Counts
- Achievements
### Starting Profile Types
The following profile types are available to start with when creating an account in the Launcher:
- Standard Profiles:
- Standard
- Left Behind
- Prepare To Escape
- Edge Of Darkness
- Custom profiles
- SPT Easy Start
- Lots of money, quality of life skills to level 20, and player to level 69.
- SPT Zero to Hero
- No money, skills, trader reputation, or items. Start with a knife.
- SPT Developer
- Developer testing profile, player to level 69, max skills, and max trader reputation.
- USEC will have all quests ready to start.
- BEAR will have all quests ready to hand in.
## Bots
### AI Types
Bot data is emulated to mimic live bots as closely as possible. This includes the following bot types:
- Scavs
- Regular Scav (*assault*)
- Sniper Scav (*marksman*)
- Tagged & Cursed (*cursedAssault*)
- Bosses
- Reshalla (*bossBully*)
- Guard (*followerBully*)
- Glukhar (*bossGluhar*)
- Assault Guard (*followerGluharAssault*)
- Scout Guard (*followerGluharScout*)
- Security Guard (*followerGluharSecurity*)
- Sniper Guard (*followerGluharSnipe*)
- Killa (*bossKilla*)
- Shturman (*bossKojainy*)
- Guard (*followerKojaniy*)
- Sanitar (*bossSanitar*)
- Guard (*followerSanitar*)
- Tagilla (*bossTagilla*)
- Knight (*bossKnight*)
- Big Pipe (*followerBigPipe*)
- Bird Eye (*followerBirdEye*)
- Zryachiy (*bossZryachiy*)
- Guard (*followerzryachiy*)
- Kaban (*bossBoar*)
- Sniper Guard (*bossBoarSniper*)
- Guard (*followerBoar*)
- Cultists
- Priest (*sectantPriest*)
- Warrior (*sectantWarrior*)
- Raiders (*pmcBot*)
- Rogues (*exUsec*)
- Santa (*gifter*) - *partially implemented*
*PMCs are generated with a random type from a sub-set of the above list.*
*Some bot types are only available on some maps.*
### Generation
Bots are generated with the following characteristics:
- All Bots:
- Weapons - *Weighted, semi-randomly selected*
- Ammunition - *Weighted, semi-randomly selected*
- Gear - *Weighted, semi-randomly selected*
- Headgear Attachments - *Weighted, semi-randomly selected*
- PMC Bots
- AI Type - *Randomly chosen from sub-set of possible bot types*
- Dogtags - *Random level & name*
- Chance of name being the name of a contributor to the project
- Voices - *Randomly chosen Bear/USEC voices for each faction*
Other bot generation systems/features include:
- Loot item blacklist & whitelist
- Loot items can be configured to be limited to a certain number based on bot type
- Level-relative gear for PMCs from levels 1-15 and 15+
- Level 1-15 bots have lower-tier items
- Level 15+ bots have access to almost anything
- Randomised gear and weapon durability based on bot type and level
## Inventory
The inventory system includes the following features:
- Move, Split, and Delete Item Stacks
- Add, Modify, and Remove Item Tags
- Armor and Weapon Repair Kits
- Auto-sort Inventory
- Out-of-raid Healing, Eating, & Drinking
- Special Player Slots
## Traders
The trader system includes the following features:
- Buy and sell items from each trader
- Listed items are refreshed on a timer based on the trader
- Purchase limits per refresh period
- Tracks currency spent through each trader
- Loyalty levels
- Reputation
- Item repair from Prapor, Skier, and Mechanic
- Unlock and purchase clothing from Ragman
- Insurance from Therapist and Prapor
- Chance for items to be returned, higher chance for more expensive trader
- Chance parts will be stripped from returned weapons based on value
- Post-raid Therapist Healing
- Fence Item Assortment
- Lists random items for sale
- Emulated system of 'churn' for items sold by Fence
## Flea market
The flea market system has been build to simulate the live flea market as closely as possible. It includes the following features:
- Simulated Player Offers
- Generated with random names, ratings, and expiry times
- Variable offer prices based on live item prices (~20% above and below)
- Weapon presets as offers
- Barter offers
- Listed in multiple currencies (Rouble, Euro, and Dollar)
- Dynamically adjust flea prices that drift below trader price
- Buy Items
- Sell Items
- Generates listing fee
- Increase flea rating by selling items
- Decrease flea rating by failing to sell items
- Items purchased by simulated players
- Offer price effects chance that item will be purchased
- Filtering
- By specific item
- By link to item
- Text search by name
- By currency
- By price range
- By condition range
- By Traders, Players, or Both
- To include barter offers (or not)
- Sorting by
- Rating
- Name
- Price
- Expiry
## Quests
The quest system includes the following features:
- Accurate Quest List - *roughly 90% implemented*
- Trader Quests - *Accept, Turn-in Items, and Complete*
- Daily Quests - *Accept, Replace, Turn-in Items, Complete*
- Simulates Daily and Weekly Quests
- Quest Replacement Fee
- Scav Quests
- Trader items unlock through completion of quests
- Receive messages from traders after interacting with a quest
- Item rewards passed through messages
## Hideout
The hideout has the following features implemented:
- Areas
- Air Filter
- Filter Degradation
- Boosts Skill Levelling
- Bitcoin Farm
- Generation Speed Dependent on Number of Graphics Cards
- Booze Generator
- Crafts Moonshine
- Generator
- Fuel Degradation
- Heating
- Energy Regeneration
- Negative Effects Removal
- Illumination
- Intel Centre
- ~~Unlocks Fence's Scav Quests~~ *not implemented - workaround: unlocks at level 5*
- ~~Reduces Insurance Return Time~~ *not implemented*
- Quest Currency Reward Boost
- Lavatory
- Library
- Medstation
- Nutrition Unit
- Rest Space
- Scav Case
- Custom Reward System
- Security
- Shooting Range
- Solar Power
- Stash
- Upgrades grant larger stash sizes
- Vents
- Water Collector
- Workbench
- Unlocks the ability to repair items
- Christmas Tree
- Item Crafting
- Items are marked found-in-raid on completion
- Continues to track crafting progress even when server is not running
## Weapon Building
The weapon building system has been fully implemented:
- Create Weapon Presets
- Saving Presets
- Load Presets
## Raids
The in-raid systems included are as follows:
- Maps
- Customs
- Factory Day
- Factory Night
- Ground Zero
- Interchange
- Laboratory
- Lighthouse
- Reserve
- Shoreline
- Streets
- Woods
- Loot
- Loot spawning has been generated using over 100,000 EFT offline loot runs.
- Static Loot (in containers)
- Each container type can contain items appropriate to that container type found in offline EFT.
- Loose Loot (on map)
- Randomised loose items found on map in offline EFT.
- Airdrops
- Randomised Spawn Chance
- Request with Red Flare
- Crate Types:
- Weapons & Armour
- Food & Medical
- Barter Goods
- Mixed - *mixture of any of the above items*
- Supported Maps:
- Customs
- Interchange
- Lighthouse
- Reserve
- Shoreline
- Streets
- Woods
- Persisted Raid Damage - *extracting with injury will persist injury out of raid*
- Scav Raids - *raid time and items are reduced to simulate entering a raid late*
## Messages
A messaging system has been implemented to allow for the following functionality:
- Receive messages (with item attachments) from traders or "system"
- Pin/unpin senders within the message list
- Receive all (or individual) attachments
- Send messages to "Commando" friend to execute server commands
## Events
The following events have been implemented and have a set time period for when they will be active:
- Snow
- Halloween
- Christmas
## Modding
- The Server project has been built to allow for extensive modifications to nearly any aspect and system used.
- [Example mods](https://dev.sp-tarkov.com/chomp/ModExamples) are provided that cover the most common modding methods.

412
README.md
View File

@ -1,352 +1,122 @@
# Server
# Single Player Tarkov - Server Project
Modding framework for Escape From Tarkov
This is the Server project for the Single Player Tarkov mod for Escape From Tarkov. It can be run locally to replicate responses to the modified Escape From Tarkov client.
[![Build Status](https://drone.sp-tarkov.com/api/badges/SPT-AKI/Server/status.svg?ref=refs/heads/development)](https://drone.sp-tarkov.com/SPT-AKI/Server)
[![Quality Gate Status](https://sonar.sp-tarkov.com/api/project_badges/measure?project=AKI&metric=alert_status&token=d3b87ff5fac591c1f49a57d4a2883c92bfe6a77f)](https://sonar.sp-tarkov.com/dashboard?id=AKI)
# Table of Contents
## Privacy
SPT is an open source project. Your commit credentials as author of a commit will be visible by anyone. Please make sure you understand this before submitting a PR.
Feel free to use a "fake" username and email on your commits by using the following commands:
```bash
git config --local user.name "USERNAME"
git config --local user.email "USERNAME@SOMETHING.com"
```
- [Features](#features)
- [Installation](#installation)
- [Requirements](#requirements)
- [Initial Setup](#initial-setup)
- [Development](#development)
- [Commands](#commands)
- [Debugging](#debugging)
- [Mod Debugging](#mod-debugging)
- [Contributing](#contributing)
- [Branches](#branchs)
- [Pull Request Guidelines](#pull-request-guidelines)
- [Tests](#tests)
- [License](#license)
## Requirements
## Features
- NodeJS (with npm)
- Visual Studio Code
- git [LFS](https://git-lfs.github.com/)
For a full list of features, please see [FEATURES.md](FEATURES.md).
## Observations
## Installation
- The server was tested to work with **NodeJS v20.11.1**, if you are using a different version and experiencing difficulties change it before looking for support
- If you are updating a branch you've had for some time, run `npm ci` before running any tasks. This will run the clean and install target from npm.
- You can debug your mods using the server, just copy your mod files into the `user/mods` folder and put breakpoints on the **JS** files. **DO NOT** contact the dev team for support on this.
### Requirements
## Pulling
- Run `git lfs fetch` and `git lfs pull` to acquire loot files
This project has been built in [Visual Studio Code](https://code.visualstudio.com/) (VSC) using [Node.js](https://nodejs.org/). We recommend using [NVM](https://github.com/coreybutler/nvm-windows) to manage installation and switching Node versions. If you do not wish to use NVM, you will need to install the version of Node.js listed within the `.nvmrc` file manually.
## Setup
There are a number of VSC extensions that we recommended for this project. VSC will prompt you to install these when you open the workspace file. If you do not see the prompt, you can install them manually:
1. Visual Studio Code > File > Open Workspace... > `project\Server.code-workspace`
2. Visual Studio Code > Terminal > Run Task... > npm > npm: Install
- [EditorConfig](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) - Editor Settings Synchronization
- [Dprint Code Formatter](https://marketplace.visualstudio.com/items?itemName=dprint.dprint) - Formatting on Save
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) - Linting for Coding Issues & Naming Conventions
- [Biome](https://marketplace.visualstudio.com/items?itemName=biomejs.biome) - Linting for Coding Standards
- [Vitest](https://marketplace.visualstudio.com/items?itemName=vitest.explorer) - Debugging Tests
- [SPT ID Highlighter](https://marketplace.visualstudio.com/items?itemName=refringe.spt-id-highlighter) - Converts IDs to Names
## Build
This is for preparing for a release, not to run locally.
### Initial Setup
**Mode** | **Location**
-------- | -----------------------------------------------------------------
release | Visual Studio Code > Terminal > Run Build Task... > build:release
debug | Visual Studio Code > Terminal > Run Build Task... > build:debug
To prepare the project for development you will need to:
## Test / Run locally
1. Run `git clone https://dev.sp-tarkov.com/SPT-AKI/Server.git server` to clone the repository.
2. Run `git lfs pull` to download LFS files locally.
2. Open the `project/mod.code-workspace` file in Visual Studio Code (VSC).
3. Run `nvm use 20.11.1` in the VSC terminal.
4. Run `npm install` in the VSC terminal.
Visual Studio Code > Run > Start Debugging
## Development
# Features
### Commands
## Progression
Player profile is stored in SPT folder as a JSON file, allowing for changes to persist
- Scav:
- Stats increase by doing scav raids
- Skills increase by doing scav raids
- Scav reputation system (Karma)
- Scavs hostile below certain level
- Scav run cooldown adjustment
- Scav follow chance adjustment
- Scav case
- ~~Completion time adjustment~~ NOT IMPLEMENTED
- ~~Equipment chance adjustment~~ NOT IMPLEMENTED
- Bosses hostile below certain level
- ~~Exfil price adjustment~~ NOT IMPLEMENTED
- Improved gear with higher rep
- Increase rep by exiting through car extracts
- PMC:
- Stats increase by doing PMC raids
- Skills increase by doing PMC raids
- Hydration/food
- Increase out of raid
- Post-raid levels are persisted to profile
- Raid stat tracking
- Raid count
- Survived count
- KIA count
- MIA count
- AWOL count
- Kills count
The following commands are available after the initial setup. Run them with `npm run <command>`.
## Bots
| Command | Description |
|--------------------------|----------------------------------------------------------------------|
| `check:circular` | Check for circular dependencies in the project. |
| `lint` | Lint the project for coding standards. |
| `lint:fix` | Attempt to automatically fix coding standard issues. |
| `style` | Check the project for style/formatting issues. |
| `style:fix` | Attempt to automatically fix style/formatting issues. |
| `test` | Run all tests. |
| `test:watch` | Run tests in watch mode. Tests will re-run when files are changed. |
| `test:coverage` | Run tests and generate a coverage report. |
| `test:ui` | Run tests in UI mode. This will open a browser window to view tests. |
| `build:release` | Build the project for release. |
| `build:debug` | Build the project for debugging. |
| `build:bleeding` | Build the project on the bleeding edge. |
| `build:bleedingmods` | Build the project on the bleeding edge with mods. |
| `run:build` | Run the project in build mode. |
| `run:debug` | Run the project in debug mode. |
| `run:profiler` | Run the project in profiler mode. |
| `gen:types` | Generate types for the project. |
| `gen:docs` | Generate documentation for the project. |
- Emulated bots:
- assault (scav)
- bossBully (Reshalla)
- bossGluhar
- bossKilla
- bossKnight
- bossKojainy (Shturman)
- bossSanitar
- bossTagilla
- bossZryachiy
- bossBoar (Kaban)
- bossBoarSniper
- curedAssault
- exUsec (Rogue)
- followerBigPipe
- Grenade launcher
- followerBirdEye
- followerBoar
- followerBully
- followerGluharAssault
- followerGluharScout
- followerGluharSecurity
- followerGluharSnipe
- followerKojaniy
- followerSanitar
- followerzryachiy
- gifter (Santa)
- Gives gifts (partially implemented)
- marksman
- pmcBot (Raider)
- sectantPriest (Cultist)
- sectantWarrior (Cultist)
- Gear
- Semi-randomised gear chosen with weighting system
- Randomised durability of gear
- Ammo
- Ammo weighting system to mimic live
- Loot
- Semi-randomised loot
- Item type spawn limit system
- Per-map AI types
### Debugging
## PMCs
- Simulated PMC players
- Custom weapons
- Semi-randomly generated with weighting system
- Semi-randomly chosen ammo with weighting system
- Custom gear
- Semi-randomly generated with weighting system
- Custom headgear
- Randomised attachments with percentage based chance to appear
- Face shields
- Flashlights
- Randomised AI brains
- Chooses random AI behaviour from pool of possible bot types (e.g. raider/rogue/killa)
- Dogtags
- Random level
- Random name
- Voices
- Bear/usec voices for each faction
- Loot item blacklist/whitelist
- Highly configurable in config
- Level-relative gear for PMCs from levels 1-15 and 15+
- 1-15 bots have lower-tier items
- 15+ bots have access to anything
To debug the project in Visual Studio Code, you can select the `Run` tab and then select the `Start Debugging` option (or the `F5` shortcut). This will start the server in debug mode, attaching a debugger to code execution, allowing you to set breakpoints and step through the code as it runs.
## Inventory
- Move/split/delete stacks
- Tags (add/modify/remove)
- Armor/weapon kit item repair
- Auto-sort
- Out of raid healing
- Out of raid eating
- Special slots (compass etc)
### Mod Debugging
## Traders
- Buy/Sell
- Listed items are refreshed every hour
- purchase limits per refresh period
- Track sold rouble count
- Loyalty levels
- Build reputation
- Item repair
- Calculate randomised durability level based on item type/values
- Alternate clothing from Ragman
- Buy/unlock new clothing
- Insurance
- chance for items to be returned - higher chance for more expensive trader
- Chance parts will be stripped from returned weapons
- Fence
- Lists random items for sale
- Emulated system of 'churn' for items sold by fence
- every 4 minutes 20% of fences' items are replaced
- Configurable through config
To debug a server mod in Visual Studio Code, you can copy the mod files into the `user/mods` folder and then start the server in [debug mode](#debugging). You should now be able to set breakpoints in the mod's Typescript files and they will be hit when the server runs the mod files.
## Flea market
- Buy and sell items
- Prices pulled from live data
- Listing tax fee
- Offer filtering
- Offer search
- Filter by item
- Linked search
- Simulated player offers
- Generated with random names/ratings/expiry times
- Variable prices based on live price (20% above/below)
- Weapon presets as offers
- Bartering offers
- Listed currency
- Rouble
- Euro
- Dollar
- Rating
- Increase flea rating by selling items
- Decrease flea rating by failing to sell items
- Will be purchased by simulated players
- Greater chance listed item will be purchased the lower it is listed for
- Adjust flea prices that are massively below trader buy price
- Receive purchased item through mail from seller
- Sorting by
- Rating
- Price
- Name
- Configurable using config
## Contributing
## Quests
- ~~Accurate quest list~~ INCOMPLETE (85% complete)
- Trader quests
- Accept/Complete
- Daily Quests
- Simulated system of daily quests
- Replace daily quest
- Replace quest with new one
- Charged fee
- Scav daily quests
- Types
- Elimination
- Exit location
- Find
- Trader item unlocks through completion of quests
- Receive mail from traders after accepting/completing/failing a quest
- Item rewards given through mail
We're really excited that you're interested in contributing! Before submitting your contribution, please consider the following:
## Hideout
- Areas supported
- Air filter
- Air filter degradation speed calculation
- Skill levelling boost + 40%
- Bitcoin farm
- Coin generation speed calculation
- Booze generator
- Create moonshine
- Generator
- Fuel usage calculation
- Heating
- Energy regen rate
- Negative effects removal rate x2
- Illumination
- Intel centre
- ~~Unlocks scav tasks from fence~~ NOT IMPLEMENTED - unlocks at level 5
- ~~Reduces insurance return time by 20%~~ NOT IMPLEMENTED
- Quest money reward boost
- Lavatory
- Library
- Medstation
- Nutrition unit
- Rest space
- Scav case
- Custom reward system
- Configurable in config
- Security
- Shooting range
- Solar power
- Stash
- Gives bonus storage space
- Vents
- Water collector
- Workbench
- Christmas tree
- Item crafting
- Found in raid on completion
- Crafts when server not running
### Branchs
## Weapon building
- Create weapon presets
- Saving of presets
- __master__
The default branch used for the latest stable release. This branch is protected and typically is only merges with release branches.
- __3.9.0-DEV__
Development for the next minor release of SPT. Minor releases target the latest version of EFT. Late in the minor release cycle the EFT version is frozen for stability to prepare for release. Larger changes to the project structure may be included in minor releases.
- __3.8.1-DEV__
Development for the next hotfix release of SPT. Hotfix releases include bug fixes and minor features that do not effect the coding structure of the project. Special care is taken to not break server mod stability. These always target the same version of EFT as the last minor release.
## Raids
- Supported maps
- Customs
- Factory day
- Factory night
- Reserve
- Woods
- Lighthouse
- Laboratory
- Shoreline
- Streets
- Loot
- Generated from over 30,000 loot runs on live, spawn chances calculated from all runs to give fairly accurate depiction of live loot.
- Static loot (containers)
- Each container type can contain items appropriate to that type
- Loose loot
- Randomised loose items found on map
- Airdrops
- Randomised chance of spawning
- Fire red flare to request an airdrop
- Drops 'themed' crates:
- Weapons / armor
- Only weapons and armor
- Food / medical
- Only food and medical items
- Barter goods
- Only barter goods
- Mixed
- A mixture of any of the above items
- Drops lootable crate in:
- Customs
- Reserve
- Woods
- Lighthouse
- Shoreline
- Streets
- Can be adjusted via config file
- Raid damage
- Exiting a raid with injury to player character will be persisted out of raid
- Post-raid therapist healing
- Scav Raids
- Adjusted time when running raids as scav
- Simulated loot being taken by other players the later into the raid player starts
### Pull Request Guidelines
## Messages
- Receive from traders
- Pin/unpin senders
- Accept all attachments
- Accept individual mail attachment
- __Keep Them Small__
If you're fixing a bug, try to keep the changes to the bug fix only. If you're adding a feature, try to keep the changes to the feature only. This will make it easier to review and merge your changes.
- __Perform a Self-Review__
Before submitting your changes, review your own code. This will help you catch any mistakes you may have made.
- __Remove Noise__
Remove any unnecessary changes to white space, code style formatting, or some text change that has no impact related to the intention of the PR.
- __Create a Meaningful Title__
When creating a PR, make sure the title is meaningful and describes the changes you've made.
- __Write Detailed Commit Messages__
Bring out your table manners, speak the Queen's English and be on your best behaviour.
## Modding
- Extensive system that allows for the modification of nearly any aspect of SPT
- Example mods covering a good slice of modding capabilities
### Style Guide
## Misc
- Profiles
- Standard/Left Behind/Prepare To Escape/Edge Of Darkness
- Custom profiles
- SPT Easy start
- Lots of money / some QoL skills level 20 / level 69
- SPT Zero to hero
- No money, skills, trader rep or items, only a knife
- SPT Developer
- Testing profile, level 69, most skills maxed, max trader rep
- USEC have all quests ready to start
- BEAR have all quests ready to hand in
- Note system
- Add
- Edit
- Delete
- Extensive config system
- Alter how SPT works
- Holiday themes in hideout on appropriate days
- Halloween
- Christmas
We use Dprint to enforce a consistent code style. Please run `npm run style` and/or `npm run style:fix` before submitting your changes. This is made easier by using the recommended VSC extensions to automatically format your code whenever you save a file.
## Code
- TypeScript
- Majority of EFT request/response classes passed from client to server have been mapped
- Unit Tests
- Supports tests via vitest
- Dependency injection
- Config files accessible from `Aki_Data\Server\configs` / `project\assets\configs`
### Tests
We have a number of tests that are run automatically when you submit a pull request. You can run these tests locally by running `npm run test`. If you're adding a new feature or fixing a bug, please conceder adding tests to cover your changes so that we can ensure they don't break in the future.
## License
This project is licensed under the NCSA Open Source License. See the [LICENSE](LICENSE.md) file for details.

10
project/.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,10 @@
{
"recommendations": [
"EditorConfig.EditorConfig",
"dprint.dprint",
"dbaeumer.vscode-eslint",
"biomejs.biome",
"vitest.explorer",
"refringe.spt-id-highlighter"
]
}

View File

@ -4,14 +4,6 @@
"path": "."
}
],
"extensions": {
"recommendations": [
"EditorConfig.EditorConfig",
"dprint.dprint",
"dbaeumer.vscode-eslint",
"biomejs.biome"
]
},
"settings": {
"window.title": "SPT-AKI Server",
"editor.formatOnSave": true,