Archived
Adding Mods w/Symlink
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
---
|
||||
stages:
|
||||
- build
|
||||
- upload
|
||||
|
||||
build:
|
||||
stage: build
|
||||
image: node:22
|
||||
artifacts:
|
||||
paths:
|
||||
- build
|
||||
script:
|
||||
- npm install
|
||||
- npm run build
|
||||
|
||||
upload:
|
||||
image: curlimages/curl:latest
|
||||
stage: upload
|
||||
cache:
|
||||
key: tooling
|
||||
paths:
|
||||
- build
|
||||
rules:
|
||||
- if: '$CI_COMMIT_TAG'
|
||||
script:
|
||||
- |
|
||||
OUTPUT_FILE=$(mktemp)
|
||||
HTTP_CODE=$(curl --silent --output $OUTPUT_FILE --write-out "%{http_code}" --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/flir-betterkeysng.zip "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/betterkeys-ng/${CI_COMMIT_TAG}/flir-betterkeysng.zip")
|
||||
echo "return $HTTP_CODE"
|
||||
cat $OUTPUT_FILE
|
||||
if [[ ${HTTP_CODE} -lt 200 || ${HTTP_CODE} -gt 299 ]] ; then
|
||||
exit 1
|
||||
fi
|
||||
@@ -0,0 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## [1.3.2] - 2024/12/15
|
||||
|
||||
- Russian translation thanks to https://hub.sp-tarkov.com/user/66649-eugenix/
|
||||
|
||||
## [1.3.1] - 2024/12/13
|
||||
|
||||
- Ported to SPT 3.10
|
||||
@@ -0,0 +1,23 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 Tyler Martin
|
||||
Copyright (c) 2023 Max Lo
|
||||
Copyright (c) 2024 flir
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,40 @@
|
||||
# BetterKeys-Updated
|
||||
|
||||
Better key information for SPT-AKI.
|
||||
Originally by https://github.com/SirTyler/BetterKeys
|
||||
|
||||
updated by maxloo2 https://github.com/maxloo2/betterkeys-updated
|
||||
|
||||
then ported to 3.10 by flir https://github.com/flir063/betterkeys-ng
|
||||
|
||||
## Downloads
|
||||
|
||||
The releases can be found [here](https://gitlab.com/flir063-spt/betterkeys-ng/-/packages), just click on the desired
|
||||
version and then scroll to the bottom of the page to the "assets" section
|
||||
you will find a zipfile with the content of the tagged version.
|
||||
|
||||
## Features & Changes
|
||||
|
||||
- Colored background for keys and keycards according to which map they belongs to.
|
||||
- Maps, Extracts, Quests and Loot information in the item descriptions.
|
||||
- **[New]** Add description for junk keys (previously keys that are not used anywhere are not indicated as such by the mod)
|
||||
- **[New]** All features can be toggled on/ off in `config.json` (see below).
|
||||
- **[Updated]** Auto-update from GitHub: key information and locales can be updated without redownloading the whole mod.
|
||||
- **[Removed]** Key Tier List (I don't think it was actually enabled anyway).
|
||||
|
||||
Please refer to the original mod for more/ legacy descriptions: https://hub.sp-tarkov.com/files/file/895-better-keys/
|
||||
|
||||
## config.json
|
||||
|
||||
```JSON
|
||||
{
|
||||
"enableAutoUpdate": false, // enable auto update from GitHub (disabled by default)
|
||||
"backgroundColor": true, // toggle background colors
|
||||
"descriptionInfo": true, // toggle item descriptions
|
||||
"yellowMarkedKeys": false, // when true, marked keys are always yellow (vanilla behavior)
|
||||
"requiredInQuests": true, // Toggle Quests Info
|
||||
"requiredForExtracts": true, // toggle Extracts Info
|
||||
"behindTheLock": true, // toggle Loot Info
|
||||
"backgroundColors": {...} // Please refer to config/README.md
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,15 @@
|
||||
# List of color codes used
|
||||
|
||||
- `black` = Junk Keys (normal weapons in vanilla)
|
||||
- `blue` = Customs, Ground Zero (weapon mods in vanilla)
|
||||
- `yellow` = Marked Keys (same in vanilla)
|
||||
- `green` = Factory, Streets of Tarkov
|
||||
- `red` = Lighthouse
|
||||
- `violet` = Reserve (almost all reserve keys in vanilla)
|
||||
- `orange` = Shoreline (quest items in vanilla)
|
||||
- `tracerYellow` = Bright Yellow/Golden
|
||||
- `tracerGreen` = Woods (green in green, I see what you did there SirTyler!)
|
||||
- `tracerRed` = Interchange
|
||||
- `default` = White Background, common for a lot of items in vanilla (barter, gear, etc.)
|
||||
|
||||
Might work with Color Coverter API for more colors, but I have not tested it myself yet.
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"enableAutoUpdate": false,
|
||||
"github": "https://raw.githubusercontent.com/flir/betterkeys-ng/main",
|
||||
"backgroundColor": true,
|
||||
"descriptionInfo": true,
|
||||
"yellowMarkedKeys": false,
|
||||
"requiredInQuests": true,
|
||||
"requiredForExtracts": true,
|
||||
"behindTheLock": true,
|
||||
"backgroundColors": {
|
||||
"Factory": "green",
|
||||
"Customs": "blue",
|
||||
"Woods": "tracerGreen",
|
||||
"Shoreline": "orange",
|
||||
"Interchange": "tracerRed",
|
||||
"The Lab": "tracerYellow",
|
||||
"Reserve": "violet",
|
||||
"Lighthouse": "red",
|
||||
"Streets of Tarkov": "green",
|
||||
"Ground Zero": "blue"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
{
|
||||
"_version": "3.10.0",
|
||||
"Keys": {
|
||||
"59136a4486f774447a1ed172": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "Weapon", "Ammo"]
|
||||
},
|
||||
"591383f186f7744a4c5edcf3": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Toolbox", "Jacket"]
|
||||
},
|
||||
"591382d986f774465a6413a7": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Safe", "LooseLoot"]
|
||||
},
|
||||
"59136e1e86f774432f15d133": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Safe", "LooseLoot"]
|
||||
},
|
||||
"59387a4986f77401cc236e62": {
|
||||
"Extract": [],
|
||||
"Quest": ["5969f9e986f7741dde183a50"],
|
||||
"Loot": ["Medbag", "Safe", "PC", "LooseLoot"]
|
||||
},
|
||||
"5938603e86f77435642354f4": {
|
||||
"Extract": [],
|
||||
"Quest": ["59689fbd86f7740d137ebfc4"],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"5938994586f774523a425196": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"5914578086f774123569ffa4": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["PC", "Drawer"]
|
||||
},
|
||||
"5672c92d4bdc2d180f8b4567": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Jacket", "LooseLoot"]
|
||||
},
|
||||
"5938504186f7740991483f30": {
|
||||
"Extract": [],
|
||||
"Quest": ["5967725e86f774601a446662"],
|
||||
"Loot": ["SportBag"]
|
||||
},
|
||||
"59148c8a86f774197930e983": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "Safe", "LooseLoot"]
|
||||
},
|
||||
"5780cf942459777df90dcb72": {
|
||||
"Extract": [],
|
||||
"Quest": ["5967725e86f774601a446662"],
|
||||
"Loot": ["Safe", "LooseLoot"]
|
||||
},
|
||||
"5780cf9e2459777df90dcb73": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"5780cfa52459777dfb276eb1": {
|
||||
"Extract": [],
|
||||
"Quest": ["5979f9ba86f7740f6c3fe9f2", "597a0b2986f77426d66c0633"],
|
||||
"Loot": ["SportBag", "Jacket", "LooseLoot", "LooseCash"]
|
||||
},
|
||||
"593aa4be86f77457f56379f8": {
|
||||
"Extract": [],
|
||||
"Quest": ["5979eee086f774311955e614", "59c9392986f7742f6923add2"],
|
||||
"Loot": ["Crate", "LooseLoot"]
|
||||
},
|
||||
"5780cda02459777b272ede61": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseCash"]
|
||||
},
|
||||
"5780cf722459777a5108b9a1": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseCash"]
|
||||
},
|
||||
"5780cf692459777de4559321": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseCash"]
|
||||
},
|
||||
"5780cf7f2459777de4559322": {
|
||||
"Extract": [],
|
||||
"Quest": ["5a27ba1c86f77461ea5a3c56"],
|
||||
"Loot": ["LooseVals", "LooseLoot"]
|
||||
},
|
||||
"5937ee6486f77408994ba448": {
|
||||
"Extract": [],
|
||||
"Quest": ["5936da9e86f7742d65037edf"],
|
||||
"Loot": []
|
||||
},
|
||||
"5913915886f774123603c392": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "Ammo", "Crate"]
|
||||
},
|
||||
"5780d0532459777a5108b9a2": {
|
||||
"Extract": [],
|
||||
"Quest": ["59674eb386f774539f14813a", "5ac3462b86f7741d6118b983"],
|
||||
"Loot": ["SportBag", "PC", "Safe", "Jacket", "LooseLoot"]
|
||||
},
|
||||
"5780d07a2459777de4559324": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Jacket", "LooseLoot"]
|
||||
},
|
||||
"5938144586f77473c2087145": {
|
||||
"Extract": [],
|
||||
"Quest": ["5967530a86f77462ba22226b"],
|
||||
"Loot": ["Weapon"]
|
||||
},
|
||||
"5913611c86f77479e0084092": {
|
||||
"Extract": [],
|
||||
"Quest": ["5979eee086f774311955e614"],
|
||||
"Loot": []
|
||||
},
|
||||
"5780d0652459777df90dcb74": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Safe", "LooseLoot"]
|
||||
},
|
||||
"5913877a86f774432f15d444": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Medbag"]
|
||||
},
|
||||
"593962ca86f774068014d9af": {
|
||||
"Extract": [],
|
||||
"Quest": ["596b43fb86f77457ca186186"],
|
||||
"Loot": []
|
||||
},
|
||||
"5da743f586f7744014504f72": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "Crate"]
|
||||
},
|
||||
"664d4b0103ef2c61246afb56": {
|
||||
"Extract": [],
|
||||
"Quest": [
|
||||
"66058ccbc7f3584787181478",
|
||||
"66058cd19f59e625462acc90",
|
||||
"66058ccf06ef1d50a60c1f48"
|
||||
],
|
||||
"Loot": ["LooseVals", "LooseGear", "DeadBody", "LooseLoot"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"_version": "3.10.0",
|
||||
"Keys": {
|
||||
"5448ba0b4bdc2d02308b456c": {
|
||||
"Extract": ["ZB-013", "Gate 0", "Med Tent Gate", "Cellars"],
|
||||
"Quest": ["5967530a86f77462ba22226b"],
|
||||
"Loot": ["Jacket", "LooseLoot"]
|
||||
},
|
||||
"57a349b2245977762b199ec7": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"593858c486f774253a24cb52": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"_version": "3.10.0",
|
||||
"Keys": {
|
||||
"658199aa38c79576a2569e13": {
|
||||
"Extract": [],
|
||||
"Quest": ["657315e4a6af4ab4b50f3459"],
|
||||
"Loot": ["PC", "Drawer", "LooseLoot"]
|
||||
},
|
||||
"658199972dc4e60f6d556a2f": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["DeadBody", "Ammo", "Toolbox", "Grenade", "Weapon"]
|
||||
},
|
||||
"6581998038c79576a2569e11": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Safe", "Drawer"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"_version": "3.10.0",
|
||||
"Keys": {
|
||||
"5ad5ccd186f774446d5706e9": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["PC", "LooseLoot"]
|
||||
},
|
||||
"5ad5cfbd86f7742c825d6104": {
|
||||
"Extract": [],
|
||||
"Quest": ["5ae4493d86f7744b8e15aa8f"],
|
||||
"Loot": ["PC", "LooseLoot"]
|
||||
},
|
||||
"5ad5d20586f77449be26d877": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"5ad5d49886f77455f9731921": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Crate", "Weapon", "LooseLoot"]
|
||||
},
|
||||
"5ad5d64486f774079b080af8": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"5ad5d7d286f77450166e0a89": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": []
|
||||
},
|
||||
"5addaffe86f77470b455f900": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "CashReg", "LooseCash", "LooseLoot"]
|
||||
},
|
||||
"5ad5db3786f7743568421cce": {
|
||||
"Extract": [],
|
||||
"Quest": ["5b478eca86f7744642012254"],
|
||||
"Loot": ["Medbag", "Jacket", "SportBag", "LooseLoot"]
|
||||
},
|
||||
"5ad7217186f7746744498875": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["CashReg"]
|
||||
},
|
||||
"5ad7242b86f7740a6a3abd43": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["CashReg"]
|
||||
},
|
||||
"5ad7247386f7747487619dc3": {
|
||||
"Extract": [],
|
||||
"Quest": ["5ae449d986f774453a54a7e1"],
|
||||
"Loot": ["CashReg"]
|
||||
},
|
||||
"5e42c71586f7747f245e1343": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Medbag", "LooseLoot"]
|
||||
},
|
||||
"5e42c83786f7742a021fdf3c": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon"]
|
||||
},
|
||||
"5e42c81886f7742a01529f57": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon"]
|
||||
},
|
||||
"664d3dd590294949fe2d81b7": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals", "LooseGear", "LooseLoot", "Jacket", "SportBag"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"_version": "3.10.0",
|
||||
"Keys": {
|
||||
"61a64428a8c6aa1b795f0ba1": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Medbag", "LooseLoot"]
|
||||
},
|
||||
"61a6444b8c141d68246e2d2f": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Jacket", "SportBag", "LooseLoot"]
|
||||
},
|
||||
"61aa5b518f5e7a39b41416e2": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals", "LooseCash", "LooseLoot"]
|
||||
},
|
||||
"61aa5aed32a4743c3453d319": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"61a64492ba05ef10d62adcc1": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "LooseLoot"]
|
||||
},
|
||||
"61aa81fcb225ac1ead7957c3": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Toolbox", "Jacket", "LooseLoot"]
|
||||
},
|
||||
"61aa5b7db225ac1ead7957c1": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Safe"]
|
||||
},
|
||||
"61aa5ba8018e9821b7368da9": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Safe"]
|
||||
},
|
||||
"62987dfc402c7f69bf010923": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["SportBag", "Jacket", "Medbag", "LooseVals"]
|
||||
},
|
||||
"62987e26a77ec735f90a2995": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Crate", "Toolbox", "LooseLoot"]
|
||||
},
|
||||
"62987c658081af308d7558c6": {
|
||||
"Extract": [],
|
||||
"Quest": ["626bd75d5bef5d7d590bd415"],
|
||||
"Loot": ["Jacket", "Weapon", "PC", "LooseVals", "LooseLoot"]
|
||||
},
|
||||
"62987cb98081af308d7558c8": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Drawer", "PC", "Weapon", "LooseVals", "LooseLoot"]
|
||||
},
|
||||
"62987da96188c076bc0d8c51": {
|
||||
"Extract": [],
|
||||
"Quest": ["626bd75e47ea7f506e5493c5"],
|
||||
"Loot": ["Medbag", "LooseCash", "LooseLoot"]
|
||||
},
|
||||
"62a9cb937377a65d7b070cef": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "Toolbox", "Ammo", "LooseLoot"]
|
||||
},
|
||||
"66265d7be65f224b2e17c6aa": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseCash"]
|
||||
},
|
||||
"664d3de85f2355673b09aed5": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals", "LooseGear", "SportBag", "LooseLoot"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
{
|
||||
"_version": "3.10.0",
|
||||
"Keys": {
|
||||
"5d80c78786f774403a401e3e": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["PC", "SportBag", "LooseLoot"]
|
||||
},
|
||||
"5d80c88d86f77440556dbf07": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Toolbox", "Crate", "Jacket", "LooseLoot"]
|
||||
},
|
||||
"5d80c66d86f774405611c7d6": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "LooseLoot"]
|
||||
},
|
||||
"5d80c60f86f77440373c4ece": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals"]
|
||||
},
|
||||
"5d8e3ecc86f774414c78d05e": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Toolbox"]
|
||||
},
|
||||
"5d8e0db586f7744450412a42": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Drawer"]
|
||||
},
|
||||
"5d8e0e0e86f774321140eb56": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Safe", "Weapon", "Weapon"]
|
||||
},
|
||||
"5d947d4e86f774447b415895": {
|
||||
"Extract": [],
|
||||
"Quest": ["60896e28e4a85c72ef3fa301"],
|
||||
"Loot": ["SportBag", "LooseLoot"]
|
||||
},
|
||||
"5d80c93086f7744036212b41": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Toolbox", "Jacket"]
|
||||
},
|
||||
"5d80c95986f77440351beef3": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Crate", "Jacket", "LooseLoot"]
|
||||
},
|
||||
"5d80cbd886f77470855c26c2": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Drawer", "LooseLoot"]
|
||||
},
|
||||
"5d80ca9086f774403a401e40": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Drawer", "Weapon", "Weapon", "Toolbox", "LooseLoot"]
|
||||
},
|
||||
"5d80cab086f77440535be201": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "Ammo", "Toolbox", "LooseLoot"]
|
||||
},
|
||||
"5d80c6c586f77440351beef1": {
|
||||
"Extract": [],
|
||||
"Quest": ["608974af4b05530f55550c21"],
|
||||
"Loot": ["Drawer"]
|
||||
},
|
||||
"5d80c8f586f77440373c4ed0": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Drawer"]
|
||||
},
|
||||
"5d80ccac86f77470841ff452": {
|
||||
"Extract": [],
|
||||
"Quest": ["608974af4b05530f55550c21"],
|
||||
"Loot": ["Weapon", "Drawer", "LooseLoot"]
|
||||
},
|
||||
"5d80ccdd86f77474f7575e02": {
|
||||
"Extract": [],
|
||||
"Quest": ["608974af4b05530f55550c21"],
|
||||
"Loot": ["Weapon", "Drawer", "LooseLoot"]
|
||||
},
|
||||
"5d80cd1a86f77402aa362f42": {
|
||||
"Extract": [],
|
||||
"Quest": ["608974af4b05530f55550c21"],
|
||||
"Loot": ["Weapon", "Drawer", "LooseLoot"]
|
||||
},
|
||||
"5ede7a8229445733cb4c18e2": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Drawer", "LooseLoot"]
|
||||
},
|
||||
"5d80cb5686f77440545d1286": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Crate"]
|
||||
},
|
||||
"5d95d6be86f77424444eb3a7": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Crate"]
|
||||
},
|
||||
"5d80cb3886f77440556dbf09": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Crate", "Toolbox", "LooseLoot"]
|
||||
},
|
||||
"5d95d6fa86f77424484aa5e9": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Crate"]
|
||||
},
|
||||
"5da5cdcd86f774529238fb9b": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Drawer"]
|
||||
},
|
||||
"5ede7b0c6d23e5473e6e8c66": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Drawer", "LooseLoot"]
|
||||
},
|
||||
"5da46e3886f774653b7a83fe": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Toolbox", "LooseLoot"]
|
||||
},
|
||||
"5d947d3886f774447b415893": {
|
||||
"Extract": [],
|
||||
"Quest": ["60896e28e4a85c72ef3fa301"],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"5d9f1fa686f774726974a992": {
|
||||
"Extract": [],
|
||||
"Quest": ["6089732b59b92115597ad789", "6086c852c945025d41566124"],
|
||||
"Loot": ["Weapon", "Grenade", "LooseLoot"]
|
||||
},
|
||||
"5d80c6fc86f774403a401e3c": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "LooseLoot"]
|
||||
},
|
||||
"5d80c62a86f7744036212b3f": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
{
|
||||
"_version": "3.10.0",
|
||||
"Keys": {
|
||||
"5a0448bc86f774736f14efa8": {
|
||||
"Extract": [],
|
||||
"Quest": ["5a0449d586f77474e66227b7"],
|
||||
"Loot": []
|
||||
},
|
||||
"5a0f0f5886f7741c4e32a472": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Safe"]
|
||||
},
|
||||
"5a0eb6ac86f7743124037a28": {
|
||||
"Extract": [],
|
||||
"Quest": ["5edaba7c0c502106f869bc02"],
|
||||
"Loot": ["Safe", "Weapon", "PC", "LooseCash", "Jacket", "LooseLoot"]
|
||||
},
|
||||
"5a0f068686f7745b0d4ea242": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Safe"]
|
||||
},
|
||||
"5a0eb38b86f774153b320eb0": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"5a0ea79b86f7741d4a35298e": {
|
||||
"Extract": [],
|
||||
"Quest": ["5a27bc6986f7741c7358402b"],
|
||||
"Loot": ["Jacket", "LooseLoot"]
|
||||
},
|
||||
"5a0f08bc86f77478f33b84c2": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Safe"]
|
||||
},
|
||||
"5a0eff2986f7741fd654e684": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Safe"]
|
||||
},
|
||||
"5a0dc45586f7742f6b0b73e3": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseCash", "LooseLoot"]
|
||||
},
|
||||
"5a0dc95c86f77452440fc675": {
|
||||
"Extract": [],
|
||||
"Quest": ["5b478eca86f7744642012254"],
|
||||
"Loot": ["SportBag", "LooseLoot"]
|
||||
},
|
||||
"5a144dfd86f77445cb5a0982": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": [
|
||||
"Medbag",
|
||||
"Weapon",
|
||||
"SportBag",
|
||||
"Toolbox",
|
||||
"LooseCash",
|
||||
"LooseLoot"
|
||||
]
|
||||
},
|
||||
"5a0ec6d286f7742c0b518fb5": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Medbag", "Toolbox", "LooseLoot"]
|
||||
},
|
||||
"5a0ee30786f774023b6ee08f": {
|
||||
"Extract": [],
|
||||
"Quest": ["5b4794cb86f774598100d5d4"],
|
||||
"Loot": ["Weapon", "Grenade", "LooseLoot"]
|
||||
},
|
||||
"5a13eebd86f7746fd639aa93": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "LooseLoot"]
|
||||
},
|
||||
"5a13ef0686f7746e5a411744": {
|
||||
"Extract": [],
|
||||
"Quest": ["5a03296886f774569778596a"],
|
||||
"Loot": ["Weapon", "Weapon", "LooseLoot"]
|
||||
},
|
||||
"5a0ee34586f774023b6ee092": {
|
||||
"Extract": [],
|
||||
"Quest": ["5a03296886f774569778596a"],
|
||||
"Loot": ["Weapon", "LooseCash", "LooseLoot", "LooseVals"]
|
||||
},
|
||||
"5a0ee37f86f774023657a86f": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "LooseCash"]
|
||||
},
|
||||
"5a1452ee86f7746f33111763": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Medbag", "LooseCash"]
|
||||
},
|
||||
"5a13ef7e86f7741290491063": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "PC", "LooseCash", "LooseLoot"]
|
||||
},
|
||||
"5a13f46386f7741dd7384b04": {
|
||||
"Extract": [],
|
||||
"Quest": ["5a68663e86f774501078f78a"],
|
||||
"Loot": ["LooseCash", "LooseLoot"]
|
||||
},
|
||||
"5a13ee1986f774794d4c14cd": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "LooseLoot"]
|
||||
},
|
||||
"5a0ea64786f7741707720468": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Medbag", "SportBag", "LooseCash", "LooseLoot"]
|
||||
},
|
||||
"5eff09cd30a7dc22fd1ddfed": {
|
||||
"Extract": [],
|
||||
"Quest": ["5f04886a3937dc337a6b8238"],
|
||||
"Loot": ["PC", "SportBag", "LooseLoot"]
|
||||
},
|
||||
"5a144bdb86f7741d374bbde0": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": [
|
||||
"Weapon",
|
||||
"Weapon",
|
||||
"Medbag",
|
||||
"SportBag",
|
||||
"LooseVals",
|
||||
"LooseLoot"
|
||||
]
|
||||
},
|
||||
"5a0ee4b586f7743698200d22": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": [
|
||||
"Weapon",
|
||||
"Weapon",
|
||||
"Medbag",
|
||||
"SportBag",
|
||||
"LooseVals",
|
||||
"LooseLoot"
|
||||
]
|
||||
},
|
||||
"5a13f24186f77410e57c5626": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": [
|
||||
"Weapon",
|
||||
"Weapon",
|
||||
"Grenade",
|
||||
"Toolbox",
|
||||
"LooseVals",
|
||||
"LooseLoot"
|
||||
]
|
||||
},
|
||||
"5a13f35286f77413ef1436b0": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": [
|
||||
"Weapon",
|
||||
"Weapon",
|
||||
"Grenade",
|
||||
"Toolbox",
|
||||
"LooseCash",
|
||||
"LooseVals",
|
||||
"LooseLoot"
|
||||
]
|
||||
},
|
||||
"5a145d4786f7744cbb6f4a12": {
|
||||
"Extract": [],
|
||||
"Quest": ["5a27bb1e86f7741f27621b7e", "5b4794cb86f774598100d5d4"],
|
||||
"Loot": ["Weapon", "Weapon", "PC", "Medbag", "LooseCash", "LooseVals"]
|
||||
},
|
||||
"5a145d7b86f7744cbb6f4a13": {
|
||||
"Extract": [],
|
||||
"Quest": ["5a27bb1e86f7741f27621b7e", "5b4794cb86f774598100d5d4"],
|
||||
"Loot": ["Weapon", "Weapon", "PC", "Medbag", "LooseCash", "LooseVals"]
|
||||
},
|
||||
"5a0eec9686f77402ac5c39f2": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["SportBag", "LooseVals"]
|
||||
},
|
||||
"5a0eecf686f7740350630097": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "Medbag", "LooseCash", "LooseLoot"]
|
||||
},
|
||||
"5a0eed4386f77405112912aa": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "Medbag", "LooseCash", "LooseLoot"]
|
||||
},
|
||||
"5a145ebb86f77458f1796f05": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "Medbag", "LooseLoot"]
|
||||
},
|
||||
"5a0eee1486f77402aa773226": {
|
||||
"Extract": [],
|
||||
"Quest": ["5a27bc6986f7741c7358402b"],
|
||||
"Loot": ["PC", "SportBag", "LooseLoot"]
|
||||
},
|
||||
"5d8e15b686f774445103b190": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "LooseLoot"]
|
||||
},
|
||||
"664d3ddfdda2e85aca370d75": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals", "LooseGear", "SportBag", "LooseLoot"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,204 @@
|
||||
{
|
||||
"_version": "3.10.0",
|
||||
"Keys": {
|
||||
"63a39667c9b3aa4b61683e98": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["PC", "SportBag", "LooseLoot", "LooseVals"]
|
||||
},
|
||||
"63a71ed21031ac76fe773c7f": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Jacket", "Drawer", "Safe", "PC"]
|
||||
},
|
||||
"63a399193901f439517cafb6": {
|
||||
"Extract": [],
|
||||
"Quest": ["639135534b15ca31f76bc317"],
|
||||
"Loot": ["Drawer", "PC"]
|
||||
},
|
||||
"63a397d3af870e651d58e65b": {
|
||||
"Extract": [],
|
||||
"Quest": ["639135534b15ca31f76bc317"],
|
||||
"Loot": ["Crate", "Weapon", "PC", "LooseLoot"]
|
||||
},
|
||||
"63a39c69af870e651d58e6aa": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Drawer", "PC", "Safe", "SportBag", "LooseLoot"]
|
||||
},
|
||||
"63a39ce4cd6db0635c1975fa": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Drawer", "LooseLoot"]
|
||||
},
|
||||
"63a39e49cd6db0635c1975fc": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Drawer"]
|
||||
},
|
||||
"63a39f6e64283b5e9c56b289": {
|
||||
"Extract": [],
|
||||
"Quest": ["639135c3744e452011470807"],
|
||||
"Loot": ["LooseLoot", "LooseVals"]
|
||||
},
|
||||
"63a39fd1c9b3aa4b61683efb": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": []
|
||||
},
|
||||
"63a39fdf1e21260da44a0256": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Grenade", "Weapon", "LooseLoot"]
|
||||
},
|
||||
"63a3a93f8a56922e82001f5d": {
|
||||
"Extract": [],
|
||||
"Quest": ["6391372c8ba6894d155e77d7"],
|
||||
"Loot": ["Weapon", "LooseLoot", "LooseVals"]
|
||||
},
|
||||
"63a39cb1c9b3aa4b61683ee2": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Jacket", "Medbag", "SportBag", "LooseLoot"]
|
||||
},
|
||||
"63a39c7964283b5e9c56b280": {
|
||||
"Extract": [],
|
||||
"Quest": ["639135e8c115f907b14700aa"],
|
||||
"Loot": ["PC", "Safe", "LooseLoot"]
|
||||
},
|
||||
"63a71e781031ac76fe773c7d": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals"]
|
||||
},
|
||||
"63a71e922b25f7513905ca20": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"63a71e86b7f4570d3a293169": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["PC", "LooseLoot"]
|
||||
},
|
||||
"63a39f18c2d53c2c6839c1d3": {
|
||||
"Extract": [],
|
||||
"Quest": ["639dbaf17c898a131e1cffff"],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"63a39f08cd6db0635c197600": {
|
||||
"Extract": [],
|
||||
"Quest": ["639136fa9444fb141f4e6eee"],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"63a39fc0af870e651d58e6ae": {
|
||||
"Extract": [],
|
||||
"Quest": ["639135cd8ba6894d155e77cb"],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"63a39e1d234195315d4020bd": {
|
||||
"Extract": [],
|
||||
"Quest": [
|
||||
"639135a7e705511c8a4a1b78",
|
||||
"639135bbc115f907b14700a6",
|
||||
"6396700fea19ac7ed845db32"
|
||||
],
|
||||
"Loot": ["PC", "LooseLoot", "LooseVals"]
|
||||
},
|
||||
"63a71eb5b7f4570d3a29316b": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"6398fd8ad3de3849057f5128": {
|
||||
"Extract": [],
|
||||
"Quest": ["63966fbeea19ac7ed845db2e"],
|
||||
"Loot": ["Crate", "SportBag", "Toolbox", "LooseLoot", "LooseVals"]
|
||||
},
|
||||
"63a39dfe3901f439517cafba": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["SportBag", "Jacket", "LooseVals"]
|
||||
},
|
||||
"63a39df18a56922e82001f25": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["SportBag", "LooseLoot"]
|
||||
},
|
||||
"64ccc1d4a0f13c24561edf27": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot", "LooseVals"]
|
||||
},
|
||||
"64ccc1f4ff54fb38131acf27": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot", "LooseVals"]
|
||||
},
|
||||
"64ccc1fe088064307e14a6f7": {
|
||||
"Extract": [],
|
||||
"Quest": ["64f5e20652fc01298e2c61e3"],
|
||||
"Loot": ["Safe", "PC", "Jacket", "Drawer", "SportBag", "LooseLoot"]
|
||||
},
|
||||
"64ccc206793ca11c8f450a38": {
|
||||
"Extract": [],
|
||||
"Quest": ["64f6aafd67e11a7c6206e0d0"],
|
||||
"Loot": ["LooseVals", "Drawer"]
|
||||
},
|
||||
"64ccc2111779ad6ba200a139": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["CashReg", "Safe"]
|
||||
},
|
||||
"64ccc246ff54fb38131acf29": {
|
||||
"Extract": [],
|
||||
"Quest": ["64f731ab83cfca080a361e42"],
|
||||
"Loot": ["Drawer", "LooseLoot"]
|
||||
},
|
||||
"64ccc24de61ea448b507d34d": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "PC", "Crate", "Grenade", "Weapon"]
|
||||
},
|
||||
"64ccc25f95763a1ae376e447": {
|
||||
"Extract": [],
|
||||
"Quest": ["64ee99639878a0569d6ec8c9"],
|
||||
"Loot": ["LooseVals", "LooseLoot"]
|
||||
},
|
||||
"64ccc268c41e91416064ebc7": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"6582dbe43a2e5248357dbe9a": {
|
||||
"Extract": [],
|
||||
"Quest": ["65733403eefc2c312a759ddb"],
|
||||
"Loot": ["LooseVals", "Medbag", "PC"]
|
||||
},
|
||||
"6582dbf0b8d7830efc45016f": {
|
||||
"Extract": [],
|
||||
"Quest": ["6573382e557ff128bf3da536"],
|
||||
"Loot": ["LooseVals", "SportBag", "LooseLoot"]
|
||||
},
|
||||
"6582dc4b6ba9e979af6b79f4": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals", "DeadBody", "SportBag", "LooseLoot"]
|
||||
},
|
||||
"6582dc5740562727a654ebb1": {
|
||||
"Extract": [],
|
||||
"Quest": ["6573397ef3f8344c4575cd87"],
|
||||
"Loot": ["LooseVals", "LooseLoot"]
|
||||
},
|
||||
"64d4b23dc1b37504b41ac2b6": {
|
||||
"Extract": [],
|
||||
"Quest": ["64ee9df4496db64f9b7a4432"],
|
||||
"Loot": ["LooseVals", "LooseLoot"]
|
||||
},
|
||||
"64ccc1ec1779ad6ba200a137": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals", "LooseLoot"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"_version": "3.10.0",
|
||||
"Keys": {
|
||||
"5c94bbff86f7747ee735c08f": {
|
||||
"Extract": [],
|
||||
"Quest": ["5d25e4b786f77408251c4bfc"],
|
||||
"Loot": []
|
||||
},
|
||||
"5efde6b4f5448336730dbd61": {
|
||||
"Extract": [],
|
||||
"Quest": ["5edac63b930f5454f51e128b"],
|
||||
"Loot": ["Jacket", "LooseLoot"]
|
||||
},
|
||||
"5c1d0f4986f7744bb01837fa": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Medbag", "LooseLoot"]
|
||||
},
|
||||
"5c1d0c5f86f7744bb2683cf0": {
|
||||
"Extract": [],
|
||||
"Quest": ["5edac34d0bb72a50635c2bfa"],
|
||||
"Loot": ["Medbag", "LooseLoot"]
|
||||
},
|
||||
"5c1d0dc586f7744baf2e7b79": {
|
||||
"Extract": [],
|
||||
"Quest": ["5edac34d0bb72a50635c2bfa"],
|
||||
"Loot": ["Weapon", "Medbag", "LooseLoot"]
|
||||
},
|
||||
"5c1d0efb86f7744baf2e7b7b": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals", "LooseLoot"]
|
||||
},
|
||||
"5c1e495a86f7743109743dfb": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals", "Weapon", "Drawer", "LooseCash", "LooseLoot"]
|
||||
},
|
||||
"5c1d0d6d86f7744bb2683e1f": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["PC", "LooseLoot"]
|
||||
},
|
||||
"5c1f79a086f7746ed066fb8f": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals", "Drawer", "LooseLoot"]
|
||||
},
|
||||
"5c1e2a1e86f77431ea0ea84c": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseVals", "Weapon", "Safe", "PC", "LooseLoot"]
|
||||
},
|
||||
"5c1e2d1f86f77431e9280bee": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["Weapon", "LooseLoot"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"_version": "3.10.0",
|
||||
"Keys": {
|
||||
"591ae8f986f77406f854be45": {
|
||||
"Extract": [],
|
||||
"Quest": [],
|
||||
"Loot": ["LooseLoot"]
|
||||
},
|
||||
"591afe0186f77431bd616a11": {
|
||||
"Extract": ["ZB-014"],
|
||||
"Quest": ["59c9392986f7742f6923add2", "59675d6c86f7740a842fc482"],
|
||||
"Loot": ["Weapon", "LooseLoot"]
|
||||
},
|
||||
"5d08d21286f774736e7c94c3": {
|
||||
"Extract": [],
|
||||
"Quest": ["5d25e2ee86f77443e35162ea"],
|
||||
"Loot": ["LooseVals"]
|
||||
},
|
||||
"664d3db6db5dea2bad286955": {
|
||||
"Extract": [],
|
||||
"Quest": ["5d25e2ee86f77443e35162ea"],
|
||||
"Loot": ["LooseVals", "LooseGear", "LooseLoot", "SportBag"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"_version": "3.10.0",
|
||||
"markedKeys": [
|
||||
"64d4b23dc1b37504b41ac2b6",
|
||||
"5780cf7f2459777de4559322",
|
||||
"5d80c60f86f77440373c4ece",
|
||||
"5ede7a8229445733cb4c18e2",
|
||||
"5d80c62a86f7744036212b3f",
|
||||
"62987dfc402c7f69bf010923",
|
||||
"63a3a93f8a56922e82001f5d",
|
||||
"64ccc25f95763a1ae376e447"
|
||||
],
|
||||
"maps": [
|
||||
{
|
||||
"name": "Customs",
|
||||
"id": "56f40101d2720b2a4d8b45d6"
|
||||
},
|
||||
{
|
||||
"name": "Factory",
|
||||
"id": "55f2d3fd4bdc2d5f408b4567"
|
||||
},
|
||||
{
|
||||
"name": "GroundZero",
|
||||
"id": "653e6760052c01c1c805532f"
|
||||
},
|
||||
{
|
||||
"name": "Interchange",
|
||||
"id": "5714dbc024597771384a510d"
|
||||
},
|
||||
{
|
||||
"name": "Lighthouse",
|
||||
"id": "5704e4dad2720bb55b8b4567"
|
||||
},
|
||||
{
|
||||
"name": "Reserve",
|
||||
"id": "5704e5fad2720bc05b8b4567"
|
||||
},
|
||||
{
|
||||
"name": "Shoreline",
|
||||
"id": "5704e554d2720bac5b8b456e"
|
||||
},
|
||||
{
|
||||
"name": "StreetsOfTarkov",
|
||||
"id": "5714dc692459777137212e12"
|
||||
},
|
||||
{
|
||||
"name": "TheLab",
|
||||
"id": "5b0fc42d86f7744a585f9105"
|
||||
},
|
||||
{
|
||||
"name": "Woods",
|
||||
"id": "5704e3c2d2720bac5b8b4567"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"_version": "1.3.2",
|
||||
|
||||
"none": "None",
|
||||
"map": "Map",
|
||||
"requiredInQuests": "Required in Quests",
|
||||
"requriedForExtracts": "Required for Extracts",
|
||||
"behindTheLock": "Behind the Lock",
|
||||
|
||||
"Jacket": "Jacket",
|
||||
"Toolbox": "Toolbox",
|
||||
"Drawer": "Drawer",
|
||||
"Crate": "Wooden Crate",
|
||||
"SportBag": "Sport Bag",
|
||||
"Medbag": "Medical Bag",
|
||||
"PC": "PC Block",
|
||||
"Grenade": "Genade Box",
|
||||
"DeadBody": "Dead Body",
|
||||
"Ammo": "Ammo Box",
|
||||
"Weapon": "Weapon (Box/ Rack)",
|
||||
"CashReg": "Cash Register",
|
||||
"Safe": "Safe",
|
||||
"LooseVals": "Loose Valuables",
|
||||
"LooseCash": "Loose Cash",
|
||||
"LooseLoot": "Loose Loot",
|
||||
"LooseGear": "Loose Gear (Weapon/ Mod/ Equipment)"
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"_version": "1.3.2",
|
||||
|
||||
"none": "Нет",
|
||||
"map": "Локация",
|
||||
"requiredInQuests": "Требуется для квеста",
|
||||
"requriedForExtracts": "Требуется для выхода",
|
||||
"behindTheLock": "За замком",
|
||||
|
||||
"Jacket": "Куртка",
|
||||
"Toolbox": "Ящик для инструментов",
|
||||
"Drawer": "Деревянный ящик",
|
||||
"Crate": "Выдвижной ящик",
|
||||
"SportBag": "Спортивная сумка",
|
||||
"Medbag": "Медицинская сумка",
|
||||
"PC": "Системный блок",
|
||||
"Grenade": " Ящик для гранат",
|
||||
"DeadBody": "Труп",
|
||||
"Ammo": "Ящик для патронов",
|
||||
"Weapon": "Оружейный ящик",
|
||||
"CashReg": "Кассовый аппарат",
|
||||
"Safe": "Сейф",
|
||||
"LooseVals": "Драгоценности",
|
||||
"LooseCash": "Деньги",
|
||||
"LooseLoot": "Разный лут",
|
||||
"LooseGear": "Снаряжение"
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "betterkeys-ng",
|
||||
"version": "1.3.2",
|
||||
"main": "src/mod.js",
|
||||
"license": "MIT",
|
||||
"author": "flir",
|
||||
"sptVersion": "~3.10",
|
||||
"isBundleMod": false,
|
||||
"scripts": {
|
||||
"build": "node ./build.mjs",
|
||||
"buildinfo": "rm -rf build && node ./build.mjs --verbose"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^8.57.0",
|
||||
"@types/node": "16.18.10",
|
||||
"@typescript-eslint/parser": "5.46.1",
|
||||
"archiver": "^7.0.1",
|
||||
"bestzip": "2.2.1",
|
||||
"eslint": "8.57.0",
|
||||
"eslint-import-resolver-typescript": "^3.6.1",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"fs-extra": "11.1.0",
|
||||
"glob": "8.0.3",
|
||||
"ignore": "^5.3.1",
|
||||
"os": "^0.1.2",
|
||||
"prettier": "^3.2.5",
|
||||
"prettier-plugin-organize-imports": "^3.2.4",
|
||||
"tsyringe": "4.7.0",
|
||||
"typescript": "4.9.4",
|
||||
"typescript-eslint": "^7.9.0",
|
||||
"winston": "^3.13.0"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.8 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 250 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 270 KiB |
@@ -0,0 +1,283 @@
|
||||
import { DependencyContainer } from 'tsyringe';
|
||||
|
||||
import { ItemHelper } from '@spt/helpers/ItemHelper';
|
||||
import { BaseClasses } from '@spt/models/enums/BaseClasses';
|
||||
import { LogTextColor } from '@spt/models/spt/logging/LogTextColor';
|
||||
import { IDatabaseTables } from '@spt/models/spt/server/IDatabaseTables';
|
||||
import { DatabaseServer } from '@spt/servers/DatabaseServer';
|
||||
import { VFS } from '@spt/utils/VFS';
|
||||
|
||||
import { IPostDBLoadModAsync } from '@spt/models/external/IPostDBLoadModAsync';
|
||||
import { ILogger } from '@spt/models/spt/utils/ILogger';
|
||||
import _package from '../package.json';
|
||||
|
||||
class Mod implements IPostDBLoadModAsync {
|
||||
private modPath = 'user/mods/flir-betterkeysng';
|
||||
private container: DependencyContainer;
|
||||
|
||||
public async postDBLoadAsync(container: DependencyContainer): Promise<void> {
|
||||
this.container = container;
|
||||
const vfs: VFS = container.resolve<VFS>('VFS');
|
||||
|
||||
const db: IDatabaseTables = container
|
||||
.resolve<DatabaseServer>('DatabaseServer')
|
||||
.getTables();
|
||||
|
||||
const config: Record<string, any> = JSON.parse(
|
||||
vfs.readFile(`${this.modPath}/config/config.json`)
|
||||
);
|
||||
|
||||
const github: string = config.github;
|
||||
|
||||
if (config.enableAutoUpdate) {
|
||||
await this.autoUpdate(github, vfs);
|
||||
this.main(db, config);
|
||||
} else {
|
||||
this.main(db, config);
|
||||
}
|
||||
}
|
||||
|
||||
private async autoUpdate(github: string, vfs: VFS) {
|
||||
const logger = this.container.resolve<ILogger>('WinstonLogger');
|
||||
|
||||
const updatePromises = ['db', 'locales'].map((folderName) => {
|
||||
const folderPath = `${this.modPath}/${folderName}`;
|
||||
|
||||
logger.info(`[${_package.name}] Checking for updates: ${folderPath}`);
|
||||
|
||||
return Promise.all(
|
||||
vfs.getFiles(folderPath).map((fileName) => {
|
||||
const localFile = JSON.parse(
|
||||
vfs.readFile(`${folderPath}/${fileName}`)
|
||||
);
|
||||
const _version = localFile._version;
|
||||
|
||||
return fetch(`${github}/server/${folderName}/${fileName}`)
|
||||
.then((response) => response.json())
|
||||
.then((targetFile) => {
|
||||
const targetVersion = targetFile._version;
|
||||
|
||||
if (targetVersion !== _version) {
|
||||
logger.warning(
|
||||
`[${_package.name}] Updating ${folderName}/${fileName} (Local: ${_version}, GitHub: ${targetVersion})`
|
||||
);
|
||||
vfs.writeFile(
|
||||
`${folderPath}/${fileName}`,
|
||||
JSON.stringify(targetFile, null, 2)
|
||||
);
|
||||
}
|
||||
});
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
return await Promise.all(updatePromises)
|
||||
.then(() => {
|
||||
logger.success(`[${_package.name}] Finished checking for updates.`);
|
||||
})
|
||||
.catch((error) => {
|
||||
logger.error(`[${_package.name}] Error checking for updates: ${error}`);
|
||||
});
|
||||
}
|
||||
|
||||
public main(db: IDatabaseTables, config: Record<string, any>): void {
|
||||
const vfs = this.container.resolve<VFS>('VFS');
|
||||
const logger = this.container.resolve<ILogger>('WinstonLogger');
|
||||
const ItemHelper = this.container.resolve<ItemHelper>('ItemHelper');
|
||||
|
||||
const _constants = JSON.parse(
|
||||
vfs.readFile(`${this.modPath}/db/_constants.json`)
|
||||
);
|
||||
|
||||
const keysWithInfo: string[] = [];
|
||||
|
||||
const mapIds: Record<string, any> = _constants.maps;
|
||||
mapIds.forEach(({ name: mapName, id: mapId }) => {
|
||||
const keyInfoFile: Record<string, any> = JSON.parse(
|
||||
vfs.readFile(`${this.modPath}/db/${mapName}.json`)
|
||||
);
|
||||
|
||||
for (const keyId in keyInfoFile.Keys) {
|
||||
const keyItem = db.templates.items[keyId];
|
||||
|
||||
if (config.backgroundColor) {
|
||||
if (
|
||||
config.yellowMarkedKeys &&
|
||||
_constants.markedKeys.includes(keyId)
|
||||
) {
|
||||
keyItem._props.BackgroundColor = 'yellow';
|
||||
} else {
|
||||
const color =
|
||||
config.backgroundColors[db.locales.global['en'][`${mapId} Name`]];
|
||||
|
||||
keyItem._props.BackgroundColor = color;
|
||||
}
|
||||
}
|
||||
|
||||
if (config.descriptionInfo) {
|
||||
for (const lang in db.locales.global) {
|
||||
const description = db.locales.global[lang][`${keyId} Description`];
|
||||
|
||||
let modLocale: Record<string, any>;
|
||||
|
||||
if (!vfs.exists(`${this.modPath}/locales/${lang}.json`)) {
|
||||
modLocale = JSON.parse(
|
||||
vfs.readFile(`${this.modPath}/locales/en.json`)
|
||||
);
|
||||
} else {
|
||||
modLocale = JSON.parse(
|
||||
vfs.readFile(`${this.modPath}/locales/${lang}.json`)
|
||||
);
|
||||
}
|
||||
|
||||
const dbLangLocale: Record<string, string> =
|
||||
db.locales.global[lang];
|
||||
|
||||
const obj = {
|
||||
config,
|
||||
keyId,
|
||||
keyInfoFile,
|
||||
modLocale,
|
||||
dbLangLocale,
|
||||
};
|
||||
|
||||
const keyInfo =
|
||||
`${modLocale.map}: ${dbLangLocale[`${mapId} Name`]}.\n` +
|
||||
`${Mod.getRequiredForExtracts(obj)}` +
|
||||
`${Mod.getRequiredInQuests(obj)}${Mod.getBehindTheLock(obj)}`;
|
||||
|
||||
db.locales.global[lang][`${keyId} Description`] =
|
||||
keyInfo + '\n' + description;
|
||||
}
|
||||
}
|
||||
|
||||
keysWithInfo.push(keyId);
|
||||
}
|
||||
|
||||
logger.info(
|
||||
`[${_package.name}] Loaded: ${db.locales.global.en[`${mapId} Name`]}`
|
||||
);
|
||||
});
|
||||
|
||||
const keysWithoutInfo = Object.entries(db.templates.items).filter(
|
||||
(item) => {
|
||||
const id = item[0];
|
||||
|
||||
return (
|
||||
ItemHelper.isOfBaseclasses(id, [
|
||||
BaseClasses.KEY,
|
||||
BaseClasses.KEY_MECHANICAL,
|
||||
BaseClasses.KEYCARD,
|
||||
]) && !keysWithInfo.includes(id)
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
keysWithoutInfo.forEach((key) => {
|
||||
const keyId = key[0];
|
||||
|
||||
for (const stringId in db.locales.global) {
|
||||
if (config.backgroundColor) {
|
||||
db.templates.items[keyId]._props.BackgroundColor = 'black';
|
||||
}
|
||||
|
||||
if (config.descriptionInfo) {
|
||||
const description =
|
||||
db.locales.global[stringId][`${keyId} Description`];
|
||||
|
||||
db.locales.global[stringId][`${keyId} Description`] =
|
||||
`Junk: this key/ keycard is not used anywhere.` +
|
||||
'\n\n' +
|
||||
description;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
logger.logWithColor(
|
||||
`[${_package.name}-${_package.version}] Added info and background colors to all keys/ keycards`,
|
||||
LogTextColor.GREEN
|
||||
);
|
||||
}
|
||||
|
||||
static getRequiredForExtracts(obj: {
|
||||
config: Record<string, any>;
|
||||
keyId: string;
|
||||
keyInfoFile: Record<string, any>;
|
||||
modLocale: Record<string, any>;
|
||||
dbLangLocale: Record<string, string>;
|
||||
}): string {
|
||||
const { config, keyId, keyInfoFile, modLocale } = obj;
|
||||
|
||||
if (config.requiredForExtracts) {
|
||||
let extractList = '';
|
||||
|
||||
for (const extract of keyInfoFile.Keys[keyId].Extract) {
|
||||
extractList = extractList + extract + ', ';
|
||||
}
|
||||
|
||||
const requiredForExtracts: string =
|
||||
extractList.length > 0
|
||||
? extractList.substring(0, extractList.length - 2)
|
||||
: `${modLocale.none}`;
|
||||
|
||||
return `${modLocale.requriedForExtracts}: ${requiredForExtracts}.\n`;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
static getRequiredInQuests(obj: {
|
||||
config: Record<string, any>;
|
||||
keyId: string;
|
||||
keyInfoFile: Record<string, any>;
|
||||
modLocale: Record<string, any>;
|
||||
dbLangLocale: Record<string, string>;
|
||||
}): string {
|
||||
const { config, keyId, keyInfoFile, dbLangLocale, modLocale } = obj;
|
||||
|
||||
if (config.requiredInQuests) {
|
||||
let questList = '';
|
||||
|
||||
for (const questId of keyInfoFile.Keys[keyId].Quest) {
|
||||
questList = questList + dbLangLocale[`${questId} name`] + ', ';
|
||||
}
|
||||
|
||||
const requiredInQuests =
|
||||
questList.length > 0
|
||||
? questList.substring(0, questList.length - 2)
|
||||
: `${modLocale.none}`;
|
||||
|
||||
return `${modLocale.requiredInQuests}: ${requiredInQuests}.\n`;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
static getBehindTheLock(obj: {
|
||||
config: Record<string, any>;
|
||||
keyId: string;
|
||||
keyInfoFile: Record<string, any>;
|
||||
modLocale: Record<string, any>;
|
||||
dbLangLocale: Record<string, string>;
|
||||
}): string {
|
||||
const { config, keyId, keyInfoFile, modLocale } = obj;
|
||||
if (config.behindTheLock) {
|
||||
let lootList = '';
|
||||
|
||||
for (const lootId of keyInfoFile.Keys[keyId].Loot) {
|
||||
lootList = lootList + modLocale[lootId] + ', ';
|
||||
}
|
||||
|
||||
const behindTheLock: string =
|
||||
lootList.length > 0
|
||||
? lootList.substring(0, lootList.length - 2)
|
||||
: `${modLocale.none}`;
|
||||
|
||||
return `${modLocale.behindTheLock}: ${behindTheLock}.\n`;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { mod: new Mod() };
|
||||
Reference in New Issue
Block a user