Archived
Compare commits
69
Commits
766b851cab
...
1.37.11
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
23dc6d93c3 | ||
|
|
a84001c8bf | ||
|
|
4ccd8753d1 | ||
|
|
1d21d74bb9 | ||
|
|
3ebaed3777 | ||
|
|
5d24318a39 | ||
|
|
a161750966 | ||
|
|
c3fcfb84f8 | ||
|
|
35e1404f43 | ||
|
|
f004d53072 | ||
|
|
4a1cdbcd20 | ||
|
|
c6a4c23e0d | ||
|
|
9a9bde3445 | ||
|
|
7456838720 | ||
|
|
69f3954bcb | ||
|
|
77d156762e | ||
|
|
b026a328e4 | ||
|
|
dded8a81d6 | ||
|
|
fb99760b29 | ||
|
|
951d0201f9 | ||
|
|
b292d36c21 | ||
|
|
147c9bda00 | ||
|
|
a67f0d8248 | ||
|
|
93d8f94c6b | ||
|
|
437ad4203d | ||
|
|
7fee303436 | ||
|
|
b7a439a282 | ||
|
|
15ddd52ac6 | ||
|
|
6eecae59f6 | ||
|
|
c99136d826 | ||
|
|
8039e900f6 | ||
|
|
5381ede0e2 | ||
|
|
4347242d3a | ||
|
|
ccc7f1c7b6 | ||
|
|
810312b097 | ||
|
|
cbffa56551 | ||
|
|
75c67cbaa0 | ||
|
|
a60509ce4e | ||
|
|
f2b832fb77 | ||
|
|
e787ecccb5 | ||
|
|
fa192acb29 | ||
|
|
c02a35612e | ||
|
|
73e3f57758 | ||
|
|
9e834694f2 | ||
|
|
a7d2afe3b0 | ||
|
|
c2885757d3 | ||
|
|
b697b687a7 | ||
|
|
b9abacef3e | ||
|
|
d990cf381f | ||
|
|
b8efad481d | ||
|
|
4c35579b73 | ||
|
|
7ccfda6d3d | ||
|
|
f44663aa2a | ||
|
|
df12331013 | ||
|
|
66964b26ef | ||
|
|
887e7116b6 | ||
|
|
e1905a5613 | ||
|
|
4be51035f2 | ||
|
|
246e806005 | ||
|
|
2a85d05696 | ||
|
|
fa2ec9073c | ||
|
|
f907d8a2f6 | ||
|
|
564688df55 | ||
|
|
2313694a50 | ||
|
|
253835a6aa | ||
|
|
966c30c738 | ||
|
|
ea4e25ccb3 | ||
|
|
d15b7200aa | ||
|
|
26d2331891 |
+3
-1
@@ -1,4 +1,6 @@
|
||||
|
||||
mods/Config Files/BepInEx/config/com.mpstark.DynamicMaps.cfg
|
||||
mods/Config Files/BepInEx/config/xyz.drakia.questtracker.cfg
|
||||
mods/Dynamic Goons/user/mods/inory-dynamicgoons/src/db/rotationData.json
|
||||
mods/Config Files/BepInEx/config/com.Amanda.Graphics.cfg
|
||||
mods/Config Files/BepInEx/config/com.mpstark.DynamicMaps.cfg
|
||||
mods/Config Files/BepInEx/config/com.mpstark.DynamicMaps.cfg
|
||||
|
||||
+64
-16
@@ -4,6 +4,12 @@
|
||||
set "mo2_install=%cd%"
|
||||
set "repository=%mo2_install%\Fika-Tarkov"
|
||||
|
||||
:: Specifying links to download for files
|
||||
set "git_repository=https://files.moddinglounge.com/Rage/Fika-Tarkov.git"
|
||||
set "git_file=https://github.com/git-for-windows/git/releases/download/v2.47.1.windows.1/PortableGit-2.47.1-64-bit.7z.exe"
|
||||
set "SevenZ_file=https://www.7-zip.org/a/7zr.exe"
|
||||
set "mo2_file=https://github.com/ModOrganizer2/modorganizer/releases/download/v2.5.2/Mod.Organizer-2.5.2.7z"
|
||||
|
||||
:: Set path to the portable Git executable
|
||||
set "portable_git=%mo2_install%\PortableGit\bin\git.exe"
|
||||
set "portable_7z=%mo2_install%\7zr.exe"
|
||||
@@ -22,7 +28,7 @@ if not exist "%mo2_install%\PortableGit\bin\git.exe" (
|
||||
echo ----
|
||||
echo Installing Portable Git...
|
||||
:: Download Git Portable
|
||||
curl -L -o PortableGit-2.47.1-64-bit.7z.exe https://github.com/git-for-windows/git/releases/download/v2.47.1.windows.1/PortableGit-2.47.1-64-bit.7z.exe
|
||||
curl -L -o PortableGit-2.47.1-64-bit.7z.exe %git_file%
|
||||
|
||||
if %errorlevel% neq 0 (
|
||||
echo ERROR: Failed to download Git Portable. Check your internet connection and try again.
|
||||
@@ -41,7 +47,7 @@ if not exist "%mo2_install%\7zr.exe" (
|
||||
echo ----
|
||||
echo Installing 7zip Portable...
|
||||
:: Download 7zip Portable
|
||||
curl -L -o 7zr.exe https://www.7-zip.org/a/7zr.exe
|
||||
curl -L -o 7zr.exe %SevenZ_file%
|
||||
)
|
||||
|
||||
:: Determining if an installation exists already
|
||||
@@ -64,10 +70,10 @@ IF EXIST "%mo2_install%\ModOrganizer.exe" (
|
||||
timeout 10
|
||||
|
||||
:: Clone or update the Git repository
|
||||
if not exist "Fika-Tarkov\.git" (
|
||||
if not exist "%repository%\.git" (
|
||||
echo ----
|
||||
echo Cloning repository...
|
||||
"%portable_git%" clone https://files.moddinglounge.com/Rage/Fika-Tarkov.git
|
||||
"%portable_git%" clone %git_repository%
|
||||
) else (
|
||||
echo ----
|
||||
echo Repository already exists. Pulling latest changes...
|
||||
@@ -84,18 +90,11 @@ IF EXIST "%mo2_install%\ModOrganizer.exe" (
|
||||
echo Synchronizing profiles folder...
|
||||
robocopy "%repository%/profiles" "%mo2_install%/profiles" /MIR
|
||||
|
||||
echo ----
|
||||
echo Synchronizing stylesheets folder...
|
||||
robocopy "%repository%/stylesheets" "%mo2_install%/stylesheets" /E
|
||||
|
||||
echo ----
|
||||
echo Synchronizing plugins folder...
|
||||
robocopy "%repository%/plugins" "%mo2_install%/plugins" /E
|
||||
|
||||
pause
|
||||
exit /B 0
|
||||
|
||||
:InstallModpack
|
||||
echo.
|
||||
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
echo WARNING! The script will install the modpack in the folder this script is ran from!
|
||||
echo Be sure that your folder is empty before continuing with the installation!
|
||||
@@ -108,9 +107,19 @@ IF EXIST "%mo2_install%\ModOrganizer.exe" (
|
||||
timeout 30
|
||||
|
||||
:: Requiring user input for game path
|
||||
echo ----
|
||||
set /p "game_path=Please enter the path to your game installation: "
|
||||
|
||||
if "%game_path%"=="" (
|
||||
echo.
|
||||
echo No path entered. Exiting.
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: Download MO2
|
||||
curl -L -o MO2.7z https://github.com/ModOrganizer2/modorganizer/releases/download/v2.5.2/Mod.Organizer-2.5.2.7z
|
||||
curl -L -o MO2.7z %mo2_file%
|
||||
if %errorlevel% neq 0 (
|
||||
echo ERROR: Failed to download the archive. Check your internet connection and try again.
|
||||
pause
|
||||
@@ -138,7 +147,7 @@ IF EXIST "%mo2_install%\ModOrganizer.exe" (
|
||||
|
||||
echo ----
|
||||
echo Cloning repository...
|
||||
"%portable_git%" clone https://files.moddinglounge.com/Rage/Fika-Tarkov.git
|
||||
"%portable_git%" clone %git_repository%
|
||||
|
||||
echo ----
|
||||
echo Synchronizing mods folder...
|
||||
@@ -148,13 +157,52 @@ IF EXIST "%mo2_install%\ModOrganizer.exe" (
|
||||
echo Synchronizing profiles folder...
|
||||
robocopy "%repository%/profiles" "%mo2_install%/profiles" /MIR
|
||||
|
||||
echo ----
|
||||
echo Synchronizing plugins folder...
|
||||
robocopy "%repository%/plugins" "%mo2_install%/plugins" /E
|
||||
|
||||
echo ----
|
||||
echo Synchronizing stylesheets folder...
|
||||
robocopy "%repository%/stylesheets" "%mo2_install%/stylesheets" /E
|
||||
|
||||
:: Escape backslashes in the game path
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
set "game_path=!game_path:\=/!"
|
||||
set "escaped_path="
|
||||
|
||||
for /l %%i in (0,1,255) do (
|
||||
for /f "tokens=1,* delims=" %%a in ("!game_path:~%%i,1!") do (
|
||||
if "%%a"=="" goto path_done
|
||||
if %%a==/ (
|
||||
set "escaped_path=!escaped_path!//" :: Double the backslash
|
||||
) else (
|
||||
set "escaped_path=!escaped_path!%%a"
|
||||
)
|
||||
)
|
||||
)
|
||||
:path_done
|
||||
|
||||
echo Original Path: %game_path%
|
||||
echo Escaped Path: %escaped_path%
|
||||
|
||||
:: Replace placeholders in ModOrganizer.ini
|
||||
echo ----
|
||||
echo Synchronizing plugins folder...
|
||||
robocopy "%repository%/plugins" "%mo2_install%/plugins" /E
|
||||
echo Updating ModOrganizer.ini...
|
||||
set "ini_file=%repository%\ModOrganizer.ini"
|
||||
set "temp_ini=%ini_file%.tmp"
|
||||
|
||||
(for /f "usebackq delims=" %%A in ("%ini_file%") do (
|
||||
set "line=%%A"
|
||||
set "line=!line:game_path=%escaped_path%!"
|
||||
set "line=!line:replace_me=%game_path%!"
|
||||
echo(!line!
|
||||
)) > "%temp_ini%"
|
||||
|
||||
move /y "%temp_ini%" "%mo2_install%\ModOrganizer.ini"
|
||||
|
||||
echo ----
|
||||
echo ModOrganizer.ini updated successfully!
|
||||
|
||||
echo ----
|
||||
echo Installation complete. Launch ModOrganizer.exe and follow the remaining instructions.
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
Repository Name: Fika-Tarkov
|
||||
|
||||
Copyright © 2025 Rage
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
License Grant: This repository and its contents, including but not limited to source code, documentation, images, and other materials, are protected by copyright law. Unless otherwise stated in a separate license agreement, all intellectual property rights are owned by the author(s) of this repository.
|
||||
|
||||
Restrictions: No part of this repository may be reproduced, distributed, or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage and retrieval system, without the prior written permission of the author(s).
|
||||
|
||||
Contact Information: Any inquiries are strictly forbidden unless directed to.
|
||||
|
||||
No Implied Licenses: Nothing in this license shall be deemed to grant any rights to any third parties or to imply any relationship between the author(s) and the recipients or users of this repository.
|
||||
|
||||
No Warranty: This repository is provided on an "as-is" basis, without any warranties or conditions, express or implied, including, but not limited to, warranties of merchantability, fitness for a particular purpose, or non-infringement.
|
||||
|
||||
Limitation of Liability: In no event shall the author(s) 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 this repository or the use or other dealings in this repository.
|
||||
|
||||
This license shall be governed by and construed in accordance with the laws of the United States, without regard to its conflicts of law provisions.
|
||||
+159
-2
@@ -1,17 +1,75 @@
|
||||
[General]
|
||||
gameName=SPT
|
||||
gamePath=@ByteArray(replace_me)
|
||||
gamePath=@ByteArray(game_path)
|
||||
selected_profile=@ByteArray(Multiplayer)
|
||||
version=2.5.2
|
||||
first_start=false
|
||||
previousSeparatorColor=@Variant(\0\0\0\x43\x1\xff\xff\x44\x44\x36\x36))\0\0)
|
||||
backup_install=true
|
||||
|
||||
[PluginPersistance]
|
||||
Python%20Proxy\tryInit=false
|
||||
|
||||
[Settings]
|
||||
profile_local_inis=false
|
||||
profile_local_saves=false
|
||||
profile_archive_invalidation=true
|
||||
log_level=1
|
||||
language=en
|
||||
compact_downloads=true
|
||||
meta_downloads=false
|
||||
autohide_downloads=false
|
||||
check_for_updates=true
|
||||
use_prereleases=false
|
||||
center_dialogs=false
|
||||
show_change_game_confirmation=true
|
||||
show_menubar_on_alt=true
|
||||
double_click_previews=true
|
||||
style=Dark Bronze.qss
|
||||
overwrittenLooseFilesColor=@Variant(\0\0\0\x43\x1@@\0\0\xff\xff\0\0\0\0)
|
||||
overwritingLooseFilesColor=@Variant(\0\0\0\x43\x1@@\xff\xff\0\0\0\0\0\0)
|
||||
overwrittenArchiveFilesColor=@Variant(\0\0\0\x43\x1@@\0\0\xff\xff\xff\xff\0\0)
|
||||
overwritingArchiveFilesColor=@Variant(\0\0\0\x43\x1@@\xff\xff\0\0\xff\xff\0\0)
|
||||
containsPluginColor=@Variant(\0\0\0\x43\x1@@\0\0\0\0\xff\xff\0\0)
|
||||
containedColor=@Variant(\0\0\0\x43\x1@@\0\0\0\0\xff\xff\0\0)
|
||||
colorSeparatorScrollbars=true
|
||||
display_foreign=true
|
||||
collapsible_separators_asc=true
|
||||
collapsible_separators_dsc=true
|
||||
collapsible_separators_conflicts_from=true
|
||||
collapsible_separators_conflicts_to=true
|
||||
collapsible_separators_per_profile=false
|
||||
save_filters=false
|
||||
auto_collapse_on_hover=false
|
||||
autocheck_update_install=true
|
||||
collapsible_separators_icons_1=true
|
||||
collapsible_separators_icons_2=true
|
||||
collapsible_separators_icons_3=true
|
||||
collapsible_separators_icons_7=true
|
||||
crash_dumps_type=1
|
||||
crash_dumps_max=5
|
||||
loot_log_level=2
|
||||
endorsement_integration=true
|
||||
tracked_integration=true
|
||||
category_mappings=true
|
||||
hide_api_counter=false
|
||||
force_enable_core_files=true
|
||||
lock_gui=true
|
||||
archive_parsing_experimental=false
|
||||
offline_mode=false
|
||||
use_proxy=false
|
||||
use_custom_browser=false
|
||||
custom_browser=
|
||||
executable_blacklist="Chrome.exe;Firefox.exe;TSVNCache.exe;TGitCache.exe;Steam.exe;GameOverlayUI.exe;Discord.exe;GalaxyClient.exe;Spotify.exe;Brave.exe"
|
||||
skip_file_suffixes=.mohidden
|
||||
skip_directories=.git
|
||||
filter_regex=false
|
||||
regex_case_sensitive=false
|
||||
regex_extended=false
|
||||
filter_scroll_to_selection=false
|
||||
|
||||
[customExecutables]
|
||||
size=1
|
||||
size=6
|
||||
1\arguments=
|
||||
1\binary=replace_me/SPT.Launcher.exe
|
||||
1\hide=false
|
||||
@@ -20,3 +78,102 @@ size=1
|
||||
1\title=Multiplayer
|
||||
1\toolbar=false
|
||||
1\workingDirectory=replace_me
|
||||
2\arguments=
|
||||
2\binary=replace_me/sptvfsbridge.bat
|
||||
2\hide=false
|
||||
2\ownicon=true
|
||||
2\steamAppID=
|
||||
2\title=Singleplayer
|
||||
2\toolbar=false
|
||||
2\workingDirectory=replace_me
|
||||
3\arguments=
|
||||
3\binary=D:/Modding/Modlists/Fika Tarkov/mods/Load Order Editor/LoEDD/LoEDD.exe
|
||||
3\hide=false
|
||||
3\ownicon=true
|
||||
3\steamAppID=
|
||||
3\title=Load Order Editor
|
||||
3\toolbar=true
|
||||
3\workingDirectory=D:\\Modding\\Modlists\\Fika Tarkov\\mods\\Load Order Editor\\LoEDD
|
||||
4\arguments=
|
||||
4\binary=D:/Modding/Modlists/Fika Tarkov/mods/Server Value Modifier/user/mods/[SVM] Server Value Modifier/Greed.exe
|
||||
4\hide=false
|
||||
4\ownicon=false
|
||||
4\steamAppID=
|
||||
4\title=Greed
|
||||
4\toolbar=true
|
||||
4\workingDirectory=D:\\Modding\\Modlists\\Fika Tarkov\\mods\\Server Value Modifier\\user\\mods\\[SVM] Server Value Modifier
|
||||
5\arguments=\"D:\\Games\\Singleplayer Tarkov\"
|
||||
5\binary=D:/Modding/Modlists/Fika Tarkov/explorer++/Explorer++.exe
|
||||
5\hide=false
|
||||
5\ownicon=true
|
||||
5\steamAppID=
|
||||
5\title=Explore Virtual Folder
|
||||
5\toolbar=false
|
||||
5\workingDirectory=D:\\Modding\\Modlists\\Fika Tarkov\\explorer++
|
||||
|
||||
[Widgets]
|
||||
SettingsDialog_tabWidget_index=0
|
||||
MainWindow_executablesListBox_index=1
|
||||
MainWindow_tabWidget_index=2
|
||||
MainWindow_dataTabShowOnlyConflicts_checked=false
|
||||
MainWindow_dataTabShowFromArchives_checked=false
|
||||
MainWindow_groupCombo_index=0
|
||||
MainWindow_modList_index=SWAG + DONUTS_backup, Fika, Essentials, Bug Fixes & Optimizations, Interface & HUD, SFX & Music, New Items & Keys, Gameplay Tweaks, New Traders & Tweaks, New Weapons & Gear, AI & Combat Tweaks, VFX & Atmosphere, Modlist Addons, Backburner, Version 1.32.0, Unsorted, Overwrite
|
||||
MainWindow_filters_index=0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
MainWindow_filtersAnd_checked=true
|
||||
MainWindow_filtersOr_checked=false
|
||||
MainWindow_filtersSeparators_index=0
|
||||
ModInfoTabOrder=tabFiles tabText tabIni tabImages tabESPs tabConflicts tabCategories tabNexus tabNotes
|
||||
ModInfoDialog_tabWidget_index=0
|
||||
ModInfoDialog_imagesShowDDS_checked=false
|
||||
ModInfoDialog_tabConflictsTabs_index=0
|
||||
ModInfoDialog_conflictsAdvancedShowNoConflict_checked=true
|
||||
ModInfoDialog_conflictsAdvancedShowAll_checked=true
|
||||
ModInfoDialog_conflictsAdvancedShowNearest_checked=false
|
||||
|
||||
[Geometry]
|
||||
SettingsDialog_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x2\xe3\0\0\x1\x30\0\0\x6\x16\0\0\x3\x9d\0\0\x2\xe3\0\0\x1N\0\0\x6\x16\0\0\x3\x9d\0\0\0\0\0\0\0\0\t\xe\0\0\x2\xe3\0\0\x1N\0\0\x6\x16\0\0\x3\x9d)
|
||||
MainWindow_state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\x3\0\0\t\xe\0\0\0\xd7\xfc\x1\0\0\0\x1\xfb\0\0\0\xe\0l\0o\0g\0\x44\0o\0\x63\0k\0\0\0\0\0\0\0\t\xe\0\0\0R\0\xff\xff\xff\0\0\t\xe\0\0\x4T\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x1\0\0\0\xe\0t\0o\0o\0l\0\x42\0\x61\0r\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
|
||||
MainWindow_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\xff\xff\xff\xf9\0\0\t\r\0\0\x4\xe8\0\0\0\v\0\0\0\x1f\0\0\az\0\0\x4w\0\0\0\0\x2\0\0\0\t\xe\0\0\0\0\0\0\0\x17\0\0\t\r\0\0\x4\xe8)
|
||||
MainWindow_docks_logDock_size=215
|
||||
MainWindow_menuBar_visibility=true
|
||||
MainWindow_statusBar_visibility=true
|
||||
MainWindow_toolBar_visibility=true
|
||||
toolbar_size=@Size(42 36)
|
||||
toolbar_button_style=0
|
||||
MainWindow_splitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\x3\xf9\0\0\x2\xb0\x1\xff\xff\xff\xff\x1\0\0\0\x1\0)
|
||||
MainWindow_categoriesSplitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\x1\b\0\0\x3\x16\0\xff\xff\xff\xff\x1\0\0\0\x1\0)
|
||||
MainWindow_monitor=0
|
||||
MainWindow_categoriesGroup_visibility=false
|
||||
MainWindow_espList_state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x2\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2n\0\0\0\x4\x1\x1\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\x1\xce\0\0\0\x1\0\0\0\0\0\0\0%\0\0\0\x1\0\0\0\0\0\0\0\x33\0\0\0\x1\0\0\0\0\0\0\0H\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x46\0\0\0\0)
|
||||
MainWindow_downloadView_state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\x3\x1\0\0\0\0\0\0\0\0\0\0\0\b\xf0\0\0\0\x4\0\0\0\x4\0\0\0\x64\0\0\0\a\0\0\0\x64\0\0\0\x6\0\0\0\x64\0\0\0\x5\0\0\0\x64\0\0\x3\x80\0\0\0\b\x1\x1\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\b\0\0\x2\x62\0\0\0\x1\0\0\0\0\0\0\0V\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\x1\0\0\0\0\0\0\0\0)
|
||||
MainWindow_savegameList_state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2n\0\0\0\x2\x1\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x2\0\0\x1\xa1\0\0\0\x1\0\0\0\0\0\0\0\xcd\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0)
|
||||
MainWindow_dataTree_state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x3\x80\0\0\0\x5\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x5\0\0\x1s\0\0\0\x1\0\0\0\0\0\0\0\x81\0\0\0\x1\0\0\0\0\0\0\0\xb2\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0v\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0)
|
||||
MainWindow_modList_state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\t\x1\0\0\0\v\0\0\0\0\0\0\0\x2\0\0\0\x3\0\0\0\x6\0\0\0\x5\0\0\0\a\0\0\0\b\0\0\0\t\0\0\0\x4\0\0\0\n\0\0\0\x1\0\0\0\v\0\0\0\0\0\0\0\n\0\0\0\x1\0\0\0\x2\0\0\0\b\0\0\0\x4\0\0\0\x3\0\0\0\x5\0\0\0\x6\0\0\0\a\0\0\0\t\0\0\0\v\xc2\x3\0\0\0\x5\0\0\0\a\0\0\0Y\0\0\0\x3\0\0\0 \0\0\0\x6\0\0\0 \0\0\0\n\0\0\x1\xb3\0\0\0\x5\0\0\0 \0\0\x5\x42\0\0\0\v\x1\x1\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0'\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\v\0\0\x3\n\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0H\0\0\0\x1\0\0\0\0\0\0\0\xac\0\0\0\x1\0\0\0\0\0\0\0|\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x3\xe8\x1\0\0\0U\0\0\0\0)
|
||||
EditExecutablesDialog_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x2\xa7\0\0\x1\x8d\0\0\a2\0\0\x3\xbb\0\0\x2\xa7\0\0\x1\xab\0\0\a2\0\0\x3\xbb\0\0\0\0\0\0\0\0\t\xe\0\0\x2\xa7\0\0\x1\xab\0\0\a2\0\0\x3\xbb)
|
||||
ModInfoDialog_tabTextSplitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\x1\xc8\0\0\x3\x62\0\xff\xff\xff\xff\x1\0\0\0\x1\0)
|
||||
ModInfoDialog_tabIniSplitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xc8\0\0\0\xed\x1\xff\xff\xff\xff\x1\0\0\0\x1\0)
|
||||
ModInfoDialog_tabImagesSplitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\x80\0\0\0\x83\0\xff\xff\xff\xff\x1\0\0\0\x1\0)
|
||||
ModInfoDialog_ESPsSplitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0|\0\0\0\xab\x1\xff\xff\xff\xff\x1\0\0\0\x1\0)
|
||||
ModInfoDialog_overwriteExpander_state=@ByteArray(\x1)
|
||||
ModInfoDialog_overwrittenExpander_state=@ByteArray(\x1)
|
||||
ModInfoDialog_noConflictExpander_state=@ByteArray(\0)
|
||||
ModInfoDialog_overwriteTree_state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x5(\0\0\0\x2\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x2\0\0\x2\x88\0\0\0\x1\0\0\0\0\0\0\x2\xa0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0)
|
||||
ModInfoDialog_noConflictTree_state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\0\0\0\x1\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x1\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0)
|
||||
ModInfoDialog_overwrittenTree_state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2\xdd\0\0\0\x2\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x2\0\0\x2y\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0)
|
||||
ModInfoDialog_conflictsAdvancedList_state="@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1,\0\0\0\x3\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x3\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0)"
|
||||
ModInfoDialog_filetree_state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x5\x30\0\0\0\x4\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\x1\xbf\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x2\xa9\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0)
|
||||
ModInfoDialog_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x1\xca\0\0\x1\x1b\0\0\a\x17\0\0\x4\x1e\0\0\x1\xca\0\0\x1\x39\0\0\a\x17\0\0\x4\x1e\0\0\0\0\0\0\0\0\t\xe\0\0\x1\xca\0\0\x1\x39\0\0\a\x17\0\0\x4\x1e)
|
||||
PreviewDialog_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\r\0\0\x1\x35\0\0\x5\xec\0\0\x3\x99\0\0\x3\r\0\0\x1S\0\0\x5\xec\0\0\x3\x99\0\0\0\0\0\0\0\0\t\xe\0\0\x3\r\0\0\x1S\0\0\x5\xec\0\0\x3\x99)
|
||||
ProfilesDialog_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\x8c\0\0\x1\xb2\0\0\x5m\0\0\x3\x1b\0\0\x3\x8c\0\0\x1\xd0\0\0\x5m\0\0\x3\x1b\0\0\0\0\0\0\0\0\t\xe\0\0\x3\x8c\0\0\x1\xd0\0\0\x5m\0\0\x3\x1b)
|
||||
__overwriteDialog_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x2\x82\0\0\x1\x8c\0\0\a\xa9\0\0\x4\xa8\0\0\x2\x82\0\0\x1\xaa\0\0\a\xa9\0\0\x4\xa8\0\0\0\0\0\0\0\0\t\xe\0\0\x2\x82\0\0\x1\xaa\0\0\a\xa9\0\0\x4\xa8)
|
||||
__overwriteDialog_filesView_state=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4\xfe\0\0\0\x4\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\x1\xd7\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\0\x64\0\0\0\x1\0\0\0\0\0\0\x2_\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64\0\0\0\0)
|
||||
ProblemsDialog_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3^\0\0\x1\x9c\0\0\x5\x9b\0\0\x3\x31\0\0\x3^\0\0\x1\xba\0\0\x5\x9b\0\0\x3\x31\0\0\0\0\0\0\0\0\t\xe\0\0\x3^\0\0\x1\xba\0\0\x5\x9b\0\0\x3\x31)
|
||||
CategoriesDialog_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x1\xd3\0\0\x1T\0\0\x4\x99\0\0\x3#\0\0\x1\xd3\0\0\x1r\0\0\x4\x99\0\0\x3#\0\0\0\0\0\0\0\0\t\xe\0\0\x1\xd3\0\0\x1r\0\0\x4\x99\0\0\x3#)
|
||||
ListDialog_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\xfa\0\0\0\xfe\0\0\x4\xff\0\0\x3^\0\0\x3\xfa\0\0\x1\x1c\0\0\x4\xff\0\0\x3^\0\0\0\0\0\0\0\0\t\xe\0\0\x3\xfa\0\0\x1\x1c\0\0\x4\xff\0\0\x3^)
|
||||
|
||||
[Servers]
|
||||
size=0
|
||||
|
||||
[pluginBlacklist]
|
||||
size=0
|
||||
|
||||
@@ -1,2 +1,23 @@
|
||||
# Fika-Tarkov
|
||||
This is a personal modpack for a group of friends and I, not to be redistributed, shared or publicized. This is open to view purely for the ability to clone the repository from the automated batch script.
|
||||
|
||||
## License
|
||||
Repository Name: Fika-Tarkov
|
||||
|
||||
Copyright © 2025 Rage
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
License Grant: This repository and its contents, including but not limited to source code, documentation, images, and other materials, are protected by copyright law. Unless otherwise stated in a separate license agreement, all intellectual property rights are owned by the author(s) of this repository.
|
||||
|
||||
Restrictions: No part of this repository may be reproduced, distributed, or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage and retrieval system, without the prior written permission of the author(s).
|
||||
|
||||
Contact Information: Any inquiries are strictly forbidden unless directed to.
|
||||
|
||||
No Implied Licenses: Nothing in this license shall be deemed to grant any rights to any third parties or to imply any relationship between the author(s) and the recipients or users of this repository.
|
||||
|
||||
No Warranty: This repository is provided on an "as-is" basis, without any warranties or conditions, express or implied, including, but not limited to, warranties of merchantability, fitness for a particular purpose, or non-infringement.
|
||||
|
||||
Limitation of Liability: In no event shall the author(s) 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 this repository or the use or other dealings in this repository.
|
||||
|
||||
This license shall be governed by and construed in accordance with the laws of the United States, without regard to its conflicts of law provisions.
|
||||
@@ -0,0 +1,28 @@
|
||||
[General]
|
||||
gameName=spt
|
||||
modid=0
|
||||
version=d2025.1.14.0
|
||||
newestVersion=
|
||||
category="1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=AUG_AttachmentPack.zip
|
||||
repository=
|
||||
ignoredVersion=
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=false
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2025-01-15T01:12:37Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
1\modid=0
|
||||
1\fileid=0
|
||||
size=1
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"manifest": [
|
||||
{
|
||||
"key": "assets/content/items/mods/handguards/handguard_fb20.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/commonassets/physics/physicsmaterials.bundle",
|
||||
"cubemaps",
|
||||
"shaders"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/handguards/handguard_guerilla.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/commonassets/physics/physicsmaterials.bundle",
|
||||
"cubemaps",
|
||||
"shaders"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/handguards/handguard_turaco.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/commonassets/physics/physicsmaterials.bundle",
|
||||
"cubemaps",
|
||||
"shaders"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/content/items/mods/magazines/mag_aug_60.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/commonassets/physics/physicsmaterials.bundle",
|
||||
"cubemaps",
|
||||
"shaders"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"templates": {
|
||||
"6786e03b67ad44fd9b0fabd0": {
|
||||
"Name": "AUG RAS Handguard",
|
||||
"ShortName": "AUG",
|
||||
"Description": "ARMY Metal AUG RAS Handguard For AUG A3 AEG Bullpup Rifle"
|
||||
},
|
||||
"6786e03b67ad44fd9b0fabd1": {
|
||||
"Name": "AUG Cantilever Handguard",
|
||||
"ShortName": "AUG",
|
||||
"Description": "The AUG Cantilever Forend combines a top rail, side rail, and M-LOK forend into a compact, light, and incredibly versatile package."
|
||||
},
|
||||
"6786e03b67ad44fd9b0fabd2": {
|
||||
"Name": "AUG Turaco handguard",
|
||||
"ShortName": "AUG",
|
||||
"Description": "A CNC made handguard with an M-LOK interface."
|
||||
},
|
||||
"6786e03b67ad44fd9b0fabd3": {
|
||||
"Name": "AUG A3 556x45 60-round drum magazine",
|
||||
"ShortName": "AUG",
|
||||
"Description": "A modified PMAG-D60 made to fit Steyr AUG A3"
|
||||
}
|
||||
}
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"Items": [
|
||||
{
|
||||
"Id": "6786e03b67ad44fd9b0fabd0",
|
||||
"ParentId": "5b5f75e486f77447ec5d7712",
|
||||
"Price": 20000
|
||||
},
|
||||
{
|
||||
"Id": "6786e03b67ad44fd9b0fabd1",
|
||||
"ParentId": "5b5f75e486f77447ec5d7712",
|
||||
"Price": 18000
|
||||
},
|
||||
{
|
||||
"Id": "6786e03b67ad44fd9b0fabd2",
|
||||
"ParentId": "5b5f75e486f77447ec5d7712",
|
||||
"Price": 17000
|
||||
},
|
||||
{
|
||||
"Id": "6786e03b67ad44fd9b0fabd3",
|
||||
"ParentId": "5b5f754a86f774094242f19b",
|
||||
"Price": 15000
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,771 @@
|
||||
{
|
||||
"6786e03b67ad44fd9b0fabd0": {
|
||||
"_id": "6786e03b67ad44fd9b0fabd0",
|
||||
"_name": "handguard_fb20",
|
||||
"_parent": "55818a104bdc2db9688b4569",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Name": "",
|
||||
"ShortName": "",
|
||||
"Description": "",
|
||||
"Weight": 0.209,
|
||||
"BackgroundColor": "blue",
|
||||
"Width": 2,
|
||||
"Height": 1,
|
||||
"StackMaxSize": 1,
|
||||
"ItemSound": "mod",
|
||||
"Prefab": {
|
||||
"path": "assets/content/items/mods/handguards/handguard_fb20.bundle",
|
||||
"rcid": ""
|
||||
},
|
||||
"UsePrefab": {
|
||||
"path": "",
|
||||
"rcid": ""
|
||||
},
|
||||
"StackObjectsCount": 1,
|
||||
"NotShownInSlot": false,
|
||||
"ExaminedByDefault": true,
|
||||
"ExamineTime": 1,
|
||||
"IsUndiscardable": false,
|
||||
"IsUnsaleable": false,
|
||||
"IsUnbuyable": false,
|
||||
"IsUngivable": false,
|
||||
"IsLockedafterEquip": false,
|
||||
"QuestItem": false,
|
||||
"LootExperience": 10,
|
||||
"ExamineExperience": 3,
|
||||
"HideEntrails": false,
|
||||
"RepairCost": 0,
|
||||
"RepairSpeed": 0,
|
||||
"ExtraSizeLeft": 1,
|
||||
"ExtraSizeRight": 0,
|
||||
"ExtraSizeUp": 0,
|
||||
"ExtraSizeDown": 0,
|
||||
"ExtraSizeForceAdd": false,
|
||||
"MergesWithChildren": true,
|
||||
"CanSellOnRagfair": true,
|
||||
"CanRequireOnRagfair": false,
|
||||
"ConflictingItems": [],
|
||||
"Unlootable": false,
|
||||
"UnlootableFromSlot": "FirstPrimaryWeapon",
|
||||
"UnlootableFromSide": [],
|
||||
"AnimationVariantsNumber": 0,
|
||||
"DiscardingBlock": false,
|
||||
"RagFairCommissionModifier": 1,
|
||||
"IsAlwaysAvailableForInsurance": false,
|
||||
"DiscardLimit": -1,
|
||||
"DropSoundType": "None",
|
||||
"InsuranceDisabled": false,
|
||||
"QuestStashMaxCount": 0,
|
||||
"IsSpecialSlotOnly": false,
|
||||
"IsUnremovable": false,
|
||||
"Grids": [],
|
||||
"Slots": [
|
||||
{
|
||||
"_name": "mod_mount_000",
|
||||
"_id": "5c6d5d8b2e221644fc630b3b",
|
||||
"_parent": "5c6d5d8b2e221644fc630b39",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Shift": 0,
|
||||
"Filter": [
|
||||
"5a800961159bd4315e3a1657",
|
||||
"57fd23e32459772d0805bcf1",
|
||||
"544909bb4bdc2d6f028b4577",
|
||||
"5d10b49bd7ad1a1a560708b0",
|
||||
"5c06595c0db834001a66af6c",
|
||||
"5cc9c20cd7f00c001336c65d",
|
||||
"5d2369418abbc306c62e0c80",
|
||||
"5b07dd285acfc4001754240d",
|
||||
"56def37dd2720bec348b456a",
|
||||
"5a7b483fe899ef0016170d15",
|
||||
"61605d88ffa6e502ac5e7eeb",
|
||||
"5a5f1ce64f39f90b401987bc",
|
||||
"560d657b4bdc2da74d8b4572",
|
||||
"5b3a337e5acfc4704b4a19a0",
|
||||
"5c5952732e2216398b5abda2",
|
||||
"57d17e212459775a1179a0f5",
|
||||
"6267c6396b642f77f56f5c1c",
|
||||
"6272370ee4013c5d7e31f418",
|
||||
"6272379924e29f06af4d5ecb",
|
||||
"626becf9582c3e319310b837"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_required": false,
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_proto": "55d30c4c4bdc2db4468b457e"
|
||||
},
|
||||
{
|
||||
"_name": "mod_mount_001",
|
||||
"_id": "5c6d5d8b2e221644fc630b3c",
|
||||
"_parent": "5c6d5d8b2e221644fc630b39",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Shift": 0,
|
||||
"Filter": [
|
||||
"5a800961159bd4315e3a1657",
|
||||
"57fd23e32459772d0805bcf1",
|
||||
"544909bb4bdc2d6f028b4577",
|
||||
"5d10b49bd7ad1a1a560708b0",
|
||||
"5c06595c0db834001a66af6c",
|
||||
"5cc9c20cd7f00c001336c65d",
|
||||
"5d2369418abbc306c62e0c80",
|
||||
"5b07dd285acfc4001754240d",
|
||||
"56def37dd2720bec348b456a",
|
||||
"5a7b483fe899ef0016170d15",
|
||||
"61605d88ffa6e502ac5e7eeb",
|
||||
"5a5f1ce64f39f90b401987bc",
|
||||
"560d657b4bdc2da74d8b4572",
|
||||
"5b3a337e5acfc4704b4a19a0",
|
||||
"5c5952732e2216398b5abda2",
|
||||
"57d17e212459775a1179a0f5",
|
||||
"6267c6396b642f77f56f5c1c",
|
||||
"6272370ee4013c5d7e31f418",
|
||||
"6272379924e29f06af4d5ecb",
|
||||
"626becf9582c3e319310b837"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_required": false,
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_proto": "55d30c4c4bdc2db4468b457e"
|
||||
},
|
||||
{
|
||||
"_name": "mod_tactical",
|
||||
"_id": "5c6d5d8b2e221644fc630b3e",
|
||||
"_parent": "5c6d5d8b2e221644fc630b39",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Shift": 0,
|
||||
"Filter": [
|
||||
"57fd23e32459772d0805bcf1",
|
||||
"544909bb4bdc2d6f028b4577",
|
||||
"5d10b49bd7ad1a1a560708b0",
|
||||
"5c06595c0db834001a66af6c",
|
||||
"5a7b483fe899ef0016170d15",
|
||||
"61605d88ffa6e502ac5e7eeb",
|
||||
"5c5952732e2216398b5abda2"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_required": false,
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_proto": "55d30c4c4bdc2db4468b457e"
|
||||
},
|
||||
{
|
||||
"_name": "mod_foregrip",
|
||||
"_id": "5c6d5d8b2e221644fc630b40",
|
||||
"_parent": "5c6d5d8b2e221644fc630b39",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Shift": 0,
|
||||
"Filter": [
|
||||
"5c7fc87d2e221644f31c0298",
|
||||
"5cda9bcfd7f00c0c0b53e900",
|
||||
"59f8a37386f7747af3328f06",
|
||||
"619386379fb0c665d5490dbe",
|
||||
"5c87ca002e221600114cb150",
|
||||
"588226d124597767ad33f787",
|
||||
"588226dd24597767ad33f789",
|
||||
"588226e62459776e3e094af7",
|
||||
"588226ef24597767af46e39c",
|
||||
"59fc48e086f77463b1118392",
|
||||
"5fce0cf655375d18a253eff0",
|
||||
"5cf4fb76d7f00c065703d3ac",
|
||||
"5b057b4f5acfc4771e1bd3e9",
|
||||
"5c791e872e2216001219c40a",
|
||||
"558032614bdc2de7118b4585",
|
||||
"58c157be86f77403c74b2bb6",
|
||||
"58c157c886f774032749fb06",
|
||||
"5f6340d3ca442212f4047eb2",
|
||||
"591af28e86f77414a27a9e1d",
|
||||
"5c1cd46f2e22164bef5cfedb",
|
||||
"5c1bc4812e22164bef5cfde7",
|
||||
"5c1bc5612e221602b5429350",
|
||||
"5c1bc5af2e221602b412949b",
|
||||
"5c1bc5fb2e221602b1779b32",
|
||||
"5c1bc7432e221602b412949d",
|
||||
"5c1bc7752e221602b1779b34"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_required": false,
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_proto": "55d30c4c4bdc2db4468b457e"
|
||||
}
|
||||
],
|
||||
"CanPutIntoDuringTheRaid": true,
|
||||
"CantRemoveFromSlotsDuringRaid": [],
|
||||
"Durability": 100,
|
||||
"Accuracy": 0,
|
||||
"Recoil": -1,
|
||||
"Loudness": 0,
|
||||
"EffectiveDistance": 0,
|
||||
"Ergonomics": 8,
|
||||
"Velocity": 0,
|
||||
"RaidModdable": false,
|
||||
"ToolModdable": true,
|
||||
"BlocksFolding": false,
|
||||
"BlocksCollapsible": false,
|
||||
"IsAnimated": false,
|
||||
"HasShoulderContact": false,
|
||||
"SightingRange": 0,
|
||||
"DoubleActionAccuracyPenaltyMult": 1,
|
||||
"HeatFactor": 0.985,
|
||||
"CoolFactor": 1.055
|
||||
},
|
||||
"_proto": "55d459824bdc2d892f8b4573"
|
||||
},
|
||||
"6786e03b67ad44fd9b0fabd1": {
|
||||
"_id": "6786e03b67ad44fd9b0fabd1",
|
||||
"_name": "handguard_guerilla",
|
||||
"_parent": "55818a104bdc2db9688b4569",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Name": "",
|
||||
"ShortName": "",
|
||||
"Description": "",
|
||||
"Weight": 0.209,
|
||||
"BackgroundColor": "blue",
|
||||
"Width": 2,
|
||||
"Height": 1,
|
||||
"StackMaxSize": 1,
|
||||
"ItemSound": "mod",
|
||||
"Prefab": {
|
||||
"path": "assets/content/items/mods/handguards/handguard_guerilla.bundle",
|
||||
"rcid": ""
|
||||
},
|
||||
"UsePrefab": {
|
||||
"path": "",
|
||||
"rcid": ""
|
||||
},
|
||||
"StackObjectsCount": 1,
|
||||
"NotShownInSlot": false,
|
||||
"ExaminedByDefault": true,
|
||||
"ExamineTime": 1,
|
||||
"IsUndiscardable": false,
|
||||
"IsUnsaleable": false,
|
||||
"IsUnbuyable": false,
|
||||
"IsUngivable": false,
|
||||
"IsLockedafterEquip": false,
|
||||
"QuestItem": false,
|
||||
"LootExperience": 10,
|
||||
"ExamineExperience": 3,
|
||||
"HideEntrails": false,
|
||||
"RepairCost": 0,
|
||||
"RepairSpeed": 0,
|
||||
"ExtraSizeLeft": 1,
|
||||
"ExtraSizeRight": 0,
|
||||
"ExtraSizeUp": 0,
|
||||
"ExtraSizeDown": 0,
|
||||
"ExtraSizeForceAdd": false,
|
||||
"MergesWithChildren": true,
|
||||
"CanSellOnRagfair": true,
|
||||
"CanRequireOnRagfair": false,
|
||||
"ConflictingItems": [],
|
||||
"Unlootable": false,
|
||||
"UnlootableFromSlot": "FirstPrimaryWeapon",
|
||||
"UnlootableFromSide": [],
|
||||
"AnimationVariantsNumber": 0,
|
||||
"DiscardingBlock": false,
|
||||
"RagFairCommissionModifier": 1,
|
||||
"IsAlwaysAvailableForInsurance": false,
|
||||
"DiscardLimit": -1,
|
||||
"DropSoundType": "None",
|
||||
"InsuranceDisabled": false,
|
||||
"QuestStashMaxCount": 0,
|
||||
"IsSpecialSlotOnly": false,
|
||||
"IsUnremovable": false,
|
||||
"Grids": [],
|
||||
"Slots": [
|
||||
{
|
||||
"_name": "mod_mount_001",
|
||||
"_id": "5c6d5d8b2e221644fc630b3c",
|
||||
"_parent": "5c6d5d8b2e221644fc630b39",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Shift": 0,
|
||||
"Filter": [
|
||||
"5a800961159bd4315e3a1657",
|
||||
"57fd23e32459772d0805bcf1",
|
||||
"544909bb4bdc2d6f028b4577",
|
||||
"5d10b49bd7ad1a1a560708b0",
|
||||
"5c06595c0db834001a66af6c",
|
||||
"5cc9c20cd7f00c001336c65d",
|
||||
"5d2369418abbc306c62e0c80",
|
||||
"5b07dd285acfc4001754240d",
|
||||
"56def37dd2720bec348b456a",
|
||||
"5a7b483fe899ef0016170d15",
|
||||
"61605d88ffa6e502ac5e7eeb",
|
||||
"5a5f1ce64f39f90b401987bc",
|
||||
"560d657b4bdc2da74d8b4572",
|
||||
"5b3a337e5acfc4704b4a19a0",
|
||||
"5c5952732e2216398b5abda2",
|
||||
"57d17e212459775a1179a0f5",
|
||||
"6267c6396b642f77f56f5c1c",
|
||||
"6272370ee4013c5d7e31f418",
|
||||
"6272379924e29f06af4d5ecb",
|
||||
"626becf9582c3e319310b837"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_required": false,
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_proto": "55d30c4c4bdc2db4468b457e"
|
||||
},
|
||||
{
|
||||
"_name": "mod_foregrip",
|
||||
"_id": "5c6d5d8b2e221644fc630b40",
|
||||
"_parent": "5c6d5d8b2e221644fc630b39",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Shift": 0,
|
||||
"Filter": [
|
||||
"5c7fc87d2e221644f31c0298",
|
||||
"5cda9bcfd7f00c0c0b53e900",
|
||||
"59f8a37386f7747af3328f06",
|
||||
"619386379fb0c665d5490dbe",
|
||||
"5c87ca002e221600114cb150",
|
||||
"588226d124597767ad33f787",
|
||||
"588226dd24597767ad33f789",
|
||||
"588226e62459776e3e094af7",
|
||||
"588226ef24597767af46e39c",
|
||||
"59fc48e086f77463b1118392",
|
||||
"5fce0cf655375d18a253eff0",
|
||||
"5cf4fb76d7f00c065703d3ac",
|
||||
"5b057b4f5acfc4771e1bd3e9",
|
||||
"5c791e872e2216001219c40a",
|
||||
"558032614bdc2de7118b4585",
|
||||
"58c157be86f77403c74b2bb6",
|
||||
"58c157c886f774032749fb06",
|
||||
"5f6340d3ca442212f4047eb2",
|
||||
"591af28e86f77414a27a9e1d",
|
||||
"5c1cd46f2e22164bef5cfedb",
|
||||
"5c1bc4812e22164bef5cfde7",
|
||||
"5c1bc5612e221602b5429350",
|
||||
"5c1bc5af2e221602b412949b",
|
||||
"5c1bc5fb2e221602b1779b32",
|
||||
"5c1bc7432e221602b412949d",
|
||||
"5c1bc7752e221602b1779b34"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_required": false,
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_proto": "55d30c4c4bdc2db4468b457e"
|
||||
},
|
||||
{
|
||||
"_name": "mod_tactical",
|
||||
"_id": "5c6d5d8b2e221644fc630b3e",
|
||||
"_parent": "5c6d5d8b2e221644fc630b39",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Shift": 0,
|
||||
"Filter": [
|
||||
"57fd23e32459772d0805bcf1",
|
||||
"544909bb4bdc2d6f028b4577",
|
||||
"5d10b49bd7ad1a1a560708b0",
|
||||
"5c06595c0db834001a66af6c",
|
||||
"5a7b483fe899ef0016170d15",
|
||||
"61605d88ffa6e502ac5e7eeb",
|
||||
"5c5952732e2216398b5abda2"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_required": false,
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_proto": "55d30c4c4bdc2db4468b457e"
|
||||
}
|
||||
],
|
||||
"CanPutIntoDuringTheRaid": true,
|
||||
"CantRemoveFromSlotsDuringRaid": [],
|
||||
"Durability": 100,
|
||||
"Accuracy": 0,
|
||||
"Recoil": -1,
|
||||
"Loudness": 0,
|
||||
"EffectiveDistance": 0,
|
||||
"Ergonomics": 8,
|
||||
"Velocity": 0,
|
||||
"RaidModdable": false,
|
||||
"ToolModdable": true,
|
||||
"BlocksFolding": false,
|
||||
"BlocksCollapsible": false,
|
||||
"IsAnimated": false,
|
||||
"HasShoulderContact": false,
|
||||
"SightingRange": 0,
|
||||
"DoubleActionAccuracyPenaltyMult": 1,
|
||||
"HeatFactor": 0.985,
|
||||
"CoolFactor": 1.055
|
||||
},
|
||||
"_proto": "55d459824bdc2d892f8b4573"
|
||||
},
|
||||
"6786e03b67ad44fd9b0fabd2": {
|
||||
"_id": "6786e03b67ad44fd9b0fabd2",
|
||||
"_name": "handguard_turaco",
|
||||
"_parent": "55818a104bdc2db9688b4569",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Name": "",
|
||||
"ShortName": "",
|
||||
"Description": "",
|
||||
"Weight": 0.209,
|
||||
"BackgroundColor": "blue",
|
||||
"Width": 2,
|
||||
"Height": 1,
|
||||
"StackMaxSize": 1,
|
||||
"ItemSound": "mod",
|
||||
"Prefab": {
|
||||
"path": "assets/content/items/mods/handguards/handguard_turaco.bundle",
|
||||
"rcid": ""
|
||||
},
|
||||
"UsePrefab": {
|
||||
"path": "",
|
||||
"rcid": ""
|
||||
},
|
||||
"StackObjectsCount": 1,
|
||||
"NotShownInSlot": false,
|
||||
"ExaminedByDefault": true,
|
||||
"ExamineTime": 1,
|
||||
"IsUndiscardable": false,
|
||||
"IsUnsaleable": false,
|
||||
"IsUnbuyable": false,
|
||||
"IsUngivable": false,
|
||||
"IsLockedafterEquip": false,
|
||||
"QuestItem": false,
|
||||
"LootExperience": 10,
|
||||
"ExamineExperience": 3,
|
||||
"HideEntrails": false,
|
||||
"RepairCost": 0,
|
||||
"RepairSpeed": 0,
|
||||
"ExtraSizeLeft": 1,
|
||||
"ExtraSizeRight": 0,
|
||||
"ExtraSizeUp": 0,
|
||||
"ExtraSizeDown": 0,
|
||||
"ExtraSizeForceAdd": false,
|
||||
"MergesWithChildren": true,
|
||||
"CanSellOnRagfair": true,
|
||||
"CanRequireOnRagfair": false,
|
||||
"ConflictingItems": [],
|
||||
"Unlootable": false,
|
||||
"UnlootableFromSlot": "FirstPrimaryWeapon",
|
||||
"UnlootableFromSide": [],
|
||||
"AnimationVariantsNumber": 0,
|
||||
"DiscardingBlock": false,
|
||||
"RagFairCommissionModifier": 1,
|
||||
"IsAlwaysAvailableForInsurance": false,
|
||||
"DiscardLimit": -1,
|
||||
"DropSoundType": "None",
|
||||
"InsuranceDisabled": false,
|
||||
"QuestStashMaxCount": 0,
|
||||
"IsSpecialSlotOnly": false,
|
||||
"IsUnremovable": false,
|
||||
"Grids": [],
|
||||
"Slots": [
|
||||
{
|
||||
"_name": "mod_mount_000",
|
||||
"_id": "5c6d5d8b2e221644fc630b3b",
|
||||
"_parent": "5c6d5d8b2e221644fc630b39",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Shift": 0,
|
||||
"Filter": [
|
||||
"5a800961159bd4315e3a1657",
|
||||
"57fd23e32459772d0805bcf1",
|
||||
"544909bb4bdc2d6f028b4577",
|
||||
"5d10b49bd7ad1a1a560708b0",
|
||||
"5c06595c0db834001a66af6c",
|
||||
"5cc9c20cd7f00c001336c65d",
|
||||
"5d2369418abbc306c62e0c80",
|
||||
"5b07dd285acfc4001754240d",
|
||||
"56def37dd2720bec348b456a",
|
||||
"5a7b483fe899ef0016170d15",
|
||||
"61605d88ffa6e502ac5e7eeb",
|
||||
"5a5f1ce64f39f90b401987bc",
|
||||
"560d657b4bdc2da74d8b4572",
|
||||
"5b3a337e5acfc4704b4a19a0",
|
||||
"5c5952732e2216398b5abda2",
|
||||
"57d17e212459775a1179a0f5",
|
||||
"6267c6396b642f77f56f5c1c",
|
||||
"6272370ee4013c5d7e31f418",
|
||||
"6272379924e29f06af4d5ecb",
|
||||
"626becf9582c3e319310b837"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_required": false,
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_proto": "55d30c4c4bdc2db4468b457e"
|
||||
},
|
||||
{
|
||||
"_name": "mod_mount_001",
|
||||
"_id": "5c6d5d8b2e221644fc630b3c",
|
||||
"_parent": "5c6d5d8b2e221644fc630b39",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Shift": 0,
|
||||
"Filter": [
|
||||
"5a800961159bd4315e3a1657",
|
||||
"57fd23e32459772d0805bcf1",
|
||||
"544909bb4bdc2d6f028b4577",
|
||||
"5d10b49bd7ad1a1a560708b0",
|
||||
"5c06595c0db834001a66af6c",
|
||||
"5cc9c20cd7f00c001336c65d",
|
||||
"5d2369418abbc306c62e0c80",
|
||||
"5b07dd285acfc4001754240d",
|
||||
"56def37dd2720bec348b456a",
|
||||
"5a7b483fe899ef0016170d15",
|
||||
"61605d88ffa6e502ac5e7eeb",
|
||||
"5a5f1ce64f39f90b401987bc",
|
||||
"560d657b4bdc2da74d8b4572",
|
||||
"5b3a337e5acfc4704b4a19a0",
|
||||
"5c5952732e2216398b5abda2",
|
||||
"57d17e212459775a1179a0f5",
|
||||
"6267c6396b642f77f56f5c1c",
|
||||
"6272370ee4013c5d7e31f418",
|
||||
"6272379924e29f06af4d5ecb",
|
||||
"626becf9582c3e319310b837"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_required": false,
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_proto": "55d30c4c4bdc2db4468b457e"
|
||||
},
|
||||
{
|
||||
"_name": "mod_tactical",
|
||||
"_id": "5c6d5d8b2e221644fc630b3e",
|
||||
"_parent": "5c6d5d8b2e221644fc630b39",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Shift": 0,
|
||||
"Filter": [
|
||||
"57fd23e32459772d0805bcf1",
|
||||
"544909bb4bdc2d6f028b4577",
|
||||
"5d10b49bd7ad1a1a560708b0",
|
||||
"5c06595c0db834001a66af6c",
|
||||
"5a7b483fe899ef0016170d15",
|
||||
"61605d88ffa6e502ac5e7eeb",
|
||||
"5c5952732e2216398b5abda2"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_required": false,
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_proto": "55d30c4c4bdc2db4468b457e"
|
||||
},
|
||||
{
|
||||
"_name": "mod_foregrip",
|
||||
"_id": "5c6d5d8b2e221644fc630b40",
|
||||
"_parent": "5c6d5d8b2e221644fc630b39",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Shift": 0,
|
||||
"Filter": [
|
||||
"5c7fc87d2e221644f31c0298",
|
||||
"5cda9bcfd7f00c0c0b53e900",
|
||||
"59f8a37386f7747af3328f06",
|
||||
"619386379fb0c665d5490dbe",
|
||||
"5c87ca002e221600114cb150",
|
||||
"588226d124597767ad33f787",
|
||||
"588226dd24597767ad33f789",
|
||||
"588226e62459776e3e094af7",
|
||||
"588226ef24597767af46e39c",
|
||||
"59fc48e086f77463b1118392",
|
||||
"5fce0cf655375d18a253eff0",
|
||||
"5cf4fb76d7f00c065703d3ac",
|
||||
"5b057b4f5acfc4771e1bd3e9",
|
||||
"5c791e872e2216001219c40a",
|
||||
"558032614bdc2de7118b4585",
|
||||
"58c157be86f77403c74b2bb6",
|
||||
"58c157c886f774032749fb06",
|
||||
"5f6340d3ca442212f4047eb2",
|
||||
"591af28e86f77414a27a9e1d",
|
||||
"5c1cd46f2e22164bef5cfedb",
|
||||
"5c1bc4812e22164bef5cfde7",
|
||||
"5c1bc5612e221602b5429350",
|
||||
"5c1bc5af2e221602b412949b",
|
||||
"5c1bc5fb2e221602b1779b32",
|
||||
"5c1bc7432e221602b412949d",
|
||||
"5c1bc7752e221602b1779b34",
|
||||
"5a7dbfc1159bd40016548fde"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_required": false,
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_proto": "55d30c4c4bdc2db4468b457e"
|
||||
}
|
||||
],
|
||||
"CanPutIntoDuringTheRaid": true,
|
||||
"CantRemoveFromSlotsDuringRaid": [],
|
||||
"Durability": 100,
|
||||
"Accuracy": 0,
|
||||
"Recoil": -1,
|
||||
"Loudness": 0,
|
||||
"EffectiveDistance": 0,
|
||||
"Ergonomics": 8,
|
||||
"Velocity": 0,
|
||||
"RaidModdable": false,
|
||||
"ToolModdable": true,
|
||||
"BlocksFolding": false,
|
||||
"BlocksCollapsible": false,
|
||||
"IsAnimated": false,
|
||||
"HasShoulderContact": false,
|
||||
"SightingRange": 0,
|
||||
"DoubleActionAccuracyPenaltyMult": 1,
|
||||
"HeatFactor": 0.985,
|
||||
"CoolFactor": 1.055
|
||||
},
|
||||
"_proto": "55d459824bdc2d892f8b4573"
|
||||
},
|
||||
"6786e03b67ad44fd9b0fabd3": {
|
||||
"_id": "6786e03b67ad44fd9b0fabd3",
|
||||
"_name": "mag_aug_60",
|
||||
"_parent": "5448bc234bdc2d3c308b4569",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Name": "",
|
||||
"ShortName": "",
|
||||
"Description": "",
|
||||
"Weight": 0.58,
|
||||
"BackgroundColor": "yellow",
|
||||
"Width": 1,
|
||||
"Height": 2,
|
||||
"StackMaxSize": 1,
|
||||
"ItemSound": "mag_plastic",
|
||||
"Prefab": {
|
||||
"path": "assets/content/items/mods/magazines/mag_aug_60.bundle",
|
||||
"rcid": ""
|
||||
},
|
||||
"UsePrefab": {
|
||||
"path": "",
|
||||
"rcid": ""
|
||||
},
|
||||
"StackObjectsCount": 1,
|
||||
"NotShownInSlot": false,
|
||||
"ExaminedByDefault": true,
|
||||
"ExamineTime": 1,
|
||||
"IsUndiscardable": false,
|
||||
"IsUnsaleable": false,
|
||||
"IsUnbuyable": false,
|
||||
"IsUngivable": false,
|
||||
"IsLockedafterEquip": false,
|
||||
"QuestItem": false,
|
||||
"LootExperience": 10,
|
||||
"ExamineExperience": 2,
|
||||
"HideEntrails": false,
|
||||
"RepairCost": 0,
|
||||
"RepairSpeed": 0,
|
||||
"ExtraSizeLeft": 0,
|
||||
"ExtraSizeRight": 0,
|
||||
"ExtraSizeUp": 0,
|
||||
"ExtraSizeDown": 1,
|
||||
"ExtraSizeForceAdd": false,
|
||||
"MergesWithChildren": true,
|
||||
"CanSellOnRagfair": false,
|
||||
"CanRequireOnRagfair": false,
|
||||
"ConflictingItems": [],
|
||||
"Unlootable": false,
|
||||
"UnlootableFromSlot": "FirstPrimaryWeapon",
|
||||
"UnlootableFromSide": [],
|
||||
"AnimationVariantsNumber": 0,
|
||||
"DiscardingBlock": false,
|
||||
"RagFairCommissionModifier": 1,
|
||||
"IsAlwaysAvailableForInsurance": false,
|
||||
"DiscardLimit": -1,
|
||||
"DropSoundType": "None",
|
||||
"InsuranceDisabled": false,
|
||||
"QuestStashMaxCount": 0,
|
||||
"IsSpecialSlotOnly": false,
|
||||
"IsUnremovable": false,
|
||||
"Grids": [],
|
||||
"Slots": [],
|
||||
"CanPutIntoDuringTheRaid": true,
|
||||
"CantRemoveFromSlotsDuringRaid": [],
|
||||
"Durability": 100,
|
||||
"Accuracy": 0,
|
||||
"Recoil": 0,
|
||||
"Loudness": 0,
|
||||
"EffectiveDistance": 0,
|
||||
"Ergonomics": -16,
|
||||
"Velocity": 0,
|
||||
"RaidModdable": true,
|
||||
"ToolModdable": false,
|
||||
"BlocksFolding": false,
|
||||
"BlocksCollapsible": false,
|
||||
"IsAnimated": false,
|
||||
"HasShoulderContact": false,
|
||||
"SightingRange": 0,
|
||||
"DoubleActionAccuracyPenaltyMult": 1,
|
||||
"magAnimationIndex": 5,
|
||||
"Cartridges": [
|
||||
{
|
||||
"_name": "cartridges",
|
||||
"_id": "59c1383d86f774290a37e0cb",
|
||||
"_parent": "59c1383d86f774290a37e0ca",
|
||||
"_max_count": 60,
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"59e6920f86f77411d82aa167",
|
||||
"59e6927d86f77411da468256",
|
||||
"54527a984bdc2d4e668b4567",
|
||||
"54527ac44bdc2d36668b4567",
|
||||
"59e68f6f86f7746c9f75e846",
|
||||
"59e6906286f7746c9f75e847",
|
||||
"59e690b686f7746c9f75e848",
|
||||
"59e6918f86f7746c9f75e849",
|
||||
"60194943740c5d77f6705eea",
|
||||
"601949593ae8f707c4608daa",
|
||||
"5c0d5ae286f7741e46554302",
|
||||
"5fbe3ffdf8b6a877a729ea82",
|
||||
"5fd20ff893a8961fc660a954",
|
||||
"619636be6db0f2477964e710",
|
||||
"6196364158ef8c428c287d9f",
|
||||
"6196365d58ef8c428c287da1"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "5748538b2459770af276a261"
|
||||
}
|
||||
],
|
||||
"CanFast": true,
|
||||
"CanHit": false,
|
||||
"CanAdmin": false,
|
||||
"LoadUnloadModifier": 60,
|
||||
"CheckTimeModifier": 20,
|
||||
"CheckOverride": 0,
|
||||
"ReloadMagType": "ExternalMagazine",
|
||||
"VisibleAmmoRangesString": "1-3",
|
||||
"MalfunctionChance": 0.3,
|
||||
"TagColor": 0,
|
||||
"TagName": ""
|
||||
},
|
||||
"_proto": "55802d5f4bdc2dac148b458e"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"traderId":"5935c25fb3acc3127c3d8cd9",
|
||||
"assorts":{
|
||||
"items":[
|
||||
{
|
||||
"_id":"6786e03b67ad44fd9b0fabd0",
|
||||
"_tpl":"6786e03b67ad44fd9b0fabd0",
|
||||
"parentId":"hideout",
|
||||
"slotId":"hideout",
|
||||
"upd":{
|
||||
"UnlimitedCount":true,
|
||||
"StackObjectsCount":999999
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id":"6786e03b67ad44fd9b0fabd1",
|
||||
"_tpl":"6786e03b67ad44fd9b0fabd1",
|
||||
"parentId":"hideout",
|
||||
"slotId":"hideout",
|
||||
"upd":{
|
||||
"UnlimitedCount":true,
|
||||
"StackObjectsCount":999999
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id":"6786e03b67ad44fd9b0fabd2",
|
||||
"_tpl":"6786e03b67ad44fd9b0fabd2",
|
||||
"parentId":"hideout",
|
||||
"slotId":"hideout",
|
||||
"upd":{
|
||||
"UnlimitedCount":true,
|
||||
"StackObjectsCount":999999
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id":"6786e03b67ad44fd9b0fabd3",
|
||||
"_tpl":"6786e03b67ad44fd9b0fabd3",
|
||||
"parentId":"hideout",
|
||||
"slotId":"hideout",
|
||||
"upd":{
|
||||
"UnlimitedCount":true,
|
||||
"StackObjectsCount":999999
|
||||
}
|
||||
}
|
||||
],
|
||||
"barter_scheme":{
|
||||
"6786e03b67ad44fd9b0fabd0":[
|
||||
[
|
||||
{
|
||||
"count":21000,
|
||||
"_tpl":"5449016a4bdc2d6f028b456f"
|
||||
}
|
||||
]
|
||||
],
|
||||
"6786e03b67ad44fd9b0fabd1":[
|
||||
[
|
||||
{
|
||||
"count":21000,
|
||||
"_tpl":"5449016a4bdc2d6f028b456f"
|
||||
}
|
||||
]
|
||||
],
|
||||
"6786e03b67ad44fd9b0fabd2":[
|
||||
[
|
||||
{
|
||||
"count":21000,
|
||||
"_tpl":"5449016a4bdc2d6f028b456f"
|
||||
}
|
||||
]
|
||||
],
|
||||
"6786e03b67ad44fd9b0fabd3":[
|
||||
[
|
||||
{
|
||||
"count":21000,
|
||||
"_tpl":"5449016a4bdc2d6f028b456f"
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"loyal_level_items":{
|
||||
"6786e03b67ad44fd9b0fabd0":3,
|
||||
"6786e03b67ad44fd9b0fabd1":3,
|
||||
"6786e03b67ad44fd9b0fabd2":3,
|
||||
"6786e03b67ad44fd9b0fabd3":3
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
"use strict";
|
||||
|
||||
let mydb;
|
||||
|
||||
class Mod {
|
||||
postDBLoad(container) {
|
||||
// Credit Banner
|
||||
console.log(`
|
||||
=======================================
|
||||
| AUG Attachment Pack |
|
||||
| Created by: KoKaZ93 |
|
||||
| 3.10 Port made by: GMAK3R |
|
||||
=======================================
|
||||
`);
|
||||
|
||||
const modLoader = container.resolve("PreSptModLoader");
|
||||
const importerUtil = container.resolve("ImporterUtil");
|
||||
const db = container.resolve("DatabaseServer").getTables();
|
||||
const locales = db.locales.global;
|
||||
const items = db.templates.items;
|
||||
const handbook = db.templates.handbook.Items;
|
||||
const peacekeeper = db.traders["5935c25fb3acc3127c3d8cd9"];
|
||||
|
||||
mydb = importerUtil.loadRecursive(`${modLoader.getModPath("AUG_AttachmentPack")}database/`);
|
||||
|
||||
for (const item in mydb.templates.items) {
|
||||
items[item] = mydb.templates.items[item];
|
||||
}
|
||||
|
||||
for (const item of mydb.templates.handbook.Items) {
|
||||
handbook.push(item);
|
||||
}
|
||||
|
||||
for (const item of mydb.traders.assort.assorts.items) {
|
||||
peacekeeper.assort.items.push(item);
|
||||
}
|
||||
|
||||
for (const bc in mydb.traders.assort.assorts.barter_scheme) {
|
||||
peacekeeper.assort.barter_scheme[bc] = mydb.traders.assort.assorts.barter_scheme[bc];
|
||||
}
|
||||
|
||||
for (const level in mydb.traders.assort.assorts.loyal_level_items) {
|
||||
peacekeeper.assort.loyal_level_items[level] = mydb.traders.assort.assorts.loyal_level_items[level];
|
||||
}
|
||||
|
||||
for (const localeID in locales) {
|
||||
if (localeID == "en") {
|
||||
for (const [itemId, template] of Object.entries(mydb.locales.en.templates)) {
|
||||
for (const [key, value] of Object.entries(template)) {
|
||||
locales[localeID][`${itemId} ${key}`] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Mod.addHandguardToFilters(db);
|
||||
Mod.addMagazineToFilters(db);
|
||||
}
|
||||
|
||||
static addHandguardToFilters(db) {
|
||||
const isItemSlotsExist = (item) =>
|
||||
item._props && item._props.Slots && item._props.Slots.length > 0;
|
||||
const attachmentToAdd = ["6786e03b67ad44fd9b0fabd0", "6786e03b67ad44fd9b0fabd1", "6786e03b67ad44fd9b0fabd2"];
|
||||
const attachmentItemId = "634e61b0767cb15c4601a877";
|
||||
|
||||
for (const item of Object.values(db.templates.items)) {
|
||||
if (isItemSlotsExist(item)) {
|
||||
for (const slot of item._props.Slots) {
|
||||
if (slot._props.filters.some((filter) => filter.Filter.includes(attachmentItemId))) {
|
||||
slot._props.filters.forEach((filter) => {
|
||||
if (filter.Filter.includes(attachmentItemId)) {
|
||||
filter.Filter.push(...attachmentToAdd);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static addMagazineToFilters(db) {
|
||||
const isItemSlotsExist = (item) =>
|
||||
item._props && item._props.Slots && item._props.Slots.length > 0;
|
||||
const attachmentToAdd = "6786e03b67ad44fd9b0fabd3";
|
||||
const attachmentItemId = "630e1adbbd357927e4007c09";
|
||||
|
||||
for (const item of Object.values(db.templates.items)) {
|
||||
if (isItemSlotsExist(item)) {
|
||||
for (const slot of item._props.Slots) {
|
||||
if (slot._props.filters.some((filter) => filter.Filter.includes(attachmentItemId))) {
|
||||
slot._props.filters.forEach((filter) => {
|
||||
if (filter.Filter.includes(attachmentItemId)) {
|
||||
filter.Filter.push(attachmentToAdd);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { mod: new Mod() };
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "AUG Attachment Pack",
|
||||
"author": "KoKaZ93",
|
||||
"license": "CC BY-NC-SA 3.0",
|
||||
"version": "1.0.4",
|
||||
"sptVersion": "3.10.x",
|
||||
"main": "mod.js",
|
||||
"isBundleMod": true
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
[General]
|
||||
gameName=spt
|
||||
modid=0
|
||||
version=d2025.1.13.0
|
||||
newestVersion=
|
||||
category="1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=Additional Clothing BEAR 310.zip
|
||||
repository=Nexus
|
||||
ignoredVersion=
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=false
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2025-01-13T13:28:06Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
1\modid=0
|
||||
1\fileid=0
|
||||
size=1
|
||||
@@ -0,0 +1,24 @@
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
distribute this software, either in source code form or as a compiled
|
||||
binary, for any purpose, commercial or non-commercial, and by any
|
||||
means.
|
||||
|
||||
In jurisdictions that recognize copyright laws, the author or authors
|
||||
of this software dedicate any and all copyright interest in the
|
||||
software to the public domain. We make this dedication for the benefit
|
||||
of the public at large and to the detriment of our heirs and
|
||||
successors. We intend this dedication to be an overt act of
|
||||
relinquishment in perpetuity of all present and future rights to this
|
||||
software under copyright law.
|
||||
|
||||
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 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.
|
||||
|
||||
For more information, please refer to <https://unlicense.org>
|
||||
@@ -0,0 +1,423 @@
|
||||
{
|
||||
"manifest": [
|
||||
{
|
||||
"key": "Tops/Gorka4MC_Top.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Gorka4MC_Hands.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"assets/content/hands/bear/bear_hands_watch_textures.bundle",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle",
|
||||
"shaders"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/EMR_voin.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/EMR_SPN.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/EMR_SPN_Hands.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/bear/bear_hands_watch_texture.bundles",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/EMRAutumnSumrak.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Sumrak_EMRAutumn_Hands.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/EMRSumrak.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Sumrak_EMR_Hands.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/BEARTacticalEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/TIGR_SURPAT.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/TIGR_EMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/Top_SS_SPN.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_SS_SPN.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/bear/bear_hands_watch_texture.bundles",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/Top_Adaptive_SS.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_AdaptiveSS.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/SRVV_SS.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_SURPAT_lynx.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/hands/bear/bear_hands_watch_texture.bundles",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/Top_SURPAT_lynx.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_MC_lynx.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/hands/bear/bear_hands_watch_texture.bundles",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/Top_MC_lynx.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/MC_voin.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/TIGR_MC.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_EMR_lynx.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/hands/bear/bear_hands_watch_texture.bundles",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/EMR_lynx.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/Top_MC_SPN.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_MC_SPN.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/bear/bear_hands_watch_texture.bundles",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/SRVV_MC.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/ReconMC.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/Top_SURPAT_Polevoi.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_SURPAT_Polevoi.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"assets/content/hands/bear/bear_hands_watch_texture.bundles",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle",
|
||||
"shaders"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/Top_Gorka5EMRAutumn.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_Gorka5EMRAutumn.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"assets/content/hands/bear/bear_hands_watch_texture.bundles",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle",
|
||||
"shaders"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/ReconSURPAT.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/BEARTacticalSS.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/URON_SURPAT.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/URON_SS.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/Top_SummerFieldEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_SummerFieldEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"assets/content/hands/bear/bear_hands_watch_texture.bundles",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle",
|
||||
"shaders"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/Top_TigrEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_TigrEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/bear/bear_hands_watch_texture.bundles",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/Top_GhostEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_GhostEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/bear/bear_hands_watch_texture.bundles",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/Top_InfilEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_InfilEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/Bottom_InfilEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/Bottom_GhostEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/Bottom_SummerFieldEMR.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
mods/Additional Clothing BEAR/user/mods/Additional Clothing BEAR/bundles/Hands/Gorka4MC_Hands.bundle
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
mods/Additional Clothing BEAR/user/mods/Additional Clothing BEAR/bundles/Hands/Hands_EMR_lynx.bundle
LFS
BIN
Binary file not shown.
mods/Additional Clothing BEAR/user/mods/Additional Clothing BEAR/bundles/Hands/Hands_GhostEMR.bundle
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
mods/Additional Clothing BEAR/user/mods/Additional Clothing BEAR/bundles/Hands/Hands_InfilEMR.bundle
LFS
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
mods/Additional Clothing BEAR/user/mods/Additional Clothing BEAR/bundles/Tops/EMRAutumnSumrak.bundle
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
mods/Additional Clothing BEAR/user/mods/Additional Clothing BEAR/bundles/Tops/Top_Adaptive_SS.bundle
LFS
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
mods/Additional Clothing BEAR/user/mods/Additional Clothing BEAR/bundles/Tops/Top_SURPAT_lynx.bundle
LFS
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
+546
@@ -0,0 +1,546 @@
|
||||
[
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "6771d61a8d0bc58bd4ccb811",
|
||||
"outfitId": "6771d61a8d0bc58bd4ccb812",
|
||||
"topId": "6771d61a8d0bc58bd4ccb813",
|
||||
"handsId": "6771d61a8d0bc58bd4ccb814",
|
||||
"locales": {
|
||||
"en": "Gorka 4 (Multicam)"
|
||||
},
|
||||
"topBundlePath": "Tops/Gorka4MC_Top.bundle",
|
||||
"handsBundlePath": "Hands/Gorka4MC_Hands.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4ad6f53dd23f43f224ea7",
|
||||
"outfitId": "66e4ad6f53dd23f43f224ea8",
|
||||
"topId": "66e4ad6f53dd23f43f224ea9",
|
||||
"handsId": "66e4ad6f53dd23f43f224ea6",
|
||||
"locales": {
|
||||
"en": "SSO Lynx Fleece (EMR)"
|
||||
},
|
||||
"topBundlePath": "Tops/EMR_lynx.bundle",
|
||||
"handsBundlePath": "Hands/Hands_EMR_lynx.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4d25bbf73ebfd35c3e771",
|
||||
"outfitId": "66e4d25bbf73ebfd35c3e772",
|
||||
"topId": "66e4d25bbf73ebfd35c3e773",
|
||||
"handsId": "66e4d25bbf73ebfd35c3e774",
|
||||
"locales": {
|
||||
"en": "SSO Lynx Fleece (Multicam)"
|
||||
},
|
||||
"topBundlePath": "Tops/Top_MC_lynx.bundle",
|
||||
"handsBundlePath": "Hands/Hands_MC_lynx.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4d342edfad85a79666024",
|
||||
"outfitId": "66e4d342edfad85a79666025",
|
||||
"topId": "66e4d342edfad85a79666026",
|
||||
"handsId": "66e4d342edfad85a79666027",
|
||||
"locales": {
|
||||
"en": "SSO Lynx Fleece (SURPAT)"
|
||||
},
|
||||
"topBundlePath": "Tops/Top_SURPAT_lynx.bundle",
|
||||
"handsBundlePath": "Hands/Hands_SURPAT_lynx.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4af625799999e89eb2df0",
|
||||
"outfitId": "66e4af625799999e89eb2df1",
|
||||
"topId": "66e4af625799999e89eb2df2",
|
||||
"handsId": "66e4af625799999e89eb2df3",
|
||||
"locales": {
|
||||
"en": "SPN (EMR)"
|
||||
},
|
||||
"topBundlePath": "Tops/EMR_SPN.bundle",
|
||||
"handsBundlePath": "Hands/EMR_SPN_Hands.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4d3ed52e082a3c17d1fc7",
|
||||
"outfitId": "66e4d3ed52e082a3c17d1fc6",
|
||||
"topId": "66e4d3ed52e082a3c17d1fc5",
|
||||
"handsId": "66e4d3ed52e082a3c17d1fc4",
|
||||
"locales": {
|
||||
"en": "SPN (Multicam)"
|
||||
},
|
||||
"topBundlePath": "Tops/Top_MC_SPN.bundle",
|
||||
"handsBundlePath": "Hands/Hands_MC_SPN.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4d4ddbf48a499e2920ff2",
|
||||
"outfitId": "66e4d4ddbf48a499e2920ff3",
|
||||
"topId": "66e4d4ddbf48a499e2920ff4",
|
||||
"handsId": "66e4d4ddbf48a499e2920ff5",
|
||||
"locales": {
|
||||
"en": "SPN (SURPAT Savanna)"
|
||||
},
|
||||
"topBundlePath": "Tops/Top_SS_SPN.bundle",
|
||||
"handsBundlePath": "Hands/Hands_SS_SPN.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4b26563c45b2ace969ed7",
|
||||
"outfitId": "66e4b26563c45b2ace969ed6",
|
||||
"topId": "66e4b26563c45b2ace969ed5",
|
||||
"handsId": "66e4b26563c45b2ace969ed4",
|
||||
"locales": {
|
||||
"en": "Sumrak (EMR Autumn)"
|
||||
},
|
||||
"topBundlePath": "Tops/EMRAutumnSumrak.bundle",
|
||||
"handsBundlePath": "Hands/Sumrak_EMRAutumn_Hands.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4b44a15177064d80f9889",
|
||||
"outfitId": "66e4b44a15177064d80f9888",
|
||||
"topId": "66e4b44a15177064d80f9887",
|
||||
"handsId": "66e4b44a15177064d80f9886",
|
||||
"locales": {
|
||||
"en": "Sumrak (EMR)"
|
||||
},
|
||||
"topBundlePath": "Tops/EMRSumrak.bundle",
|
||||
"handsBundlePath": "Hands/Sumrak_EMR_Hands.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4c27dae44eb8001be2420",
|
||||
"outfitId": "66e4c27dae44eb8001be2421",
|
||||
"topId": "66e4c27dae44eb8001be2422",
|
||||
"handsId": "66e4c27dae44eb8001be2423",
|
||||
"locales": {
|
||||
"en": "BEAR BDU Top (SURPAT Savanna)"
|
||||
},
|
||||
"topBundlePath": "Tops/Top_Adaptive_SS.bundle",
|
||||
"handsBundlePath": "Hands/Hands_AdaptiveSS.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4c3c614e2d053ce6f4749",
|
||||
"outfitId": "66e4c3c614e2d053ce6f4748",
|
||||
"topId": "66e4c3c614e2d053ce6f4747",
|
||||
"handsId": "66e4c3c614e2d053ce6f4746",
|
||||
"locales": {
|
||||
"en": "Ghost Marksman (EMR)"
|
||||
},
|
||||
"topBundlePath": "Tops/Top_GhostEMR.bundle",
|
||||
"handsBundlePath": "Hands/Hands_GhostEMR.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "6771de297e873d83edcaa75e",
|
||||
"outfitId": "6771de31b311b632322d664e",
|
||||
"topId": "6771de39123660ae4a1dee1e",
|
||||
"handsId": "6771de1ef569f7df6f281670",
|
||||
"locales": {
|
||||
"en": "Gorka 5 (EMR Autumn)"
|
||||
},
|
||||
"topBundlePath": "Tops/Top_Gorka5EMRAutumn.bundle",
|
||||
"handsBundlePath": "Hands/Hands_Gorka5EMRAutumn.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4c82bd9d2cc4f68db9048",
|
||||
"outfitId": "66e4c82bd9d2cc4f68db9047",
|
||||
"topId": "66e4c82bd9d2cc4f68db9046",
|
||||
"handsId": "66e4c82bd9d2cc4f68db9045",
|
||||
"locales": {
|
||||
"en": "Gorka 5 (EMR)"
|
||||
},
|
||||
"topBundlePath": "Tops/Top_SummerFieldEMR.bundle",
|
||||
"handsBundlePath": "Hands/Hands_SummerFieldEMR.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4c92b1f9e848432250581",
|
||||
"outfitId": "66e4c92b1f9e848432250582",
|
||||
"topId": "66e4c92b1f9e848432250583",
|
||||
"handsId": "66e4c92b1f9e848432250584",
|
||||
"locales": {
|
||||
"en": "Gorka 5 (SURPAT)"
|
||||
},
|
||||
"topBundlePath": "Tops/Top_SURPAT_Polevoi.bundle",
|
||||
"handsBundlePath": "Hands/Hands_SURPAT_Polevoi.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4ca3fd76a2019ea0a1365",
|
||||
"outfitId": "66e4ca3fd76a2019ea0a1366",
|
||||
"topId": "66e4ca3fd76a2019ea0a1367",
|
||||
"handsId": "66e4ca3fd76a2019ea0a1368",
|
||||
"locales": {
|
||||
"en": "Infil Top (EMR)"
|
||||
},
|
||||
"topBundlePath": "Tops/Top_InfilEMR.bundle",
|
||||
"handsBundlePath": "Hands/Hands_InfilEMR.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "top",
|
||||
"suiteId": "66e4d029e00dc71709d52681",
|
||||
"outfitId": "66e4d029e00dc71709d52682",
|
||||
"topId": "66e4d029e00dc71709d52683",
|
||||
"handsId": "66e4d029e00dc71709d52684",
|
||||
"locales": {
|
||||
"en": "TIGR (EMR)"
|
||||
},
|
||||
"topBundlePath": "Tops/Top_TigrEMR.bundle",
|
||||
"handsBundlePath": "Hands/Hands_TigrEMR.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4d7c5d1cbf7118d7c7a97",
|
||||
"outfitId": "66e4d7c5d1cbf7118d7c7a96",
|
||||
"bottomId": "66e4d7c5d1cbf7118d7c7a95",
|
||||
"locales": {
|
||||
"en": "BEAR Tactical (EMR)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/BEARTacticalEMR.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4d8a2b3e5a7996cbb2963",
|
||||
"outfitId": "66e4d8a2b3e5a7996cbb2964",
|
||||
"bottomId": "66e4d8a2b3e5a7996cbb2965",
|
||||
"locales": {
|
||||
"en": "BEAR Tactical (SURPAT Savanna)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/BEARTacticalSS.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4d9c9a6b75b54ba1cbb73",
|
||||
"outfitId": "66e4d9c9a6b75b54ba1cbb74",
|
||||
"bottomId": "66e4d9c9a6b75b54ba1cbb75",
|
||||
"locales": {
|
||||
"en": "URON (SURPAT Savanna)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/URON_SS.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4da8b7fdadb407a49d278",
|
||||
"outfitId": "66e4da8b7fdadb407a49d277",
|
||||
"bottomId": "66e4da8b7fdadb407a49d276",
|
||||
"locales": {
|
||||
"en": "URON (SURPAT)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/URON_SURPAT.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4db75ebaf79e16fde5a82",
|
||||
"outfitId": "66e4db75ebaf79e16fde5a83",
|
||||
"bottomId": "66e4db75ebaf79e16fde5a84",
|
||||
"locales": {
|
||||
"en": "TIGR (SURPAT)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/TIGR_SURPAT.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4e49cd46508acae924468",
|
||||
"outfitId": "66e4e49cd46508acae924467",
|
||||
"bottomId": "66e4e49cd46508acae924466",
|
||||
"locales": {
|
||||
"en": "TIGR (Multicam)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/TIGR_MC.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4e359c07b695a60671138",
|
||||
"outfitId": "66e4e359c07b695a60671137",
|
||||
"bottomId": "66e4e359c07b695a60671136",
|
||||
"locales": {
|
||||
"en": "TIGR (EMR)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/TIGR_EMR.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4e4010aeefeddc2fadd81",
|
||||
"outfitId": "66e4e4010aeefeddc2fadd82",
|
||||
"bottomId": "66e4e4010aeefeddc2fadd83",
|
||||
"locales": {
|
||||
"en": "SRVV (Multicam)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/SRVV_MC.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4e5d3ec824cdad648bda9",
|
||||
"outfitId": "66e4e5d3ec824cdad648bda8",
|
||||
"bottomId": "66e4e5d3ec824cdad648bda7",
|
||||
"locales": {
|
||||
"en": "SRVV (SURPAT Savanna)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/SRVV_SS.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4e6aaabd48e2279d36601",
|
||||
"outfitId": "66e4e6aaabd48e2279d36602",
|
||||
"bottomId": "66e4e6aaabd48e2279d36603",
|
||||
"locales": {
|
||||
"en": "BEAR Recon (Multicam)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/ReconMC.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4e7c370548c30ed3f6714",
|
||||
"outfitId": "66e4e7c370548c30ed3f6715",
|
||||
"bottomId": "66e4e7c370548c30ed3f6716",
|
||||
"locales": {
|
||||
"en": "BEAR Recon (SURPAT)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/ReconSURPAT.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4e8767379e0c40e906988",
|
||||
"outfitId": "66e4e8767379e0c40e906987",
|
||||
"bottomId": "66e4e8767379e0c40e906986",
|
||||
"locales": {
|
||||
"en": "VOIN (Multicam)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/MC_voin.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4e8f526bfc8238f707062",
|
||||
"outfitId": "66e4e8f526bfc8238f707063",
|
||||
"bottomId": "66e4e8f526bfc8238f707064",
|
||||
"locales": {
|
||||
"en": "VOIN (EMR)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/EMR_voin.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4e9cd5f6409352964a8e9",
|
||||
"outfitId": "66e4e9cd5f6409352964a8e8",
|
||||
"bottomId": "66e4e9cd5f6409352964a8e7",
|
||||
"locales": {
|
||||
"en": "Gorka 5 Lower (EMR)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/Bottom_SummerFieldEMR.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4eac38bddd59019002a43",
|
||||
"outfitId": "66e4eac38bddd59019002a44",
|
||||
"bottomId": "66e4eac38bddd59019002a45",
|
||||
"locales": {
|
||||
"en": "Infil Lower (EMR)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/Bottom_InfilEMR.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
},
|
||||
{
|
||||
"type": "bottom",
|
||||
"suiteId": "66e4ebb603f6a711eba72f29",
|
||||
"outfitId": "66e4ebb603f6a711eba72f28",
|
||||
"bottomId": "66e4ebb603f6a711eba72f27",
|
||||
"locales": {
|
||||
"en": "BEAR Gorka SSO (EMR)"
|
||||
},
|
||||
"bottomBundlePath": "Bottoms/Bottom_GhostEMR.bundle",
|
||||
"traderId": "RAGMAN",
|
||||
"loyaltyLevel": 1,
|
||||
"profileLevel": 1,
|
||||
"standing": 0,
|
||||
"currencyId": "ROUBLES",
|
||||
"price": 0
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "Additional Clothing BEAR",
|
||||
"version": "3.0.0",
|
||||
"sptVersion": "3.10.*",
|
||||
"loadBefore": [],
|
||||
"loadAfter": [],
|
||||
"incompatibilities": [],
|
||||
"isBundleMod": true,
|
||||
"main": "src/mod.js",
|
||||
"scripts": {
|
||||
"setup": "npm i",
|
||||
"build": "node ./build.mjs",
|
||||
"buildinfo": "node ./build.mjs --verbose",
|
||||
"buildcopy": "node ./buildcopy.mjs"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "20.11",
|
||||
"@typescript-eslint/eslint-plugin": "7.2",
|
||||
"@typescript-eslint/parser": "7.2",
|
||||
"archiver": "^6.0",
|
||||
"eslint": "8.57",
|
||||
"fs-extra": "11.2",
|
||||
"ignore": "^5.2",
|
||||
"tsyringe": "4.8.0",
|
||||
"typescript": "5.4",
|
||||
"winston": "3.12"
|
||||
},
|
||||
"author": "Ashley Schaeffer BMW",
|
||||
"contributors": "",
|
||||
"license": "UNLICENSE"
|
||||
}
|
||||
+323
@@ -0,0 +1,323 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.CustomClothingService = void 0;
|
||||
const configConsts_1 = require("./references/configConsts");
|
||||
const node_fs_1 = __importDefault(require("node:fs"));
|
||||
const node_path_1 = __importDefault(require("node:path"));
|
||||
class CustomClothingService {
|
||||
instanceManager;
|
||||
preSptLoad(instanceManager) {
|
||||
this.instanceManager = instanceManager;
|
||||
}
|
||||
postDBLoad() {
|
||||
const clothingJsonsPath = node_path_1.default.join(__dirname, "../db/clothing");
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Scanning directory for clothing JSON files: ${clothingJsonsPath}`);
|
||||
}
|
||||
const jsonFiles = node_fs_1.default.readdirSync(clothingJsonsPath).filter(file => file.endsWith(".json"));
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Found ${jsonFiles.length} JSON file(s) in ${clothingJsonsPath}`);
|
||||
}
|
||||
for (const jsonFile of jsonFiles) {
|
||||
const filePath = node_path_1.default.join(clothingJsonsPath, jsonFile);
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Processing file: ${jsonFile} at path: ${filePath}`);
|
||||
}
|
||||
try {
|
||||
// Read and parse the JSON file
|
||||
const clothingConfigs = this.readJsonFile(filePath);
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Parsed JSON content from ${jsonFile}:`, clothingConfigs);
|
||||
}
|
||||
// Process the parsed content
|
||||
for (const clothingConfig of clothingConfigs) {
|
||||
if (this.instanceManager.debug) {
|
||||
console.log("Processing clothing config:", clothingConfig);
|
||||
}
|
||||
try {
|
||||
this.processClothingConfig(clothingConfig);
|
||||
if (this.instanceManager.debug) {
|
||||
console.log("Successfully processed clothing config:", clothingConfig);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
console.error(`Error processing config in ${jsonFile}:`, error);
|
||||
}
|
||||
}
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Successfully processed all configs in ${jsonFile}.`);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
console.error(`Error reading or parsing ${jsonFile}:`, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
processClothingConfig(clothingConfig) {
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Processing config of type: ${clothingConfig.type}`);
|
||||
}
|
||||
if (clothingConfig.type === "top") {
|
||||
this.addTop(clothingConfig);
|
||||
}
|
||||
else if (clothingConfig.type === "bottom") {
|
||||
this.addBottom(clothingConfig);
|
||||
}
|
||||
else {
|
||||
console.error("Unknown config type:", clothingConfig.type);
|
||||
}
|
||||
}
|
||||
addSuiteToTrader(traderId, outfitId, suiteId, loyaltyLevel, profileLevel, standing, currencyId, price) {
|
||||
const traderIdFromEnum = configConsts_1.traderIDs[traderId] || traderId;
|
||||
const currencyIdFromEnum = configConsts_1.currencyIDs[currencyId] || currencyId;
|
||||
this.instanceManager.database.traders[traderIdFromEnum].base.customization_seller = true;
|
||||
if (!this.instanceManager.database.traders[traderIdFromEnum].suits) {
|
||||
this.instanceManager.database.traders[traderIdFromEnum].suits = [];
|
||||
}
|
||||
const newTraderOutfit = {
|
||||
"_id": outfitId,
|
||||
"tid": traderIdFromEnum,
|
||||
"suiteId": suiteId,
|
||||
"isActive": true,
|
||||
"isHiddenInPVE": false,
|
||||
"externalObtain": false,
|
||||
"internalObtain": true,
|
||||
"requirements": {
|
||||
"loyaltyLevel": loyaltyLevel,
|
||||
"profileLevel": profileLevel,
|
||||
"standing": standing,
|
||||
"skillRequirements": [],
|
||||
"questRequirements": [],
|
||||
"achievementRequirements": [],
|
||||
"itemRequirements": [
|
||||
{
|
||||
"count": price,
|
||||
"_tpl": currencyIdFromEnum,
|
||||
"onlyFunctional": true
|
||||
}
|
||||
],
|
||||
"requiredTid": traderIdFromEnum
|
||||
}
|
||||
};
|
||||
if (this.instanceManager.debug) {
|
||||
console.log("Adding new trader outfit:", newTraderOutfit);
|
||||
}
|
||||
this.instanceManager.database.traders[traderIdFromEnum].suits.push(newTraderOutfit);
|
||||
}
|
||||
addTop(clothingConfig) {
|
||||
const { side, suiteId, topId, handsId, outfitId, topBundlePath, handsBundlePath, traderId, loyaltyLevel, profileLevel, standing, currencyId, price, watchPrefab, watchPosition, watchRotation } = clothingConfig;
|
||||
try {
|
||||
if (this.instanceManager.debug) {
|
||||
console.log("Adding top");
|
||||
}
|
||||
const DefaultWatchPrefab = {
|
||||
"path": "",
|
||||
"rcid": ""
|
||||
};
|
||||
const DefaultWatchPosition = {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
};
|
||||
const DefaultWatchRotation = {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
};
|
||||
const newTop = {
|
||||
"_id": topId,
|
||||
"_name": `${topId}_name`,
|
||||
"_parent": "5cc0868e14c02e000c6bea68",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Description": `${topId}_desc`,
|
||||
"Name": `${topId}_name`,
|
||||
"ShortName": `${topId}_shortName`,
|
||||
"Side": [
|
||||
"Usec"
|
||||
],
|
||||
"BodyPart": "Body",
|
||||
"IntegratedArmorVest": false,
|
||||
"Prefab": {
|
||||
"path": topBundlePath,
|
||||
"rcid": ""
|
||||
},
|
||||
"WatchPosition": watchPosition ?? DefaultWatchPosition,
|
||||
"WatchPrefab": watchPrefab ?? DefaultWatchPrefab,
|
||||
"WatchRotation": watchRotation ?? DefaultWatchRotation
|
||||
},
|
||||
"_proto": "5cde95d97d6c8b647a3769b0"
|
||||
};
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Added top for ${topId}:`, newTop);
|
||||
}
|
||||
this.instanceManager.database.templates.customization[topId] = newTop;
|
||||
// add hands
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Adding hands for topId: ${topId}`);
|
||||
}
|
||||
const newHands = {
|
||||
"_id": handsId,
|
||||
"_name": `${handsId}_name`,
|
||||
"_parent": "5cc086a314c02e000c6bea69",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Description": `${handsId}_desc`,
|
||||
"Name": `${handsId}_name`,
|
||||
"ShortName": `${handsId}_shortName`,
|
||||
"Side": [
|
||||
"Usec"
|
||||
],
|
||||
"BodyPart": "Hands",
|
||||
"IntegratedArmorVest": false,
|
||||
"Prefab": {
|
||||
"path": handsBundlePath,
|
||||
"rcid": ""
|
||||
},
|
||||
"WatchPosition": watchPosition ?? DefaultWatchPosition,
|
||||
"WatchPrefab": watchPrefab ?? DefaultWatchPrefab,
|
||||
"WatchRotation": watchRotation ?? DefaultWatchRotation
|
||||
},
|
||||
"_proto": "5cde95fa7d6c8b04737c2d13"
|
||||
};
|
||||
this.instanceManager.database.templates.customization[handsId] = newHands;
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Added hands for ${handsId}:`, newHands);
|
||||
}
|
||||
const newSuite = {
|
||||
"_id": suiteId,
|
||||
"_name": `${suiteId}_name`,
|
||||
"_parent": "5cd944ca1388ce03a44dc2a4",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Description": "DefaultUsecUpperSuite",
|
||||
"Name": "DefaultUsecUpperSuite",
|
||||
"ShortName": "DefaultUsecUpperSuite",
|
||||
"Side": side ?? ["Usec", "Bear", "Savage"],
|
||||
"AvailableAsDefault": false,
|
||||
"Game": [
|
||||
"eft",
|
||||
"arena"
|
||||
],
|
||||
"Body": topId,
|
||||
"Hands": handsId
|
||||
},
|
||||
"_proto": "5cde9ec17d6c8b04723cf479"
|
||||
};
|
||||
this.instanceManager.database.templates.customization[suiteId] = newSuite;
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Added suite for ${suiteId}`, newSuite);
|
||||
}
|
||||
this.handleLocale(clothingConfig, suiteId);
|
||||
this.addSuiteToTrader(traderId, outfitId, suiteId, loyaltyLevel, profileLevel, standing, currencyId, price);
|
||||
}
|
||||
catch (error) {
|
||||
console.error(`Error adding top for outfitId: ${outfitId}:`, error);
|
||||
}
|
||||
}
|
||||
addBottom(clothingConfig) {
|
||||
const { side, bottomId, suiteId, outfitId, bottomBundlePath, traderId, loyaltyLevel, profileLevel, standing, currencyId, price } = clothingConfig;
|
||||
// add Bottom
|
||||
const newBottom = {
|
||||
"_id": bottomId,
|
||||
"_name": `${bottomId}_name`,
|
||||
"_parent": "5cc0869814c02e000a4cad94",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Description": `${bottomId}_desc`,
|
||||
"Name": `${bottomId}_name`,
|
||||
"ShortName": `${bottomId}_shortName`,
|
||||
"Side": side ?? ["Usec", "Bear", "Savage"],
|
||||
"BodyPart": "Feet",
|
||||
"IntegratedArmorVest": false,
|
||||
"Prefab": {
|
||||
"path": bottomBundlePath,
|
||||
"rcid": ""
|
||||
},
|
||||
"WatchPosition": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"WatchPrefab": {
|
||||
"path": "",
|
||||
"rcid": ""
|
||||
},
|
||||
"WatchRotation": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
}
|
||||
},
|
||||
"_proto": "5cdea3c47d6c8b0475341734"
|
||||
};
|
||||
this.instanceManager.database.templates.customization[bottomId] = newBottom;
|
||||
const newSuite = {
|
||||
"_id": suiteId,
|
||||
"_name": `${suiteId}_name`,
|
||||
"_parent": "5cd944d01388ce000a659df9",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Description": `${suiteId}_desc`,
|
||||
"Name": `${suiteId}_name`,
|
||||
"ShortName": `${suiteId}_shortName`,
|
||||
"Side": side ?? ["Usec", "Bear", "Savage"],
|
||||
"AvailableAsDefault": false,
|
||||
"Game": [
|
||||
"eft",
|
||||
"arena"
|
||||
],
|
||||
"Feet": bottomId
|
||||
},
|
||||
"_proto": "5cd946231388ce000d572fe3"
|
||||
};
|
||||
// add suite
|
||||
this.instanceManager.database.templates.customization[suiteId] = newSuite;
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Added suite for ${suiteId}`, newSuite);
|
||||
}
|
||||
this.handleLocale(clothingConfig, suiteId);
|
||||
this.addSuiteToTrader(traderId, outfitId, suiteId, loyaltyLevel, profileLevel, standing, currencyId, price);
|
||||
}
|
||||
handleLocale(clothingConfig, clothingId) {
|
||||
for (const localeID in this.instanceManager.database.locales.global) {
|
||||
if (this.instanceManager.debug) {
|
||||
console.log("Processing localeID:", localeID);
|
||||
}
|
||||
try {
|
||||
const itemName = `${clothingId} Name`;
|
||||
const shortName = `${clothingId} shortName`;
|
||||
const itemDescription = `${clothingId} description`;
|
||||
// Check if the locale exists, else fallback to 'en'
|
||||
const localeValue = clothingConfig.locales[localeID] || clothingConfig.locales["en"];
|
||||
if (localeValue && this.instanceManager.database.locales.global[localeID]) {
|
||||
this.instanceManager.database.locales.global[localeID][itemName] = localeValue;
|
||||
this.instanceManager.database.locales.global[localeID][itemDescription] = localeValue;
|
||||
this.instanceManager.database.locales.global[localeID][shortName] = localeValue;
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
console.error(`Error handling locale for ${localeID}: ${error}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
readJsonFile(filePath) {
|
||||
const content = node_fs_1.default.readFileSync(filePath, "utf-8");
|
||||
try {
|
||||
const parsedContent = JSON.parse(content);
|
||||
if (this.instanceManager.debug) {
|
||||
console.log("Custom Clothing Service: Parsed JSON Content:", parsedContent); // Logging the parsed JSON content
|
||||
}
|
||||
return parsedContent;
|
||||
}
|
||||
catch (error) {
|
||||
console.error("Error parsing JSON content:", error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.CustomClothingService = CustomClothingService;
|
||||
//# sourceMappingURL=CustomClothingService.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+393
@@ -0,0 +1,393 @@
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
import type { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomizationItem";
|
||||
import { traderIDs, currencyIDs } from "./references/configConsts";
|
||||
import type { ClothingConfig } from "./references/configConsts";
|
||||
import type { WTTInstanceManager } from "./WTTInstanceManager";
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
|
||||
export class CustomClothingService {
|
||||
private instanceManager: WTTInstanceManager;
|
||||
|
||||
public preSptLoad(instanceManager: WTTInstanceManager): void {
|
||||
this.instanceManager = instanceManager;
|
||||
}
|
||||
public postDBLoad(): void {
|
||||
const clothingJsonsPath = path.join(__dirname, "../db/clothing");
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Scanning directory for clothing JSON files: ${clothingJsonsPath}`);
|
||||
}
|
||||
const jsonFiles = fs.readdirSync(clothingJsonsPath).filter(file => file.endsWith(".json"));
|
||||
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Found ${jsonFiles.length} JSON file(s) in ${clothingJsonsPath}`);
|
||||
}
|
||||
|
||||
for (const jsonFile of jsonFiles) {
|
||||
const filePath = path.join(clothingJsonsPath, jsonFile);
|
||||
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Processing file: ${jsonFile} at path: ${filePath}`);
|
||||
}
|
||||
|
||||
try {
|
||||
// Read and parse the JSON file
|
||||
const clothingConfigs: ClothingConfig[] = this.readJsonFile(filePath);
|
||||
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Parsed JSON content from ${jsonFile}:`, clothingConfigs);
|
||||
}
|
||||
|
||||
// Process the parsed content
|
||||
for (const clothingConfig of clothingConfigs) {
|
||||
if (this.instanceManager.debug) {
|
||||
console.log("Processing clothing config:", clothingConfig);
|
||||
}
|
||||
try {
|
||||
this.processClothingConfig(clothingConfig);
|
||||
if (this.instanceManager.debug) {
|
||||
console.log("Successfully processed clothing config:", clothingConfig);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Error processing config in ${jsonFile}:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Successfully processed all configs in ${jsonFile}.`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Error reading or parsing ${jsonFile}:`, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private processClothingConfig(clothingConfig: ClothingConfig): void {
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Processing config of type: ${clothingConfig.type}`);
|
||||
}
|
||||
if (clothingConfig.type === "top") {
|
||||
this.addTop(clothingConfig);
|
||||
}
|
||||
else if (clothingConfig.type === "bottom") {
|
||||
this.addBottom(clothingConfig);
|
||||
}
|
||||
else {
|
||||
console.error("Unknown config type:", clothingConfig.type);
|
||||
}
|
||||
}
|
||||
|
||||
private addSuiteToTrader(
|
||||
traderId: string,
|
||||
outfitId: string,
|
||||
suiteId: string,
|
||||
loyaltyLevel: number,
|
||||
profileLevel: number,
|
||||
standing: number,
|
||||
currencyId: string,
|
||||
price: number
|
||||
): void {
|
||||
|
||||
const traderIdFromEnum = traderIDs[traderId as keyof typeof traderIDs] || traderId;
|
||||
const currencyIdFromEnum = currencyIDs[currencyId as keyof typeof currencyIDs] || currencyId;
|
||||
|
||||
this.instanceManager.database.traders[traderIdFromEnum].base.customization_seller = true;
|
||||
|
||||
if (!this.instanceManager.database.traders[traderIdFromEnum].suits) {
|
||||
this.instanceManager.database.traders[traderIdFromEnum].suits = [];
|
||||
}
|
||||
const newTraderOutfit = {
|
||||
"_id": outfitId,
|
||||
"tid": traderIdFromEnum,
|
||||
"suiteId": suiteId,
|
||||
"isActive": true,
|
||||
"isHiddenInPVE": false,
|
||||
"externalObtain": false,
|
||||
"internalObtain": true,
|
||||
"requirements": {
|
||||
"loyaltyLevel": loyaltyLevel,
|
||||
"profileLevel": profileLevel,
|
||||
"standing": standing,
|
||||
"skillRequirements": [],
|
||||
"questRequirements": [],
|
||||
"achievementRequirements": [],
|
||||
"itemRequirements": [
|
||||
{
|
||||
"count": price,
|
||||
"_tpl": currencyIdFromEnum,
|
||||
"onlyFunctional": true
|
||||
}
|
||||
],
|
||||
"requiredTid": traderIdFromEnum
|
||||
}
|
||||
}
|
||||
|
||||
if (this.instanceManager.debug) {
|
||||
console.log("Adding new trader outfit:", newTraderOutfit);
|
||||
}
|
||||
|
||||
this.instanceManager.database.traders[traderIdFromEnum].suits.push(newTraderOutfit);
|
||||
}
|
||||
|
||||
private addTop(clothingConfig: ClothingConfig): void {
|
||||
const {side, suiteId, topId, handsId, outfitId, topBundlePath, handsBundlePath, traderId, loyaltyLevel, profileLevel, standing, currencyId, price, watchPrefab, watchPosition, watchRotation } = clothingConfig;
|
||||
|
||||
try {
|
||||
if (this.instanceManager.debug) {
|
||||
console.log("Adding top");
|
||||
}
|
||||
const DefaultWatchPrefab = {
|
||||
"path": "",
|
||||
"rcid": ""
|
||||
};
|
||||
const DefaultWatchPosition = {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
};
|
||||
const DefaultWatchRotation = {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
};
|
||||
const newTop = {
|
||||
"_id": topId,
|
||||
"_name": `${topId}_name`,
|
||||
"_parent": "5cc0868e14c02e000c6bea68",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Description": `${topId}_desc`,
|
||||
"Name": `${topId}_name`,
|
||||
"ShortName": `${topId}_shortName`,
|
||||
"Side": [
|
||||
"Usec"
|
||||
],
|
||||
"BodyPart": "Body",
|
||||
"IntegratedArmorVest": false,
|
||||
"Prefab": {
|
||||
"path": topBundlePath,
|
||||
"rcid": ""
|
||||
},
|
||||
"WatchPosition": watchPosition ?? DefaultWatchPosition,
|
||||
"WatchPrefab": watchPrefab ?? DefaultWatchPrefab,
|
||||
"WatchRotation": watchRotation ?? DefaultWatchRotation
|
||||
},
|
||||
"_proto": "5cde95d97d6c8b647a3769b0"
|
||||
} as ICustomizationItem;
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Added top for ${topId}:`, newTop);
|
||||
}
|
||||
|
||||
this.instanceManager.database.templates.customization[topId] = newTop;
|
||||
|
||||
|
||||
// add hands
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Adding hands for topId: ${topId}`);
|
||||
}
|
||||
const newHands = {
|
||||
"_id": handsId,
|
||||
"_name": `${handsId}_name`,
|
||||
"_parent": "5cc086a314c02e000c6bea69",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Description": `${handsId}_desc`,
|
||||
"Name": `${handsId}_name`,
|
||||
"ShortName": `${handsId}_shortName`,
|
||||
"Side": [
|
||||
"Usec"
|
||||
],
|
||||
"BodyPart": "Hands",
|
||||
"IntegratedArmorVest": false,
|
||||
"Prefab": {
|
||||
"path": handsBundlePath,
|
||||
"rcid": ""
|
||||
},
|
||||
"WatchPosition": watchPosition ?? DefaultWatchPosition,
|
||||
"WatchPrefab": watchPrefab ?? DefaultWatchPrefab,
|
||||
"WatchRotation": watchRotation ?? DefaultWatchRotation
|
||||
},
|
||||
"_proto": "5cde95fa7d6c8b04737c2d13"
|
||||
} as ICustomizationItem;
|
||||
this.instanceManager.database.templates.customization[handsId] = newHands;
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Added hands for ${handsId}:`, newHands);
|
||||
}
|
||||
|
||||
|
||||
const newSuite = {
|
||||
"_id": suiteId,
|
||||
"_name": `${suiteId}_name`,
|
||||
"_parent": "5cd944ca1388ce03a44dc2a4",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Description": "DefaultUsecUpperSuite",
|
||||
"Name": "DefaultUsecUpperSuite",
|
||||
"ShortName": "DefaultUsecUpperSuite",
|
||||
"Side": side ?? ["Usec", "Bear", "Savage"],
|
||||
"AvailableAsDefault": false,
|
||||
"Game": [
|
||||
"eft",
|
||||
"arena"
|
||||
],
|
||||
"Body": topId,
|
||||
"Hands": handsId
|
||||
},
|
||||
"_proto": "5cde9ec17d6c8b04723cf479"
|
||||
} as ICustomizationItem;
|
||||
|
||||
this.instanceManager.database.templates.customization[suiteId] = newSuite;
|
||||
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Added suite for ${suiteId}`, newSuite);
|
||||
}
|
||||
|
||||
this.handleLocale(clothingConfig, suiteId);
|
||||
|
||||
this.addSuiteToTrader(
|
||||
traderId,
|
||||
outfitId,
|
||||
suiteId,
|
||||
loyaltyLevel,
|
||||
profileLevel,
|
||||
standing,
|
||||
currencyId,
|
||||
price
|
||||
);
|
||||
}
|
||||
catch (error) {
|
||||
console.error(`Error adding top for outfitId: ${outfitId}:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
private addBottom(clothingConfig: ClothingConfig): void {
|
||||
const { side, bottomId, suiteId, outfitId, bottomBundlePath, traderId, loyaltyLevel, profileLevel, standing, currencyId, price } = clothingConfig;
|
||||
|
||||
// add Bottom
|
||||
const newBottom = {
|
||||
"_id": bottomId,
|
||||
"_name": `${bottomId}_name`,
|
||||
"_parent": "5cc0869814c02e000a4cad94",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Description": `${bottomId}_desc`,
|
||||
"Name": `${bottomId}_name`,
|
||||
"ShortName": `${bottomId}_shortName`,
|
||||
"Side": side ?? ["Usec", "Bear", "Savage"],
|
||||
"BodyPart": "Feet",
|
||||
"IntegratedArmorVest": false,
|
||||
"Prefab": {
|
||||
"path": bottomBundlePath,
|
||||
"rcid": ""
|
||||
},
|
||||
"WatchPosition": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"WatchPrefab": {
|
||||
"path": "",
|
||||
"rcid": ""
|
||||
},
|
||||
"WatchRotation": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
}
|
||||
},
|
||||
"_proto": "5cdea3c47d6c8b0475341734"
|
||||
} as ICustomizationItem;
|
||||
|
||||
this.instanceManager.database.templates.customization[bottomId] = newBottom;
|
||||
|
||||
|
||||
const newSuite = {
|
||||
"_id": suiteId,
|
||||
"_name": `${suiteId}_name`,
|
||||
"_parent": "5cd944d01388ce000a659df9",
|
||||
"_type": "Item",
|
||||
"_props": {
|
||||
"Description": `${suiteId}_desc`,
|
||||
"Name": `${suiteId}_name`,
|
||||
"ShortName": `${suiteId}_shortName`,
|
||||
"Side": side ?? ["Usec", "Bear", "Savage"],
|
||||
"AvailableAsDefault": false,
|
||||
"Game": [
|
||||
"eft",
|
||||
"arena"
|
||||
],
|
||||
"Feet": bottomId
|
||||
},
|
||||
"_proto": "5cd946231388ce000d572fe3"
|
||||
} as ICustomizationItem;
|
||||
// add suite
|
||||
|
||||
this.instanceManager.database.templates.customization[suiteId] = newSuite;
|
||||
|
||||
if (this.instanceManager.debug) {
|
||||
console.log(`Added suite for ${suiteId}`, newSuite);
|
||||
}
|
||||
|
||||
this.handleLocale(clothingConfig, suiteId);
|
||||
|
||||
this.addSuiteToTrader(
|
||||
traderId,
|
||||
outfitId,
|
||||
suiteId,
|
||||
loyaltyLevel,
|
||||
profileLevel,
|
||||
standing,
|
||||
currencyId,
|
||||
price,
|
||||
);
|
||||
}
|
||||
|
||||
private handleLocale(clothingConfig: ClothingConfig, clothingId: string): void
|
||||
{
|
||||
for (const localeID in this.instanceManager.database.locales.global)
|
||||
{
|
||||
if (this.instanceManager.debug)
|
||||
{
|
||||
console.log("Processing localeID:", localeID);
|
||||
}
|
||||
try
|
||||
{
|
||||
const itemName = `${clothingId} Name`;
|
||||
const shortName = `${clothingId} shortName`;
|
||||
const itemDescription = `${clothingId} description`;
|
||||
|
||||
// Check if the locale exists, else fallback to 'en'
|
||||
const localeValue = clothingConfig.locales[localeID] || clothingConfig.locales["en"];
|
||||
|
||||
if (localeValue && this.instanceManager.database.locales.global[localeID])
|
||||
{
|
||||
this.instanceManager.database.locales.global[localeID][itemName] = localeValue;
|
||||
this.instanceManager.database.locales.global[localeID][itemDescription] = localeValue;
|
||||
this.instanceManager.database.locales.global[localeID][shortName] = localeValue;
|
||||
}
|
||||
}
|
||||
catch (error)
|
||||
{
|
||||
console.error(`Error handling locale for ${localeID}: ${error}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private readJsonFile(filePath: string): any {
|
||||
const content = fs.readFileSync(filePath, "utf-8");
|
||||
|
||||
try {
|
||||
const parsedContent = JSON.parse(content);
|
||||
if (this.instanceManager.debug) {
|
||||
console.log("Custom Clothing Service: Parsed JSON Content:", parsedContent); // Logging the parsed JSON content
|
||||
}
|
||||
return parsedContent;
|
||||
}
|
||||
catch (error) {
|
||||
console.error("Error parsing JSON content:", error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.WTTInstanceManager = void 0;
|
||||
const node_path_1 = __importDefault(require("node:path"));
|
||||
class WTTInstanceManager {
|
||||
//#region Accessible in or after preSptLoad
|
||||
modName;
|
||||
debug;
|
||||
// Useful Paths
|
||||
profilePath = node_path_1.default.join(process.cwd(), "\\user\\profiles");
|
||||
modPath;
|
||||
dbPath;
|
||||
// Instances
|
||||
container;
|
||||
PreSptModLoader;
|
||||
configServer;
|
||||
saveServer;
|
||||
itemHelper;
|
||||
logger;
|
||||
staticRouter;
|
||||
dynamicRouter;
|
||||
profileController;
|
||||
profileCallbacks;
|
||||
//#endregion
|
||||
//#region Acceessible in or after postDBLoad
|
||||
database;
|
||||
customItem;
|
||||
imageRouter;
|
||||
jsonUtil;
|
||||
profileHelper;
|
||||
eventOutputHolder;
|
||||
ragfairPriceService;
|
||||
importerUtil;
|
||||
traderAssortService;
|
||||
applicationContext;
|
||||
vfs;
|
||||
//#endregion
|
||||
// Call at the start of the mods postDBLoad method
|
||||
preSptLoad(container, mod) {
|
||||
this.modName = mod;
|
||||
this.modPath = node_path_1.default.join(process.cwd(), `\\user\\mods\\${mod}\\`);
|
||||
this.dbPath = node_path_1.default.join(process.cwd(), `\\user\\mods\\${mod}\\db`);
|
||||
this.container = container;
|
||||
this.PreSptModLoader = container.resolve("PreSptModLoader");
|
||||
this.imageRouter = container.resolve("ImageRouter");
|
||||
this.configServer = container.resolve("ConfigServer");
|
||||
this.saveServer = container.resolve("SaveServer");
|
||||
this.itemHelper = container.resolve("ItemHelper");
|
||||
this.eventOutputHolder = container.resolve("EventOutputHolder");
|
||||
this.profileController = container.resolve("ProfileController");
|
||||
this.profileCallbacks = container.resolve("ProfileCallbacks");
|
||||
this.logger = container.resolve("WinstonLogger");
|
||||
this.staticRouter = container.resolve("StaticRouterModService");
|
||||
this.dynamicRouter = container.resolve("DynamicRouterModService");
|
||||
this.traderAssortService = container.resolve("TraderAssortService");
|
||||
this.vfs = container.resolve("VFS");
|
||||
}
|
||||
postDBLoad(container) {
|
||||
this.database = container.resolve("DatabaseServer").getTables();
|
||||
this.customItem = container.resolve("CustomItemService");
|
||||
this.jsonUtil = container.resolve("JsonUtil");
|
||||
this.profileHelper = container.resolve("ProfileHelper");
|
||||
this.ragfairPriceService = container.resolve("RagfairPriceService");
|
||||
this.importerUtil = container.resolve("ImporterUtil");
|
||||
this.applicationContext = container.resolve("ApplicationContext");
|
||||
}
|
||||
colorLog(message, color) {
|
||||
const colorCodes = {
|
||||
red: "\x1b[31m",
|
||||
green: "\x1b[32m",
|
||||
yellow: "\x1b[33m",
|
||||
blue: "\x1b[34m",
|
||||
magenta: "\x1b[35m",
|
||||
cyan: "\x1b[36m",
|
||||
white: "\x1b[37m",
|
||||
gray: "\x1b[90m",
|
||||
brightRed: "\x1b[91m",
|
||||
brightGreen: "\x1b[92m",
|
||||
brightYellow: "\x1b[93m",
|
||||
brightBlue: "\x1b[94m",
|
||||
brightMagenta: "\x1b[95m",
|
||||
brightCyan: "\x1b[96m",
|
||||
brightWhite: "\x1b[97m"
|
||||
};
|
||||
const resetCode = "\x1b[0m";
|
||||
const colorCode = colorCodes[color] || "\x1b[37m"; // Default to white if color is invalid.
|
||||
console.log(`${colorCode}${message}${resetCode}`); // Log the colored message here
|
||||
}
|
||||
}
|
||||
exports.WTTInstanceManager = WTTInstanceManager;
|
||||
//# sourceMappingURL=WTTInstanceManager.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"WTTInstanceManager.js","sourceRoot":"","sources":["WTTInstanceManager.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAwB7B,MAAa,kBAAkB;IAE3B,2CAA2C;IACpC,OAAO,CAAS;IAChB,KAAK,CAAU;IACtB,eAAe;IACR,WAAW,GAAW,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACnE,OAAO,CAAS;IAChB,MAAM,CAAS;IAEtB,YAAY;IACL,SAAS,CAAsB;IAC/B,eAAe,CAAkB;IACjC,YAAY,CAAe;IAC3B,UAAU,CAAa;IACvB,UAAU,CAAa;IACvB,MAAM,CAAU;IAChB,YAAY,CAAyB;IACrC,aAAa,CAA0B;IACvC,iBAAiB,CAAoB;IACrC,gBAAgB,CAAmB;IAC1C,YAAY;IAEZ,4CAA4C;IACrC,QAAQ,CAAkB;IAC1B,UAAU,CAAoB;IAC9B,WAAW,CAAc;IACzB,QAAQ,CAAW;IACnB,aAAa,CAAgB;IAC7B,iBAAiB,CAAoB;IACrC,mBAAmB,CAAsB;IACzC,YAAY,CAAe;IAC3B,mBAAmB,CAAsB;IACzC,kBAAkB,CAAqB;IACvC,GAAG,CAAM;IAChB,YAAY;IAEZ,kDAAkD;IAC3C,UAAU,CAAC,SAA8B,EAAE,GAAW;QAEzD,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,GAAG,MAAM,CAAC,CAAC;QAEnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,OAAO,CAAkB,iBAAiB,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO,CAAc,aAAa,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,OAAO,CAAe,cAAc,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAa,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAa,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAoB,mBAAmB,CAAC,CAAC;QACnF,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAoB,mBAAmB,CAAC,CAAC;QACnF,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAmB,kBAAkB,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAU,eAAe,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,OAAO,CAAyB,wBAAwB,CAAC,CAAC;QACxF,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAA0B,yBAAyB,CAAC,CAAC;QAC3F,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAsB,qBAAqB,CAAC,CAAC;QACzF,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,CAAM,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEM,UAAU,CAAC,SAA8B;QAE5C,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAiB,gBAAgB,CAAC,CAAC,SAAS,EAAE,CAAC;QAChF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAoB,mBAAmB,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAW,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC;QACvE,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAsB,qBAAqB,CAAC,CAAC;QACzF,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,OAAO,CAAe,cAAc,CAAC,CAAC;QACpE,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAqB,oBAAoB,CAAC,CAAC;IAC1F,CAAC;IAEM,QAAQ,CAAC,OAAe,EAAE,KAAa;QAC1C,MAAM,UAAU,GAAG;YACf,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,UAAU;YACxB,UAAU,EAAE,UAAU;YACtB,aAAa,EAAE,UAAU;YACzB,UAAU,EAAE,UAAU;YACtB,WAAW,EAAE,UAAU;SAC1B,CAAC;QAEF,MAAM,SAAS,GAAG,SAAS,CAAC;QAC5B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAgC,CAAC,IAAI,UAAU,CAAC,CAAC,wCAAwC;QACtH,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,+BAA+B;IACtF,CAAC;CACJ;AA9FD,gDA8FC"}
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
import path from "node:path";
|
||||
|
||||
import type { ILogger } from "@spt/models/spt/utils/ILogger";
|
||||
import type { ProfileController } from "@spt/controllers/ProfileController";
|
||||
import type { ProfileCallbacks } from "@spt/callbacks/ProfileCallbacks";
|
||||
import type { EventOutputHolder } from "@spt/routers/EventOutputHolder";
|
||||
import type { DatabaseServer } from "@spt/servers/DatabaseServer";
|
||||
import type { IDatabaseTables } from "@spt/models/spt/server/IDatabaseTables";
|
||||
import type { StaticRouterModService } from "@spt/services/mod/staticRouter/StaticRouterModService";
|
||||
import type { DynamicRouterModService } from "@spt/services/mod/dynamicRouter/DynamicRouterModService";
|
||||
import type { TraderAssortService } from "@spt/services/TraderAssortService";
|
||||
import type { DependencyContainer } from "tsyringe";
|
||||
import type { CustomItemService } from "@spt/services/mod/CustomItemService";
|
||||
import type { ImageRouter } from "@spt/routers/ImageRouter";
|
||||
import type { PreSptModLoader } from "@spt/loaders/PreSptModLoader";
|
||||
import type { ConfigServer } from "@spt/servers/ConfigServer";
|
||||
import type { JsonUtil } from "@spt/utils/JsonUtil";
|
||||
import type { ProfileHelper } from "@spt/helpers/ProfileHelper";
|
||||
import type { RagfairPriceService } from "@spt/services/RagfairPriceService";
|
||||
import type { ImporterUtil } from "@spt/utils/ImporterUtil";
|
||||
import type { SaveServer } from "@spt/servers/SaveServer";
|
||||
import type { ItemHelper } from "@spt/helpers/ItemHelper";
|
||||
import type { ApplicationContext } from "@spt/context/ApplicationContext";
|
||||
import type { VFS } from "@spt/utils/VFS";
|
||||
export class WTTInstanceManager
|
||||
{
|
||||
//#region Accessible in or after preSptLoad
|
||||
public modName: string;
|
||||
public debug: boolean;
|
||||
// Useful Paths
|
||||
public profilePath: string = path.join(process.cwd(), "\\user\\profiles");
|
||||
public modPath: string;
|
||||
public dbPath: string;
|
||||
|
||||
// Instances
|
||||
public container: DependencyContainer;
|
||||
public PreSptModLoader: PreSptModLoader;
|
||||
public configServer: ConfigServer;
|
||||
public saveServer: SaveServer;
|
||||
public itemHelper: ItemHelper;
|
||||
public logger: ILogger;
|
||||
public staticRouter: StaticRouterModService;
|
||||
public dynamicRouter: DynamicRouterModService;
|
||||
public profileController: ProfileController;
|
||||
public profileCallbacks: ProfileCallbacks;
|
||||
//#endregion
|
||||
|
||||
//#region Acceessible in or after postDBLoad
|
||||
public database: IDatabaseTables;
|
||||
public customItem: CustomItemService;
|
||||
public imageRouter: ImageRouter;
|
||||
public jsonUtil: JsonUtil;
|
||||
public profileHelper: ProfileHelper;
|
||||
public eventOutputHolder: EventOutputHolder;
|
||||
public ragfairPriceService: RagfairPriceService;
|
||||
public importerUtil: ImporterUtil;
|
||||
public traderAssortService: TraderAssortService;
|
||||
public applicationContext: ApplicationContext;
|
||||
public vfs: VFS;
|
||||
//#endregion
|
||||
|
||||
// Call at the start of the mods postDBLoad method
|
||||
public preSptLoad(container: DependencyContainer, mod: string): void
|
||||
{
|
||||
this.modName = mod;
|
||||
this.modPath = path.join(process.cwd(), `\\user\\mods\\${mod}\\`);
|
||||
this.dbPath = path.join(process.cwd(), `\\user\\mods\\${mod}\\db`);
|
||||
|
||||
this.container = container;
|
||||
this.PreSptModLoader = container.resolve<PreSptModLoader>("PreSptModLoader");
|
||||
this.imageRouter = container.resolve<ImageRouter>("ImageRouter");
|
||||
this.configServer = container.resolve<ConfigServer>("ConfigServer");
|
||||
this.saveServer = container.resolve<SaveServer>("SaveServer");
|
||||
this.itemHelper = container.resolve<ItemHelper>("ItemHelper");
|
||||
this.eventOutputHolder = container.resolve<EventOutputHolder>("EventOutputHolder");
|
||||
this.profileController = container.resolve<ProfileController>("ProfileController");
|
||||
this.profileCallbacks = container.resolve<ProfileCallbacks>("ProfileCallbacks");
|
||||
this.logger = container.resolve<ILogger>("WinstonLogger");
|
||||
this.staticRouter = container.resolve<StaticRouterModService>("StaticRouterModService");
|
||||
this.dynamicRouter = container.resolve<DynamicRouterModService>("DynamicRouterModService");
|
||||
this.traderAssortService = container.resolve<TraderAssortService>("TraderAssortService");
|
||||
this.vfs = container.resolve<VFS>("VFS");
|
||||
}
|
||||
|
||||
public postDBLoad(container: DependencyContainer): void
|
||||
{
|
||||
this.database = container.resolve<DatabaseServer>("DatabaseServer").getTables();
|
||||
this.customItem = container.resolve<CustomItemService>("CustomItemService");
|
||||
this.jsonUtil = container.resolve<JsonUtil>("JsonUtil");
|
||||
this.profileHelper = container.resolve<ProfileHelper>("ProfileHelper");
|
||||
this.ragfairPriceService = container.resolve<RagfairPriceService>("RagfairPriceService");
|
||||
this.importerUtil = container.resolve<ImporterUtil>("ImporterUtil");
|
||||
this.applicationContext = container.resolve<ApplicationContext>("ApplicationContext");
|
||||
}
|
||||
|
||||
public colorLog(message: string, color: string) {
|
||||
const colorCodes = {
|
||||
red: "\x1b[31m",
|
||||
green: "\x1b[32m",
|
||||
yellow: "\x1b[33m",
|
||||
blue: "\x1b[34m",
|
||||
magenta: "\x1b[35m",
|
||||
cyan: "\x1b[36m",
|
||||
white: "\x1b[37m",
|
||||
gray: "\x1b[90m",
|
||||
brightRed: "\x1b[91m",
|
||||
brightGreen: "\x1b[92m",
|
||||
brightYellow: "\x1b[93m",
|
||||
brightBlue: "\x1b[94m",
|
||||
brightMagenta: "\x1b[95m",
|
||||
brightCyan: "\x1b[96m",
|
||||
brightWhite: "\x1b[97m"
|
||||
};
|
||||
|
||||
const resetCode = "\x1b[0m";
|
||||
const colorCode = colorCodes[color as keyof typeof colorCodes] || "\x1b[37m"; // Default to white if color is invalid.
|
||||
console.log(`${colorCode}${message}${resetCode}`); // Log the colored message here
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const LogTextColor_1 = require("C:/snapshot/project/obj/models/spt/logging/LogTextColor");
|
||||
// WTT imports
|
||||
const WTTInstanceManager_1 = require("./WTTInstanceManager");
|
||||
const CustomClothingService_1 = require("./CustomClothingService");
|
||||
class Kopat1ch {
|
||||
instanceManager = new WTTInstanceManager_1.WTTInstanceManager();
|
||||
version;
|
||||
modName = "Additional Clothing BEAR";
|
||||
customClothingService = new CustomClothingService_1.CustomClothingService();
|
||||
debug = false;
|
||||
preSptLoad(container) {
|
||||
this.instanceManager.preSptLoad(container, this.modName);
|
||||
this.instanceManager.debug = this.debug;
|
||||
this.customClothingService.preSptLoad(this.instanceManager);
|
||||
this.displayCreditBanner();
|
||||
}
|
||||
postDBLoad(container) {
|
||||
this.instanceManager.postDBLoad(container);
|
||||
this.customClothingService.postDBLoad();
|
||||
if (this.instanceManager.debug) {
|
||||
this.instanceManager.logger.log(`[${this.modName}] Database: Loading complete.`, LogTextColor_1.LogTextColor.GREEN);
|
||||
}
|
||||
}
|
||||
displayCreditBanner() {
|
||||
this.instanceManager.colorLog(`[${this.modName}] 3.10.x Release build`, "green");
|
||||
this.instanceManager.colorLog(`[${this.modName}] Developers: Ashley Schaeffer BMW`, "green");
|
||||
this.instanceManager.colorLog(`[${this.modName}] Additional Clothing BEAR is Loaded`, "green");
|
||||
this.instanceManager.colorLog;
|
||||
}
|
||||
}
|
||||
module.exports = { mod: new Kopat1ch() };
|
||||
//# sourceMappingURL=mod.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"mod.js","sourceRoot":"","sources":["mod.ts"],"names":[],"mappings":";AAAA,yDAAyD;;AAOzD,0FAAuF;AASvF,cAAc;AACd,6DAA0D;AAC1D,mEAAgE;AAGhE,MAAM,QAAQ;IAEF,eAAe,GAAuB,IAAI,uCAAkB,EAAE,CAAC;IAC/D,OAAO,CAAS;IAChB,OAAO,GAAG,0BAA0B,CAAC;IACrC,qBAAqB,GAA0B,IAAI,6CAAqB,EAAE,CAAC;IACnF,KAAK,GAAG,KAAK,CAAC;IAEP,UAAU,CAAC,SAA8B;QAC5C,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAE/B,CAAC;IAEM,UAAU,CAAC,SAA8B;QAC5C,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAC9B,CAAC;YACG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAC3B,IAAI,IAAI,CAAC,OAAO,+BAA+B,EAC/C,2BAAY,CAAC,KAAK,CACrB,CAAC;QACN,CAAC;IACL,CAAC;IAEO,mBAAmB;QAEvB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAC5B,IAAI,IAAI,CAAC,OAAO,wBAAwB,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAC5B,IAAI,IAAI,CAAC,OAAO,oCAAoC,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAC5B,IAAI,IAAI,CAAC,OAAO,sCAAsC,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAA;IACjC,CAAC;CAEJ;AAED,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,QAAQ,EAAE,EAAE,CAAC"}
|
||||
@@ -0,0 +1,63 @@
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
|
||||
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
|
||||
import type { DependencyContainer } from "tsyringe";
|
||||
import type { ILostOnDeathConfig } from "@spt/models/spt/config/ILostOnDeathConfig";
|
||||
import type { IPostDBLoadMod } from "@spt/models/external/IPostDBLoadMod";
|
||||
import type { IPreSptLoadMod } from "@spt/models/external/IPreSptLoadMod";
|
||||
import { LogTextColor } from "@spt/models/spt/logging/LogTextColor";
|
||||
import type { GameController } from "@spt/controllers/GameController";
|
||||
import type { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData";
|
||||
import { InRaidHelper } from "@spt/helpers/InRaidHelper";
|
||||
import type { IPmcData } from "@spt/models/eft/common/IPmcData";
|
||||
import type { IItem } from "@spt/models/eft/common/tables/IItem";
|
||||
import config from "../config/config.json";
|
||||
|
||||
|
||||
// WTT imports
|
||||
import { WTTInstanceManager } from "./WTTInstanceManager";
|
||||
import { CustomClothingService } from "./CustomClothingService";
|
||||
|
||||
|
||||
class Kopat1ch
|
||||
implements IPreSptLoadMod, IPostDBLoadMod {
|
||||
private instanceManager: WTTInstanceManager = new WTTInstanceManager();
|
||||
private version: string;
|
||||
private modName = "Additional Clothing BEAR";
|
||||
private customClothingService: CustomClothingService = new CustomClothingService();
|
||||
debug = false;
|
||||
|
||||
public preSptLoad(container: DependencyContainer): void {
|
||||
this.instanceManager.preSptLoad(container, this.modName);
|
||||
this.instanceManager.debug = this.debug;
|
||||
this.customClothingService.preSptLoad(this.instanceManager);
|
||||
this.displayCreditBanner();
|
||||
|
||||
}
|
||||
|
||||
public postDBLoad(container: DependencyContainer): void {
|
||||
this.instanceManager.postDBLoad(container);
|
||||
this.customClothingService.postDBLoad();
|
||||
if (this.instanceManager.debug)
|
||||
{
|
||||
this.instanceManager.logger.log(
|
||||
`[${this.modName}] Database: Loading complete.`,
|
||||
LogTextColor.GREEN
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private displayCreditBanner(): void
|
||||
{
|
||||
this.instanceManager.colorLog
|
||||
(`[${this.modName}] 3.10.x Release build`, "green");
|
||||
this.instanceManager.colorLog
|
||||
(`[${this.modName}] Developers: Ashley Schaeffer BMW`, "green");
|
||||
this.instanceManager.colorLog
|
||||
(`[${this.modName}] Additional Clothing BEAR is Loaded`, "green");
|
||||
this.instanceManager.colorLog
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports = { mod: new Kopat1ch() };
|
||||
+137
@@ -0,0 +1,137 @@
|
||||
"use strict";
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Stashes = exports.inventorySlots = exports.allBotTypes = exports.currencyIDs = exports.traderIDs = void 0;
|
||||
;
|
||||
var traderIDs;
|
||||
(function (traderIDs) {
|
||||
traderIDs["MECHANIC"] = "5a7c2eca46aef81a7ca2145d";
|
||||
traderIDs["SKIER"] = "58330581ace78e27b8b10cee";
|
||||
traderIDs["PEACEKEEPER"] = "5935c25fb3acc3127c3d8cd9";
|
||||
traderIDs["THERAPIST"] = "54cb57776803fa99248b456e";
|
||||
traderIDs["PRAPOR"] = "54cb50c76803fa8b248b4571";
|
||||
traderIDs["JAEGAR"] = "5c0647fdd443bc2504c2d371";
|
||||
traderIDs["RAGMAN"] = "5ac3b934156ae10c4430e83c";
|
||||
traderIDs["FENCE"] = "579dc571d53a0658a154fbec";
|
||||
traderIDs["ARTEM"] = "66bf757f27d0b097db0acea5";
|
||||
traderIDs["BADGER"] = "bd3a8b28356d9c6509966546";
|
||||
})(traderIDs || (exports.traderIDs = traderIDs = {}));
|
||||
var currencyIDs;
|
||||
(function (currencyIDs) {
|
||||
currencyIDs["ROUBLES"] = "5449016a4bdc2d6f028b456f";
|
||||
currencyIDs["EUROS"] = "569668774bdc2da2298b4568";
|
||||
currencyIDs["DOLLARS"] = "5696686a4bdc2da3298b456a";
|
||||
})(currencyIDs || (exports.currencyIDs = currencyIDs = {}));
|
||||
var allBotTypes;
|
||||
(function (allBotTypes) {
|
||||
// Arena Fighters
|
||||
allBotTypes["ARENAFIGHTER"] = "arenafighter";
|
||||
allBotTypes["ARENAFIGHTEREVENT"] = "arenafighterevent";
|
||||
// Scavs
|
||||
allBotTypes["ASSAULT"] = "assault";
|
||||
allBotTypes["ASSAULTGROUP"] = "assaultgroup";
|
||||
allBotTypes["MARKSMAN"] = "marksman";
|
||||
allBotTypes["CRAZYASSAULTEVENT"] = "crazyassaultevent";
|
||||
allBotTypes["CURSEDASSAULT"] = "cursedassault";
|
||||
// PMC's
|
||||
allBotTypes["BEAR"] = "bear";
|
||||
allBotTypes["USEC"] = "usec";
|
||||
allBotTypes["PMCBEAR"] = "pmcbear";
|
||||
allBotTypes["PMCUSEC"] = "pmcusec";
|
||||
allBotTypes["PMC"] = "pmcbot";
|
||||
// ExUsec
|
||||
allBotTypes["EXUSEC"] = "exusec";
|
||||
// Cultists
|
||||
allBotTypes["CULTISTPRIEST"] = "sectantpriest";
|
||||
allBotTypes["CULTISTWARRIOR"] = "sectantwarrior";
|
||||
allBotTypes["CULTISTONI"] = "sectantoni";
|
||||
allBotTypes["CULTISTPRIESTEVENT"] = "sectantpriestevent";
|
||||
allBotTypes["CULTISTPREDVESTNIK"] = "sectantpredvestnik";
|
||||
allBotTypes["CULTISTPRIZRAK"] = "sectantprizrak";
|
||||
// BTR
|
||||
allBotTypes["BTR"] = "btrshooter";
|
||||
// Spirits
|
||||
allBotTypes["SPIRITSPRING"] = "spiritspring";
|
||||
allBotTypes["SPIRITWINTER"] = "spiritwinter";
|
||||
// Zombies
|
||||
allBotTypes["INFECTEDASSAULT"] = "infectedassault";
|
||||
allBotTypes["INFECTEDCIVIL"] = "infectedcivil";
|
||||
allBotTypes["INFECTEDLABORANT"] = "infectedlaborant";
|
||||
allBotTypes["INFECTEDPMC"] = "infectedpmc";
|
||||
allBotTypes["INFECTEDTAGILLA"] = "infectedtagilla";
|
||||
// Santa
|
||||
allBotTypes["GIFTER"] = "gifter";
|
||||
// Bosses & Followers
|
||||
// Kaban
|
||||
allBotTypes["KABAN"] = "bossboar";
|
||||
allBotTypes["KABANSNIPER"] = "bossboarsniper";
|
||||
allBotTypes["FOLLOWERBOAR"] = "followerboar";
|
||||
allBotTypes["FOLLOWERBOARCLOSE1"] = "followerboarclose1";
|
||||
allBotTypes["FOLLOWERBOARCLOSE2"] = "followerboarclose2";
|
||||
// Killa
|
||||
allBotTypes["KILLA"] = "bosskilla";
|
||||
// Kolontay
|
||||
allBotTypes["KOLONTAY"] = "bosskolontay";
|
||||
allBotTypes["FOLLOWERKOLONTAYASSAULT"] = "followerkolontayassault";
|
||||
allBotTypes["FOLLOWERKOLONTAYSECURITY"] = "followerkolontaysecurity";
|
||||
// Partisan
|
||||
allBotTypes["PARTISAN"] = "bosspartisan";
|
||||
// Reshala
|
||||
allBotTypes["RESHALA"] = "bossbully";
|
||||
allBotTypes["FOLLOWERRESHALA"] = "followerbully";
|
||||
// Gluhar
|
||||
allBotTypes["GLUHAR"] = "bossgluhar";
|
||||
allBotTypes["FOLLOWERGLUHARASSAULT"] = "followergluharassault";
|
||||
allBotTypes["FOLLOWERGLUHARSCOUT"] = "followergluharscout";
|
||||
allBotTypes["FOLLOWERGLUHARSECURITY"] = "followergluharsecurity";
|
||||
allBotTypes["FOLLOWERGLUHARSNIPER"] = "followergluharsnipe";
|
||||
// Goons
|
||||
allBotTypes["KNIGHT"] = "bossknight";
|
||||
allBotTypes["FOLLOWERBIGPIPE"] = "followerbigpipe";
|
||||
allBotTypes["FOLLOWERBIRDEYE"] = "followerbirdeye";
|
||||
// Shturman
|
||||
allBotTypes["SHTURMAN"] = "bosskojaniy";
|
||||
allBotTypes["FOLLOWERSHTURMAN"] = "followerkojaniy";
|
||||
// Sanitar
|
||||
allBotTypes["SANITAR"] = "bosssanitar";
|
||||
allBotTypes["FOLLOWERSANITAR"] = "followersanitar";
|
||||
// Tagilla
|
||||
allBotTypes["TAGILLA"] = "bosstagilla";
|
||||
allBotTypes["FOLLOWERTAGILLA"] = "followertagilla";
|
||||
// Zryachiy
|
||||
allBotTypes["ZRYACHIY"] = "bosszryachiy";
|
||||
allBotTypes["FOLLOWERZRYACHIY"] = "followerzryachiy";
|
||||
allBotTypes["PEACEFULZRYACHIYEVENT"] = "peacefulzryachiyevent";
|
||||
allBotTypes["RAVANGEZRYACHIYEVENT"] = "ravengezryachiyevent";
|
||||
// Traders
|
||||
// Peacemaker
|
||||
allBotTypes["PEACEMAKER"] = "peacemaker";
|
||||
// Skier
|
||||
allBotTypes["SKIER"] = "skier";
|
||||
})(allBotTypes || (exports.allBotTypes = allBotTypes = {}));
|
||||
var inventorySlots;
|
||||
(function (inventorySlots) {
|
||||
inventorySlots["FirstPrimaryWeapon"] = "55d729c64bdc2d89028b4570";
|
||||
inventorySlots["SecondPrimaryWeapon"] = "55d729d14bdc2d86028b456e";
|
||||
inventorySlots["Holster"] = "55d729d84bdc2de3098b456b";
|
||||
inventorySlots["Scabbard"] = "55d729e34bdc2d1b198b456d";
|
||||
inventorySlots["FaceCover"] = "55d729e84bdc2d8a028b4569";
|
||||
inventorySlots["Headwear"] = "55d729ef4bdc2d3a168b456c";
|
||||
inventorySlots["TacticalVest"] = "55d729f74bdc2d87028b456e";
|
||||
inventorySlots["SecuredContainer"] = "55d72a054bdc2d88028b456e";
|
||||
inventorySlots["Backpack"] = "55d72a104bdc2d89028b4571";
|
||||
inventorySlots["ArmorVest"] = "55d72a194bdc2d86028b456f";
|
||||
inventorySlots["Pockets"] = "55d72a274bdc2de3098b456c";
|
||||
inventorySlots["Earpiece"] = "5665b7164bdc2d144c8b4570";
|
||||
inventorySlots["Dogtag"] = "59f0be1e86f77453be490939";
|
||||
inventorySlots["Eyewear"] = "5a0ad9313f1241000e072755";
|
||||
inventorySlots["ArmBand"] = "5b3f583786f77411d552fb2b";
|
||||
})(inventorySlots || (exports.inventorySlots = inventorySlots = {}));
|
||||
var Stashes;
|
||||
(function (Stashes) {
|
||||
Stashes["LEVEL1"] = "566abbc34bdc2d92178b4576";
|
||||
Stashes["LEVEL2"] = "5811ce572459770cba1a34ea";
|
||||
Stashes["LEVEL3"] = "5811ce662459770f6f490f32";
|
||||
Stashes["LEVEL4"] = "5811ce772459770e9e5f9532";
|
||||
})(Stashes || (exports.Stashes = Stashes = {}));
|
||||
//# sourceMappingURL=configConsts.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"configConsts.js","sourceRoot":"","sources":["configConsts.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AA6DxD,CAAC;AAmDF,IAAY,SAYX;AAZD,WAAY,SAAS;IAEjB,kDAAqC,CAAA;IACrC,+CAAkC,CAAA;IAClC,qDAAwC,CAAA;IACxC,mDAAsC,CAAA;IACtC,gDAAmC,CAAA;IACnC,gDAAmC,CAAA;IACnC,gDAAmC,CAAA;IACnC,+CAAkC,CAAA;IAClC,+CAAkC,CAAA;IAClC,gDAAmC,CAAA;AACvC,CAAC,EAZW,SAAS,yBAAT,SAAS,QAYpB;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IAEnB,mDAAoC,CAAA;IACpC,iDAAkC,CAAA;IAClC,mDAAoC,CAAA;AACxC,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAED,IAAY,WAgHX;AAhHD,WAAY,WAAW;IAGnB,iBAAiB;IACjB,4CAA8B,CAAA;IAC9B,sDAAuC,CAAA;IAEvC,QAAQ;IACR,kCAAmB,CAAA;IACnB,4CAA6B,CAAA;IAC7B,oCAAqB,CAAA;IACrB,sDAAuC,CAAA;IACvC,8CAA+B,CAAA;IAE/B,QAAQ;IACR,4BAAa,CAAA;IACb,4BAAa,CAAA;IACb,kCAAmB,CAAA;IACnB,kCAAmB,CAAA;IACnB,6BAAc,CAAA;IAEd,SAAS;IACT,gCAAiB,CAAA;IAEjB,WAAW;IACX,8CAA+B,CAAA;IAC/B,gDAAiC,CAAA;IACjC,wCAAyB,CAAA;IACzB,wDAAyC,CAAA;IACzC,wDAAyC,CAAA;IACzC,gDAAiC,CAAA;IAEjC,MAAM;IACN,iCAAkB,CAAA;IAElB,UAAU;IACV,4CAA6B,CAAA;IAC7B,4CAA6B,CAAA;IAE7B,UAAU;IACV,kDAAmC,CAAA;IACnC,8CAA+B,CAAA;IAC/B,oDAAqC,CAAA;IACrC,0CAA2B,CAAA;IAC3B,kDAAmC,CAAA;IAGnC,QAAQ;IACR,gCAAiB,CAAA;IAEjB,qBAAqB;IAEjB,QAAQ;IACR,iCAAkB,CAAA;IAClB,6CAA8B,CAAA;IAC9B,4CAA6B,CAAA;IAC7B,wDAAyC,CAAA;IACzC,wDAAyC,CAAA;IAEzC,QAAQ;IACR,kCAAmB,CAAA;IAEnB,WAAW;IACX,wCAAyB,CAAA;IACzB,kEAAmD,CAAA;IACnD,oEAAqD,CAAA;IAErD,WAAW;IACX,wCAAyB,CAAA;IAEzB,UAAU;IACV,oCAAqB,CAAA;IACrB,gDAAiC,CAAA;IAEjC,SAAS;IACT,oCAAqB,CAAA;IACrB,8DAA+C,CAAA;IAC/C,0DAA2C,CAAA;IAC3C,gEAAiD,CAAA;IACjD,2DAA4C,CAAA;IAE5C,QAAQ;IACR,oCAAqB,CAAA;IACrB,kDAAmC,CAAA;IACnC,kDAAmC,CAAA;IAEnC,WAAW;IACX,uCAAwB,CAAA;IACxB,mDAAoC,CAAA;IAEpC,UAAU;IACV,sCAAuB,CAAA;IACvB,kDAAmC,CAAA;IAEnC,UAAU;IACV,sCAAuB,CAAA;IACvB,kDAAmC,CAAA;IAEnC,WAAW;IACX,wCAAyB,CAAA;IACzB,oDAAqC,CAAA;IACrC,8DAA+C,CAAA;IAC/C,4DAA6C,CAAA;IAEjD,UAAU;IAEN,aAAa;IACb,wCAAyB,CAAA;IAEzB,QAAQ;IACR,8BAAe,CAAA;AAEvB,CAAC,EAhHW,WAAW,2BAAX,WAAW,QAgHtB;AAED,IAAY,cAiBX;AAjBD,WAAY,cAAc;IAEtB,iEAA+C,CAAA;IAC/C,kEAAgD,CAAA;IAChD,sDAAoC,CAAA;IACpC,uDAAqC,CAAA;IACrC,wDAAsC,CAAA;IACtC,uDAAqC,CAAA;IACrC,2DAAyC,CAAA;IACzC,+DAA6C,CAAA;IAC7C,uDAAqC,CAAA;IACrC,wDAAsC,CAAA;IACtC,sDAAoC,CAAA;IACpC,uDAAqC,CAAA;IACrC,qDAAmC,CAAA;IACnC,sDAAoC,CAAA;IACpC,sDAAoC,CAAA;AACxC,CAAC,EAjBW,cAAc,8BAAd,cAAc,QAiBzB;AAED,IAAY,OAMX;AAND,WAAY,OAAO;IAEf,8CAAmC,CAAA;IACnC,8CAAmC,CAAA;IACnC,8CAAmC,CAAA;IACnC,8CAAmC,CAAA;AACvC,CAAC,EANW,OAAO,uBAAP,OAAO,QAMlB"}
|
||||
+297
@@ -0,0 +1,297 @@
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
|
||||
import type { IPreset } from "@spt/models/eft/common/IGlobals";
|
||||
import type { Ixyz } from "@spt/models/eft/common/Ixyz";
|
||||
import type { IPrefab } from "@spt/models/eft/common/tables/ICustomizationItem";
|
||||
|
||||
export interface ConfigItem
|
||||
{
|
||||
[itemId: string]: {
|
||||
itemTplToClone: string;
|
||||
overrideProperties: {
|
||||
Prefab: {
|
||||
path: string;
|
||||
rcid: string;
|
||||
};
|
||||
ReverbVolume: number;
|
||||
};
|
||||
parentId: string;
|
||||
fleaPriceRoubles: number;
|
||||
handbookPriceRoubles: number;
|
||||
handbookParentId: string;
|
||||
locales: {
|
||||
[locale: string]: {
|
||||
name: string;
|
||||
shortName: string;
|
||||
description: string;
|
||||
};
|
||||
};
|
||||
clearClonedProps: boolean;
|
||||
addtoInventorySlots: string[];
|
||||
addtoModSlots: boolean;
|
||||
modSlot: string[];
|
||||
ModdableItemWhitelist: string;
|
||||
ModdableItemBlacklist: string;
|
||||
addtoTraders: boolean;
|
||||
traderId: traderIDs;
|
||||
traderItems: {
|
||||
unlimitedCount: boolean;
|
||||
stackObjectsCount: number;
|
||||
}[];
|
||||
barterScheme: {
|
||||
count: number;
|
||||
_tpl: string;
|
||||
}[];
|
||||
loyallevelitems: number;
|
||||
addtoBots: boolean;
|
||||
addtoStaticLootContainers: boolean;
|
||||
StaticLootContainers: string;
|
||||
Probability: number;
|
||||
masteries: boolean;
|
||||
masterySections: {
|
||||
Name: string;
|
||||
Templates: string[];
|
||||
Level2: number;
|
||||
Level3: number;
|
||||
};
|
||||
addweaponpreset: boolean;
|
||||
weaponpresets: IPreset[];
|
||||
addtoHallOfFame: boolean;
|
||||
addtoSpecialSlots: boolean;
|
||||
};
|
||||
};
|
||||
|
||||
export interface HeadConfig {
|
||||
path: string;
|
||||
addHeadToPlayer: boolean;
|
||||
side: string[];
|
||||
locales: {
|
||||
[key: string]: string; // This allows dynamic locale keys, such as "en", "ru", etc.
|
||||
};
|
||||
}
|
||||
|
||||
export interface VoiceConfig
|
||||
{
|
||||
[voiceId: string]: {
|
||||
locales: {
|
||||
[key: string]: string; // This allows dynamic locale keys, such as "en", "ru", etc.
|
||||
};
|
||||
name: string;
|
||||
addVoiceToPlayer: boolean;
|
||||
sideSpecificVoice: string;
|
||||
addToBotTypes: Record<string, number>;
|
||||
};
|
||||
}
|
||||
|
||||
export interface ClothingConfig {
|
||||
type: string; // The type of clothing item, e.g., "bottom"
|
||||
suiteId: string; // ID of the clothing item's suite
|
||||
outfitId: string; // Unique identifier for the outfit
|
||||
bottomId?: string; // ID of the clothing item's bottom
|
||||
locales: {
|
||||
[key: string]: string; // This allows dynamic locale keys, such as "en", "ru", etc.
|
||||
};
|
||||
topId?: string; // ID of the clothing item's top
|
||||
handsId?: string; // ID of the clothing item's hands
|
||||
side: string[]; // Side of the clothing item, e.g., ["usec", "bear"]
|
||||
bottomBundlePath?: string; // Path to the clothing item's asset bundle
|
||||
topBundlePath?: string; // Path to the clothing item's top asset bundle
|
||||
handsBundlePath?: string; // Path to the clothing item's hands asset bundle
|
||||
watchPrefab?: IPrefab; // Path to the watch prefab asset bundle
|
||||
watchPosition?: Ixyz; // Position of the watch on the clothing item
|
||||
watchRotation?: Ixyz; // Rotation of the watch on the clothing item
|
||||
handsBaseID?: string; // ID of the clothing item's hands base
|
||||
traderId: string; // Trader who sells this item, e.g., "RAGMAN"
|
||||
loyaltyLevel: number; // Loyalty level required to purchase the item
|
||||
profileLevel: number; // Player profile level required to purchase the item
|
||||
standing: number; // Minimum standing required with the trader
|
||||
currencyId: string; // Currency type for the item's price, e.g., "ROUBLES"
|
||||
price: number; // Cost of the clothing item in the specified currency
|
||||
}
|
||||
|
||||
|
||||
export enum traderIDs
|
||||
{
|
||||
MECHANIC = "5a7c2eca46aef81a7ca2145d",
|
||||
SKIER = "58330581ace78e27b8b10cee",
|
||||
PEACEKEEPER = "5935c25fb3acc3127c3d8cd9",
|
||||
THERAPIST = "54cb57776803fa99248b456e",
|
||||
PRAPOR = "54cb50c76803fa8b248b4571",
|
||||
JAEGAR = "5c0647fdd443bc2504c2d371",
|
||||
RAGMAN = "5ac3b934156ae10c4430e83c",
|
||||
FENCE = "579dc571d53a0658a154fbec",
|
||||
ARTEM = "66bf757f27d0b097db0acea5",
|
||||
BADGER = "bd3a8b28356d9c6509966546"
|
||||
}
|
||||
|
||||
export enum currencyIDs
|
||||
{
|
||||
ROUBLES = "5449016a4bdc2d6f028b456f",
|
||||
EUROS = "569668774bdc2da2298b4568",
|
||||
DOLLARS = "5696686a4bdc2da3298b456a"
|
||||
}
|
||||
|
||||
export enum allBotTypes
|
||||
{
|
||||
|
||||
// Arena Fighters
|
||||
ARENAFIGHTER = "arenafighter",
|
||||
ARENAFIGHTEREVENT = "arenafighterevent",
|
||||
|
||||
// Scavs
|
||||
ASSAULT = "assault",
|
||||
ASSAULTGROUP = "assaultgroup",
|
||||
MARKSMAN = "marksman",
|
||||
CRAZYASSAULTEVENT = "crazyassaultevent",
|
||||
CURSEDASSAULT = "cursedassault",
|
||||
|
||||
// PMC's
|
||||
BEAR = "bear",
|
||||
USEC = "usec",
|
||||
PMCBEAR = "pmcbear",
|
||||
PMCUSEC = "pmcusec",
|
||||
PMC = "pmcbot",
|
||||
|
||||
// ExUsec
|
||||
EXUSEC = "exusec",
|
||||
|
||||
// Cultists
|
||||
CULTISTPRIEST = "sectantpriest",
|
||||
CULTISTWARRIOR = "sectantwarrior",
|
||||
CULTISTONI = "sectantoni",
|
||||
CULTISTPRIESTEVENT = "sectantpriestevent",
|
||||
CULTISTPREDVESTNIK = "sectantpredvestnik",
|
||||
CULTISTPRIZRAK = "sectantprizrak",
|
||||
|
||||
// BTR
|
||||
BTR = "btrshooter",
|
||||
|
||||
// Spirits
|
||||
SPIRITSPRING = "spiritspring",
|
||||
SPIRITWINTER = "spiritwinter",
|
||||
|
||||
// Zombies
|
||||
INFECTEDASSAULT = "infectedassault",
|
||||
INFECTEDCIVIL = "infectedcivil",
|
||||
INFECTEDLABORANT = "infectedlaborant",
|
||||
INFECTEDPMC = "infectedpmc",
|
||||
INFECTEDTAGILLA = "infectedtagilla",
|
||||
|
||||
|
||||
// Santa
|
||||
GIFTER = "gifter",
|
||||
|
||||
// Bosses & Followers
|
||||
|
||||
// Kaban
|
||||
KABAN = "bossboar",
|
||||
KABANSNIPER = "bossboarsniper",
|
||||
FOLLOWERBOAR = "followerboar",
|
||||
FOLLOWERBOARCLOSE1 = "followerboarclose1",
|
||||
FOLLOWERBOARCLOSE2 = "followerboarclose2",
|
||||
|
||||
// Killa
|
||||
KILLA = "bosskilla",
|
||||
|
||||
// Kolontay
|
||||
KOLONTAY = "bosskolontay",
|
||||
FOLLOWERKOLONTAYASSAULT = "followerkolontayassault",
|
||||
FOLLOWERKOLONTAYSECURITY = "followerkolontaysecurity",
|
||||
|
||||
// Partisan
|
||||
PARTISAN = "bosspartisan",
|
||||
|
||||
// Reshala
|
||||
RESHALA = "bossbully",
|
||||
FOLLOWERRESHALA = "followerbully",
|
||||
|
||||
// Gluhar
|
||||
GLUHAR = "bossgluhar",
|
||||
FOLLOWERGLUHARASSAULT = "followergluharassault",
|
||||
FOLLOWERGLUHARSCOUT = "followergluharscout",
|
||||
FOLLOWERGLUHARSECURITY = "followergluharsecurity",
|
||||
FOLLOWERGLUHARSNIPER = "followergluharsnipe",
|
||||
|
||||
// Goons
|
||||
KNIGHT = "bossknight",
|
||||
FOLLOWERBIGPIPE = "followerbigpipe",
|
||||
FOLLOWERBIRDEYE = "followerbirdeye",
|
||||
|
||||
// Shturman
|
||||
SHTURMAN = "bosskojaniy",
|
||||
FOLLOWERSHTURMAN = "followerkojaniy",
|
||||
|
||||
// Sanitar
|
||||
SANITAR = "bosssanitar",
|
||||
FOLLOWERSANITAR = "followersanitar",
|
||||
|
||||
// Tagilla
|
||||
TAGILLA = "bosstagilla",
|
||||
FOLLOWERTAGILLA = "followertagilla",
|
||||
|
||||
// Zryachiy
|
||||
ZRYACHIY = "bosszryachiy",
|
||||
FOLLOWERZRYACHIY = "followerzryachiy",
|
||||
PEACEFULZRYACHIYEVENT = "peacefulzryachiyevent",
|
||||
RAVANGEZRYACHIYEVENT = "ravengezryachiyevent",
|
||||
|
||||
// Traders
|
||||
|
||||
// Peacemaker
|
||||
PEACEMAKER = "peacemaker",
|
||||
|
||||
// Skier
|
||||
SKIER = "skier",
|
||||
|
||||
}
|
||||
|
||||
export enum inventorySlots
|
||||
{
|
||||
FirstPrimaryWeapon = "55d729c64bdc2d89028b4570",
|
||||
SecondPrimaryWeapon = "55d729d14bdc2d86028b456e",
|
||||
Holster = "55d729d84bdc2de3098b456b",
|
||||
Scabbard = "55d729e34bdc2d1b198b456d",
|
||||
FaceCover = "55d729e84bdc2d8a028b4569",
|
||||
Headwear = "55d729ef4bdc2d3a168b456c",
|
||||
TacticalVest = "55d729f74bdc2d87028b456e",
|
||||
SecuredContainer = "55d72a054bdc2d88028b456e",
|
||||
Backpack = "55d72a104bdc2d89028b4571",
|
||||
ArmorVest = "55d72a194bdc2d86028b456f",
|
||||
Pockets = "55d72a274bdc2de3098b456c",
|
||||
Earpiece = "5665b7164bdc2d144c8b4570",
|
||||
Dogtag = "59f0be1e86f77453be490939",
|
||||
Eyewear = "5a0ad9313f1241000e072755",
|
||||
ArmBand = "5b3f583786f77411d552fb2b"
|
||||
}
|
||||
|
||||
export enum Stashes
|
||||
{
|
||||
LEVEL1 = "566abbc34bdc2d92178b4576",
|
||||
LEVEL2 = "5811ce572459770cba1a34ea",
|
||||
LEVEL3 = "5811ce662459770f6f490f32",
|
||||
LEVEL4 = "5811ce772459770e9e5f9532"
|
||||
}
|
||||
|
||||
export interface QuestZone
|
||||
{
|
||||
ZoneId: string;
|
||||
ZoneName: string;
|
||||
ZoneType: string;
|
||||
FlareType?: string;
|
||||
ZoneLocation: string;
|
||||
Position: {
|
||||
X: string;
|
||||
Y: string;
|
||||
Z: string;
|
||||
};
|
||||
Rotation: {
|
||||
X: string;
|
||||
Y: string;
|
||||
Z: string;
|
||||
};
|
||||
Scale: {
|
||||
X: string;
|
||||
Y: string;
|
||||
Z: string;
|
||||
};
|
||||
}
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ItemBaseClassMap = void 0;
|
||||
exports.ItemBaseClassMap = {
|
||||
"AMMO": "5485a8684bdc2da71d8b4567",
|
||||
"AMMO_CONTAINER": "543be5cb4bdc2deb348b4568",
|
||||
"ARMORED_EQUIPMENT": "57bef4c42459772e8d35a53b",
|
||||
"ARMBAND": "5b3f15d486f77432d0509248",
|
||||
"ARMOR": "5448e54d4bdc2dcc718b4568",
|
||||
"ARMORPLATE": "644120aa86ffbe10ee032b6f",
|
||||
"ASSAULT_CARBINE": "5447b5fc4bdc2d87278b4567",
|
||||
"ASSAULT_RIFLE": "5447b5f14bdc2d61278b4567",
|
||||
"ASSAULT_SCOPE": "55818add4bdc2d5b648b456f",
|
||||
"BACKPACK": "5448e53e4bdc2d60728b4567",
|
||||
"BARREL": "555ef6e44bdc2de9068b457e",
|
||||
"BATTERY": "57864ee62459775490116fc1",
|
||||
"BIPOD": "55818afb4bdc2dde698b456d",
|
||||
"BUILDING_MATERIAL": "57864ada245977548638de91",
|
||||
"CHARGING_HANDLE": "55818a6f4bdc2db9688b456b",
|
||||
"CHEST_RIG": "5448e5284bdc2dcb718b4567",
|
||||
"COMMON_CONTAINER": "5795f317245977243854e041",
|
||||
"COMPACT_REFLEX_SIGHT": "55818acf4bdc2dde698b456b",
|
||||
"COMPASS": "5f4fbaaca5573a5ac31db429",
|
||||
"DRINK": "5448e8d64bdc2dce718b4568",
|
||||
"DRUG": "5448f3a14bdc2d27728b4569",
|
||||
"ELECTRONICS": "57864a66245977548f04a81f",
|
||||
"FACECOVER": "5a341c4686f77469e155819e",
|
||||
"FLASHLIGHT": "55818b084bdc2d5b648b4571",
|
||||
"FLASHHIDER": "550aa4bf4bdc2dd6348b456b",
|
||||
"FOOD": "5448e8d04bdc2ddf718b4569",
|
||||
"FOREGRIP": "55818af64bdc2d5b648b4570",
|
||||
"FUEL": "5d650c3e815116009f6201d2",
|
||||
"GAS_BLOCK": "56ea9461d2720b67698b456f",
|
||||
"GRENADE_LAUNCHER": "5447bedf4bdc2d87278b4568",
|
||||
"HANDGUN": "5447b5cf4bdc2d65278b4567",
|
||||
"HANDGUARD": "55818a104bdc2db9688b4569",
|
||||
"HEADPHONES": "5645bcb74bdc2ded0b8b4578",
|
||||
"HEADWEAR": "5a341c4086f77401f2541505",
|
||||
"INFO": "5448ecbe4bdc2d60728b4568",
|
||||
"INVENTORY": "55d720f24bdc2d88028b456d",
|
||||
"IRON_SIGHT": "55818ac54bdc2d5b648b456e",
|
||||
"KEYCARD": "5c164d2286f774194c5e69fa",
|
||||
"KEYMECHANICAL": "5c99f98d86f7745c314214b3",
|
||||
"KEY_CARD": "5c164d2286f774194c5e69fa",
|
||||
"KNIFE": "5447e1d04bdc2dff2f8b4567",
|
||||
"LOCKING_CONTAINER": "5671435f4bdc2d96058b4569",
|
||||
"LOOT_CONTAINER": "566965d44bdc2d814c8b4571",
|
||||
"LUBRICANT": "57864e4c24597754843f8723",
|
||||
"MACHINEGUN": "5447bed64bdc2d97278b4568",
|
||||
"MAGAZINE": "5448bc234bdc2d3c308b4569",
|
||||
"MAP": "567849dd4bdc2d150f8b456e",
|
||||
"MARKSMAN_RIFLE": "5447b6194bdc2d67278b4567",
|
||||
"MEDICAL_ITEM": "5448f3ac4bdc2dce718b4569",
|
||||
"MEDICAL_SUPPLIES": "57864c8c245977548867e7f1",
|
||||
"MEDITKIT": "5448f39d4bdc2d0a728b4568",
|
||||
"MONEY": "543be5dd4bdc2deb348b4569",
|
||||
"MUZZLECOMBO": "550aa4dd4bdc2dc9348b4569",
|
||||
"MOUNT": "55818b224bdc2dde698b456f",
|
||||
"NIGHTVISION": "5a2c3a9486f774688b05e574",
|
||||
"OTHER": "590c745b86f7743cc433c5f2",
|
||||
"PISTOLGRIP": "55818a684bdc2ddd698b456d",
|
||||
"POCKETS": "557596e64bdc2dc2118b4571",
|
||||
"PORTABLE_RANGEFINDER": "61605ddea09d851a0a0c1bbc",
|
||||
"RANDOMLOOTCONTAINER": "62f109593b54472778797866",
|
||||
"RECEIVER": "55818a304bdc2db5418b457d",
|
||||
"REFLEX_SIGHT": "55818ad54bdc2ddc698b4569",
|
||||
"REPAIRKITS": "616eb7aea207f41933308f46",
|
||||
"SCOPE": "55818ae44bdc2dde698b456c",
|
||||
"SHOTGUN": "5447b6094bdc2dc3278b4567",
|
||||
"SILENCER": "550aa4cd4bdc2dd8348b456c",
|
||||
"SNIPER_RIFLE": "5447b6254bdc2dc3278b4568",
|
||||
"SPECIAL_ITEM": "5447e0e74bdc2d3c308b4567",
|
||||
"STASH": "566abbb64bdc2d144c8b457d",
|
||||
"STATIONARY_CONT.": "567583764bdc2d98058b456e",
|
||||
"STIMULANT": "5448f3a64bdc2d60728b456a",
|
||||
"STOCK": "55818a594bdc2db9688b456a",
|
||||
"THROWABLE_WEAPON": "543be6564bdc2df4348b4568",
|
||||
"THERMALVISION": "5d21f59b6dbe99052b54ef83",
|
||||
"TOOL": "57864bb7245977548b3b66c2",
|
||||
"UBGL": "55818b014bdc2ddc698b456b",
|
||||
"VIS_OBSERV_DEVICE": "5448e5724bdc2ddf718b4568",
|
||||
};
|
||||
//# sourceMappingURL=itemBaseClasses.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"itemBaseClasses.js","sourceRoot":"","sources":["itemBaseClasses.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAmC;IAC9D,MAAM,EAAE,0BAA0B;IAClC,gBAAgB,EAAE,0BAA0B;IAC5C,mBAAmB,EAAE,0BAA0B;IAC/C,SAAS,EAAE,0BAA0B;IACrC,OAAO,EAAE,0BAA0B;IACnC,YAAY,EAAE,0BAA0B;IACxC,iBAAiB,EAAE,0BAA0B;IAC7C,eAAe,EAAE,0BAA0B;IAC3C,eAAe,EAAE,0BAA0B;IAC3C,UAAU,EAAE,0BAA0B;IACtC,QAAQ,EAAE,0BAA0B;IACpC,SAAS,EAAE,0BAA0B;IACrC,OAAO,EAAE,0BAA0B;IACnC,mBAAmB,EAAE,0BAA0B;IAC/C,iBAAiB,EAAE,0BAA0B;IAC7C,WAAW,EAAE,0BAA0B;IACvC,kBAAkB,EAAE,0BAA0B;IAC9C,sBAAsB,EAAE,0BAA0B;IAClD,SAAS,EAAE,0BAA0B;IACrC,OAAO,EAAE,0BAA0B;IACnC,MAAM,EAAE,0BAA0B;IAClC,aAAa,EAAE,0BAA0B;IACzC,WAAW,EAAE,0BAA0B;IACvC,YAAY,EAAE,0BAA0B;IACxC,YAAY,EAAE,0BAA0B;IACxC,MAAM,EAAE,0BAA0B;IAClC,UAAU,EAAE,0BAA0B;IACtC,MAAM,EAAE,0BAA0B;IAClC,WAAW,EAAE,0BAA0B;IACvC,kBAAkB,EAAE,0BAA0B;IAC9C,SAAS,EAAE,0BAA0B;IACrC,WAAW,EAAE,0BAA0B;IACvC,YAAY,EAAE,0BAA0B;IACxC,UAAU,EAAE,0BAA0B;IACtC,MAAM,EAAE,0BAA0B;IAClC,WAAW,EAAE,0BAA0B;IACvC,YAAY,EAAE,0BAA0B;IACxC,SAAS,EAAE,0BAA0B;IACrC,eAAe,EAAE,0BAA0B;IAC3C,UAAU,EAAE,0BAA0B;IACtC,OAAO,EAAE,0BAA0B;IACnC,mBAAmB,EAAE,0BAA0B;IAC/C,gBAAgB,EAAE,0BAA0B;IAC5C,WAAW,EAAE,0BAA0B;IACvC,YAAY,EAAE,0BAA0B;IACxC,UAAU,EAAE,0BAA0B;IACtC,KAAK,EAAE,0BAA0B;IACjC,gBAAgB,EAAE,0BAA0B;IAC5C,cAAc,EAAE,0BAA0B;IAC1C,kBAAkB,EAAE,0BAA0B;IAC9C,UAAU,EAAE,0BAA0B;IACtC,OAAO,EAAE,0BAA0B;IACnC,aAAa,EAAE,0BAA0B;IACzC,OAAO,EAAE,0BAA0B;IACnC,aAAa,EAAE,0BAA0B;IACzC,OAAO,EAAE,0BAA0B;IACnC,YAAY,EAAE,0BAA0B;IACxC,SAAS,EAAE,0BAA0B;IACrC,sBAAsB,EAAE,0BAA0B;IAClD,qBAAqB,EAAE,0BAA0B;IACjD,UAAU,EAAE,0BAA0B;IACtC,cAAc,EAAE,0BAA0B;IAC1C,YAAY,EAAE,0BAA0B;IACxC,OAAO,EAAE,0BAA0B;IACnC,SAAS,EAAE,0BAA0B;IACrC,UAAU,EAAE,0BAA0B;IACtC,cAAc,EAAE,0BAA0B;IAC1C,cAAc,EAAE,0BAA0B;IAC1C,OAAO,EAAE,0BAA0B;IACnC,kBAAkB,EAAE,0BAA0B;IAC9C,WAAW,EAAE,0BAA0B;IACvC,OAAO,EAAE,0BAA0B;IACnC,kBAAkB,EAAE,0BAA0B;IAC9C,eAAe,EAAE,0BAA0B;IAC3C,MAAM,EAAE,0BAA0B;IAClC,MAAM,EAAE,0BAA0B;IAClC,mBAAmB,EAAE,0BAA0B;CAChD,CAAC"}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
export const ItemBaseClassMap: { [itemName: string]: string } = {
|
||||
"AMMO": "5485a8684bdc2da71d8b4567",
|
||||
"AMMO_CONTAINER": "543be5cb4bdc2deb348b4568",
|
||||
"ARMORED_EQUIPMENT": "57bef4c42459772e8d35a53b",
|
||||
"ARMBAND": "5b3f15d486f77432d0509248",
|
||||
"ARMOR": "5448e54d4bdc2dcc718b4568",
|
||||
"ARMORPLATE": "644120aa86ffbe10ee032b6f",
|
||||
"ASSAULT_CARBINE": "5447b5fc4bdc2d87278b4567",
|
||||
"ASSAULT_RIFLE": "5447b5f14bdc2d61278b4567",
|
||||
"ASSAULT_SCOPE": "55818add4bdc2d5b648b456f",
|
||||
"BACKPACK": "5448e53e4bdc2d60728b4567",
|
||||
"BARREL": "555ef6e44bdc2de9068b457e",
|
||||
"BATTERY": "57864ee62459775490116fc1",
|
||||
"BIPOD": "55818afb4bdc2dde698b456d",
|
||||
"BUILDING_MATERIAL": "57864ada245977548638de91",
|
||||
"CHARGING_HANDLE": "55818a6f4bdc2db9688b456b",
|
||||
"CHEST_RIG": "5448e5284bdc2dcb718b4567",
|
||||
"COMMON_CONTAINER": "5795f317245977243854e041",
|
||||
"COMPACT_REFLEX_SIGHT": "55818acf4bdc2dde698b456b",
|
||||
"COMPASS": "5f4fbaaca5573a5ac31db429",
|
||||
"DRINK": "5448e8d64bdc2dce718b4568",
|
||||
"DRUG": "5448f3a14bdc2d27728b4569",
|
||||
"ELECTRONICS": "57864a66245977548f04a81f",
|
||||
"FACECOVER": "5a341c4686f77469e155819e",
|
||||
"FLASHLIGHT": "55818b084bdc2d5b648b4571",
|
||||
"FLASHHIDER": "550aa4bf4bdc2dd6348b456b",
|
||||
"FOOD": "5448e8d04bdc2ddf718b4569",
|
||||
"FOREGRIP": "55818af64bdc2d5b648b4570",
|
||||
"FUEL": "5d650c3e815116009f6201d2",
|
||||
"GAS_BLOCK": "56ea9461d2720b67698b456f",
|
||||
"GRENADE_LAUNCHER": "5447bedf4bdc2d87278b4568",
|
||||
"HANDGUN": "5447b5cf4bdc2d65278b4567",
|
||||
"HANDGUARD": "55818a104bdc2db9688b4569",
|
||||
"HEADPHONES": "5645bcb74bdc2ded0b8b4578",
|
||||
"HEADWEAR": "5a341c4086f77401f2541505",
|
||||
"INFO": "5448ecbe4bdc2d60728b4568",
|
||||
"INVENTORY": "55d720f24bdc2d88028b456d",
|
||||
"IRON_SIGHT": "55818ac54bdc2d5b648b456e",
|
||||
"KEYCARD": "5c164d2286f774194c5e69fa",
|
||||
"KEYMECHANICAL": "5c99f98d86f7745c314214b3",
|
||||
"KEY_CARD": "5c164d2286f774194c5e69fa",
|
||||
"KNIFE": "5447e1d04bdc2dff2f8b4567",
|
||||
"LOCKING_CONTAINER": "5671435f4bdc2d96058b4569",
|
||||
"LOOT_CONTAINER": "566965d44bdc2d814c8b4571",
|
||||
"LUBRICANT": "57864e4c24597754843f8723",
|
||||
"MACHINEGUN": "5447bed64bdc2d97278b4568",
|
||||
"MAGAZINE": "5448bc234bdc2d3c308b4569",
|
||||
"MAP": "567849dd4bdc2d150f8b456e",
|
||||
"MARKSMAN_RIFLE": "5447b6194bdc2d67278b4567",
|
||||
"MEDICAL_ITEM": "5448f3ac4bdc2dce718b4569",
|
||||
"MEDICAL_SUPPLIES": "57864c8c245977548867e7f1",
|
||||
"MEDITKIT": "5448f39d4bdc2d0a728b4568",
|
||||
"MONEY": "543be5dd4bdc2deb348b4569",
|
||||
"MUZZLECOMBO": "550aa4dd4bdc2dc9348b4569",
|
||||
"MOUNT": "55818b224bdc2dde698b456f",
|
||||
"NIGHTVISION": "5a2c3a9486f774688b05e574",
|
||||
"OTHER": "590c745b86f7743cc433c5f2",
|
||||
"PISTOLGRIP": "55818a684bdc2ddd698b456d",
|
||||
"POCKETS": "557596e64bdc2dc2118b4571",
|
||||
"PORTABLE_RANGEFINDER": "61605ddea09d851a0a0c1bbc",
|
||||
"RANDOMLOOTCONTAINER": "62f109593b54472778797866",
|
||||
"RECEIVER": "55818a304bdc2db5418b457d",
|
||||
"REFLEX_SIGHT": "55818ad54bdc2ddc698b4569",
|
||||
"REPAIRKITS": "616eb7aea207f41933308f46",
|
||||
"SCOPE": "55818ae44bdc2dde698b456c",
|
||||
"SHOTGUN": "5447b6094bdc2dc3278b4567",
|
||||
"SILENCER": "550aa4cd4bdc2dd8348b456c",
|
||||
"SNIPER_RIFLE": "5447b6254bdc2dc3278b4568",
|
||||
"SPECIAL_ITEM": "5447e0e74bdc2d3c308b4567",
|
||||
"STASH": "566abbb64bdc2d144c8b457d",
|
||||
"STATIONARY_CONT.": "567583764bdc2d98058b456e",
|
||||
"STIMULANT": "5448f3a64bdc2d60728b456a",
|
||||
"STOCK": "55818a594bdc2db9688b456a",
|
||||
"THROWABLE_WEAPON": "543be6564bdc2df4348b4568",
|
||||
"THERMALVISION": "5d21f59b6dbe99052b54ef83",
|
||||
"TOOL": "57864bb7245977548b3b66c2",
|
||||
"UBGL": "55818b014bdc2ddc698b456b",
|
||||
"VIS_OBSERV_DEVICE": "5448e5724bdc2ddf718b4568",
|
||||
};
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ItemHandbookCategoryMap = void 0;
|
||||
exports.ItemHandbookCategoryMap = {
|
||||
"AMMO": "5b47574386f77428ca22b346",
|
||||
"AMMO_BOXES": "5b47574386f77428ca22b33c",
|
||||
"AMMO_ROUNDS": "5b47574386f77428ca22b33b",
|
||||
"BARTER": "5b47574386f77428ca22b33e",
|
||||
"BARTER_BUILDING": "5b47574386f77428ca22b2ee",
|
||||
"BARTER_ELECTRONICS": "5b47574386f77428ca22b2ef",
|
||||
"BARTER_ENERGY": "5b47574386f77428ca22b2ed",
|
||||
"BARTER_FLAMMABLE": "5b47574386f77428ca22b2f2",
|
||||
"BARTER_HOUSEHOLD": "5b47574386f77428ca22b2f0",
|
||||
"BARTER_MEDICAL": "5b47574386f77428ca22b2f3",
|
||||
"BARTER_OTHERS": "5b47574386f77428ca22b2f4",
|
||||
"BARTER_TOOLS": "5b47574386f77428ca22b2f6",
|
||||
"BARTER_VALUABLES": "5b47574386f77428ca22b2f1",
|
||||
"GEAR": "5b47574386f77428ca22b33f",
|
||||
"GEAR_ARMOR": "5b5f701386f774093f2ecf0f",
|
||||
"GEAR_BACKPACKS": "5b5f6f6c86f774093f2ecf0b",
|
||||
"GEAR_CASES": "5b5f6fa186f77409407a7eb7",
|
||||
"GEAR_COMPONENTS": "5b5f704686f77447ec5d76d7",
|
||||
"GEAR_FACECOVERS": "5b47574386f77428ca22b32f",
|
||||
"GEAR_HEADSETS": "5b5f6f3c86f774094242ef87",
|
||||
"GEAR_HEADWEAR": "5b47574386f77428ca22b330",
|
||||
"GEAR_RIGS": "5b5f6f8786f77447ed563642",
|
||||
"GEAR_SECURED": "5b5f6fd286f774093f2ecf0d",
|
||||
"GEAR_VISORS": "5b47574386f77428ca22b331",
|
||||
"INFO": "5b47574386f77428ca22b341",
|
||||
"KEYS": "5b47574386f77428ca22b342",
|
||||
"KEYS_ELECTRONIC": "5c518ed586f774119a772aee",
|
||||
"KEYS_MECHANIC": "5c518ec986f7743b68682ce2",
|
||||
"MAPS": "5b47574386f77428ca22b343",
|
||||
"MEDICAL": "5b47574386f77428ca22b344",
|
||||
"MEDICAL_INJECTORS": "5b47574386f77428ca22b33a",
|
||||
"MEDICAL_INJURY": "5b47574386f77428ca22b339",
|
||||
"MEDICAL_MEDKITS": "5b47574386f77428ca22b338",
|
||||
"MEDICAL_PILLS": "5b47574386f77428ca22b337",
|
||||
"MODS": "5b5f71a686f77447ed5636ab",
|
||||
"MODS_FUNCTIONAL": "5b5f71b386f774093f2ecf11",
|
||||
"MODS_GEAR": "5b5f750686f774093e6cb503",
|
||||
"MODS_VITAL": "5b5f75b986f77447ec5d7710",
|
||||
"MOD_ASSAULT_SCOPE": "5b5f740a86f77447ec5d7706",
|
||||
"MOD_AUX": "5b5f74cc86f77447ec5d770a",
|
||||
"MOD_BARREL": "5b5f75c686f774094242f19f",
|
||||
"MOD_BIPOD": "5b5f71c186f77409407a7ec0",
|
||||
"MOD_CHARGE": "5b5f751486f77447ec5d770c",
|
||||
"MOD_FLASHHIDER": "5b5f724c86f774093f2ecf15",
|
||||
"MOD_FOREGRIP": "5b5f71de86f774093f2ecf13",
|
||||
"MOD_GASBLOCK": "5b5f760586f774093e6cb509",
|
||||
"MOD_HANDGUARD": "5b5f75e486f77447ec5d7712",
|
||||
"MOD_IRON_SIGHT": "5b5f746686f77447ec5d7708",
|
||||
"MOD_LAUNCHER": "5b5f752e86f774093e6cb505",
|
||||
"MOD_LIGHTLASER": "5b5f736886f774094242f193",
|
||||
"MOD_MAGAZINE": "5b5f754a86f774094242f19b",
|
||||
"MOD_MOUNT": "5b5f755f86f77447ec5d770e",
|
||||
"MOD_MICRO_DOT": "5b5f744786f774094242f197",
|
||||
"MOD_MUZZLE": "5b5f724186f77447ed5636ad",
|
||||
"MOD_OPTIC": "5b5f748386f774093e6cb501",
|
||||
"MOD_PISTOLGRIP": "5b5f761f86f774094242f1a1",
|
||||
"MOD_RECEIVER": "5b5f764186f77447ec5d7714",
|
||||
"MOD_SIGHT": "5b5f73ec86f774093e6cb4fd",
|
||||
"MOD_STOCK": "5b5f757486f774093e6cb507",
|
||||
"MOD_SUPPRESSOR": "5b5f731a86f774093e6cb4f9",
|
||||
"MONEY": "5b5f78b786f77447ed5636af",
|
||||
"PROVISIONS": "5b47574386f77428ca22b340",
|
||||
"PROVISIONS_DRINKS": "5b47574386f77428ca22b335",
|
||||
"PROVISIONS_FOOD": "5b47574386f77428ca22b336",
|
||||
"QUEST": "5b619f1a86f77450a702a6f3",
|
||||
"SPEC": "5b47574386f77428ca22b345",
|
||||
"WEAPONS": "5b5f78dc86f77409407a7f8e",
|
||||
"WEAPONS_ASSAULTRIFLES": "5b5f78fc86f77409407a7f90",
|
||||
"WEAPONS_BOLTACTION": "5b5f798886f77447ed5636b5",
|
||||
"WEAPONS_CARBINES": "5b5f78e986f77447ed5636b1",
|
||||
"WEAPONS_DMR": "5b5f791486f774093f2ed3be",
|
||||
"WEAPONS_GL": "5b5f79d186f774093f2ed3c2",
|
||||
"WEAPONS_MG": "5b5f79a486f77409407a7f94",
|
||||
"WEAPONS_MELEE": "5b5f7a0886f77409407a7f96",
|
||||
"WEAPONS_PISTOLS": "5b5f792486f77447ed5636b3",
|
||||
"WEAPONS_SHOTGUNS": "5b5f794b86f77409407a7f92",
|
||||
"WEAPONS_SMG": "5b5f796a86f774093f2ed3c0",
|
||||
"WEAPONS_SPECIAL": "5b5f79eb86f77447ed5636b7",
|
||||
"WEAPONS_THROW": "5b5f7a2386f774093f2ed3c4",
|
||||
};
|
||||
//# sourceMappingURL=itemHandbookCategories.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"itemHandbookCategories.js","sourceRoot":"","sources":["itemHandbookCategories.ts"],"names":[],"mappings":";;;AAAa,QAAA,uBAAuB,GAAmC;IACrE,MAAM,EAAE,0BAA0B;IAClC,YAAY,EAAE,0BAA0B;IACxC,aAAa,EAAE,0BAA0B;IACzC,QAAQ,EAAE,0BAA0B;IACpC,iBAAiB,EAAE,0BAA0B;IAC7C,oBAAoB,EAAE,0BAA0B;IAChD,eAAe,EAAE,0BAA0B;IAC3C,kBAAkB,EAAE,0BAA0B;IAC9C,kBAAkB,EAAE,0BAA0B;IAC9C,gBAAgB,EAAE,0BAA0B;IAC5C,eAAe,EAAE,0BAA0B;IAC3C,cAAc,EAAE,0BAA0B;IAC1C,kBAAkB,EAAE,0BAA0B;IAC9C,MAAM,EAAE,0BAA0B;IAClC,YAAY,EAAE,0BAA0B;IACxC,gBAAgB,EAAE,0BAA0B;IAC5C,YAAY,EAAE,0BAA0B;IACxC,iBAAiB,EAAE,0BAA0B;IAC7C,iBAAiB,EAAE,0BAA0B;IAC7C,eAAe,EAAE,0BAA0B;IAC3C,eAAe,EAAE,0BAA0B;IAC3C,WAAW,EAAE,0BAA0B;IACvC,cAAc,EAAE,0BAA0B;IAC1C,aAAa,EAAE,0BAA0B;IACzC,MAAM,EAAE,0BAA0B;IAClC,MAAM,EAAE,0BAA0B;IAClC,iBAAiB,EAAE,0BAA0B;IAC7C,eAAe,EAAE,0BAA0B;IAC3C,MAAM,EAAE,0BAA0B;IAClC,SAAS,EAAE,0BAA0B;IACrC,mBAAmB,EAAE,0BAA0B;IAC/C,gBAAgB,EAAE,0BAA0B;IAC5C,iBAAiB,EAAE,0BAA0B;IAC7C,eAAe,EAAE,0BAA0B;IAC3C,MAAM,EAAE,0BAA0B;IAClC,iBAAiB,EAAE,0BAA0B;IAC7C,WAAW,EAAE,0BAA0B;IACvC,YAAY,EAAE,0BAA0B;IACxC,mBAAmB,EAAE,0BAA0B;IAC/C,SAAS,EAAE,0BAA0B;IACrC,YAAY,EAAE,0BAA0B;IACxC,WAAW,EAAE,0BAA0B;IACvC,YAAY,EAAE,0BAA0B;IACxC,gBAAgB,EAAE,0BAA0B;IAC5C,cAAc,EAAE,0BAA0B;IAC1C,cAAc,EAAE,0BAA0B;IAC1C,eAAe,EAAE,0BAA0B;IAC3C,gBAAgB,EAAE,0BAA0B;IAC5C,cAAc,EAAE,0BAA0B;IAC1C,gBAAgB,EAAE,0BAA0B;IAC5C,cAAc,EAAE,0BAA0B;IAC1C,WAAW,EAAE,0BAA0B;IACvC,eAAe,EAAE,0BAA0B;IAC3C,YAAY,EAAE,0BAA0B;IACxC,WAAW,EAAE,0BAA0B;IACvC,gBAAgB,EAAE,0BAA0B;IAC5C,cAAc,EAAE,0BAA0B;IAC1C,WAAW,EAAE,0BAA0B;IACvC,WAAW,EAAE,0BAA0B;IACvC,gBAAgB,EAAE,0BAA0B;IAC5C,OAAO,EAAE,0BAA0B;IACnC,YAAY,EAAE,0BAA0B;IACxC,mBAAmB,EAAE,0BAA0B;IAC/C,iBAAiB,EAAE,0BAA0B;IAC7C,OAAO,EAAE,0BAA0B;IACnC,MAAM,EAAE,0BAA0B;IAClC,SAAS,EAAE,0BAA0B;IACrC,uBAAuB,EAAE,0BAA0B;IACnD,oBAAoB,EAAE,0BAA0B;IAChD,kBAAkB,EAAE,0BAA0B;IAC9C,aAAa,EAAE,0BAA0B;IACzC,YAAY,EAAE,0BAA0B;IACxC,YAAY,EAAE,0BAA0B;IACxC,eAAe,EAAE,0BAA0B;IAC3C,iBAAiB,EAAE,0BAA0B;IAC7C,kBAAkB,EAAE,0BAA0B;IAC9C,aAAa,EAAE,0BAA0B;IACzC,iBAAiB,EAAE,0BAA0B;IAC7C,eAAe,EAAE,0BAA0B;CAC5C,CAAC"}
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
export const ItemHandbookCategoryMap: { [itemName: string]: string } = {
|
||||
"AMMO": "5b47574386f77428ca22b346",
|
||||
"AMMO_BOXES": "5b47574386f77428ca22b33c",
|
||||
"AMMO_ROUNDS": "5b47574386f77428ca22b33b",
|
||||
"BARTER": "5b47574386f77428ca22b33e",
|
||||
"BARTER_BUILDING": "5b47574386f77428ca22b2ee",
|
||||
"BARTER_ELECTRONICS": "5b47574386f77428ca22b2ef",
|
||||
"BARTER_ENERGY": "5b47574386f77428ca22b2ed",
|
||||
"BARTER_FLAMMABLE": "5b47574386f77428ca22b2f2",
|
||||
"BARTER_HOUSEHOLD": "5b47574386f77428ca22b2f0",
|
||||
"BARTER_MEDICAL": "5b47574386f77428ca22b2f3",
|
||||
"BARTER_OTHERS": "5b47574386f77428ca22b2f4",
|
||||
"BARTER_TOOLS": "5b47574386f77428ca22b2f6",
|
||||
"BARTER_VALUABLES": "5b47574386f77428ca22b2f1",
|
||||
"GEAR": "5b47574386f77428ca22b33f",
|
||||
"GEAR_ARMOR": "5b5f701386f774093f2ecf0f",
|
||||
"GEAR_BACKPACKS": "5b5f6f6c86f774093f2ecf0b",
|
||||
"GEAR_CASES": "5b5f6fa186f77409407a7eb7",
|
||||
"GEAR_COMPONENTS": "5b5f704686f77447ec5d76d7",
|
||||
"GEAR_FACECOVERS": "5b47574386f77428ca22b32f",
|
||||
"GEAR_HEADSETS": "5b5f6f3c86f774094242ef87",
|
||||
"GEAR_HEADWEAR": "5b47574386f77428ca22b330",
|
||||
"GEAR_RIGS": "5b5f6f8786f77447ed563642",
|
||||
"GEAR_SECURED": "5b5f6fd286f774093f2ecf0d",
|
||||
"GEAR_VISORS": "5b47574386f77428ca22b331",
|
||||
"INFO": "5b47574386f77428ca22b341",
|
||||
"KEYS": "5b47574386f77428ca22b342",
|
||||
"KEYS_ELECTRONIC": "5c518ed586f774119a772aee",
|
||||
"KEYS_MECHANIC": "5c518ec986f7743b68682ce2",
|
||||
"MAPS": "5b47574386f77428ca22b343",
|
||||
"MEDICAL": "5b47574386f77428ca22b344",
|
||||
"MEDICAL_INJECTORS": "5b47574386f77428ca22b33a",
|
||||
"MEDICAL_INJURY": "5b47574386f77428ca22b339",
|
||||
"MEDICAL_MEDKITS": "5b47574386f77428ca22b338",
|
||||
"MEDICAL_PILLS": "5b47574386f77428ca22b337",
|
||||
"MODS": "5b5f71a686f77447ed5636ab",
|
||||
"MODS_FUNCTIONAL": "5b5f71b386f774093f2ecf11",
|
||||
"MODS_GEAR": "5b5f750686f774093e6cb503",
|
||||
"MODS_VITAL": "5b5f75b986f77447ec5d7710",
|
||||
"MOD_ASSAULT_SCOPE": "5b5f740a86f77447ec5d7706",
|
||||
"MOD_AUX": "5b5f74cc86f77447ec5d770a",
|
||||
"MOD_BARREL": "5b5f75c686f774094242f19f",
|
||||
"MOD_BIPOD": "5b5f71c186f77409407a7ec0",
|
||||
"MOD_CHARGE": "5b5f751486f77447ec5d770c",
|
||||
"MOD_FLASHHIDER": "5b5f724c86f774093f2ecf15",
|
||||
"MOD_FOREGRIP": "5b5f71de86f774093f2ecf13",
|
||||
"MOD_GASBLOCK": "5b5f760586f774093e6cb509",
|
||||
"MOD_HANDGUARD": "5b5f75e486f77447ec5d7712",
|
||||
"MOD_IRON_SIGHT": "5b5f746686f77447ec5d7708",
|
||||
"MOD_LAUNCHER": "5b5f752e86f774093e6cb505",
|
||||
"MOD_LIGHTLASER": "5b5f736886f774094242f193",
|
||||
"MOD_MAGAZINE": "5b5f754a86f774094242f19b",
|
||||
"MOD_MOUNT": "5b5f755f86f77447ec5d770e",
|
||||
"MOD_MICRO_DOT": "5b5f744786f774094242f197",
|
||||
"MOD_MUZZLE": "5b5f724186f77447ed5636ad",
|
||||
"MOD_OPTIC": "5b5f748386f774093e6cb501",
|
||||
"MOD_PISTOLGRIP": "5b5f761f86f774094242f1a1",
|
||||
"MOD_RECEIVER": "5b5f764186f77447ec5d7714",
|
||||
"MOD_SIGHT": "5b5f73ec86f774093e6cb4fd",
|
||||
"MOD_STOCK": "5b5f757486f774093e6cb507",
|
||||
"MOD_SUPPRESSOR": "5b5f731a86f774093e6cb4f9",
|
||||
"MONEY": "5b5f78b786f77447ed5636af",
|
||||
"PROVISIONS": "5b47574386f77428ca22b340",
|
||||
"PROVISIONS_DRINKS": "5b47574386f77428ca22b335",
|
||||
"PROVISIONS_FOOD": "5b47574386f77428ca22b336",
|
||||
"QUEST": "5b619f1a86f77450a702a6f3",
|
||||
"SPEC": "5b47574386f77428ca22b345",
|
||||
"WEAPONS": "5b5f78dc86f77409407a7f8e",
|
||||
"WEAPONS_ASSAULTRIFLES": "5b5f78fc86f77409407a7f90",
|
||||
"WEAPONS_BOLTACTION": "5b5f798886f77447ed5636b5",
|
||||
"WEAPONS_CARBINES": "5b5f78e986f77447ed5636b1",
|
||||
"WEAPONS_DMR": "5b5f791486f774093f2ed3be",
|
||||
"WEAPONS_GL": "5b5f79d186f774093f2ed3c2",
|
||||
"WEAPONS_MG": "5b5f79a486f77409407a7f94",
|
||||
"WEAPONS_MELEE": "5b5f7a0886f77409407a7f96",
|
||||
"WEAPONS_PISTOLS": "5b5f792486f77447ed5636b3",
|
||||
"WEAPONS_SHOTGUNS": "5b5f794b86f77409407a7f92",
|
||||
"WEAPONS_SMG": "5b5f796a86f774093f2ed3c0",
|
||||
"WEAPONS_SPECIAL": "5b5f79eb86f77447ed5636b7",
|
||||
"WEAPONS_THROW": "5b5f7a2386f774093f2ed3c4",
|
||||
};
|
||||
+3699
File diff suppressed because it is too large
Load Diff
+1
File diff suppressed because one or more lines are too long
+3695
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,28 @@
|
||||
[General]
|
||||
gameName=spt
|
||||
modid=0
|
||||
version=d2025.1.13.0
|
||||
newestVersion=
|
||||
category="1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=Additional Clothing USEC 310.zip
|
||||
repository=Nexus
|
||||
ignoredVersion=
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=false
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2025-01-13T13:27:59Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
1\modid=0
|
||||
1\fileid=0
|
||||
size=1
|
||||
@@ -0,0 +1,24 @@
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
distribute this software, either in source code form or as a compiled
|
||||
binary, for any purpose, commercial or non-commercial, and by any
|
||||
means.
|
||||
|
||||
In jurisdictions that recognize copyright laws, the author or authors
|
||||
of this software dedicate any and all copyright interest in the
|
||||
software to the public domain. We make this dedication for the benefit
|
||||
of the public at large and to the detriment of our heirs and
|
||||
successors. We intend this dedication to be an overt act of
|
||||
relinquishment in perpetuity of all present and future rights to this
|
||||
software under copyright law.
|
||||
|
||||
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 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.
|
||||
|
||||
For more information, please refer to <https://unlicense.org>
|
||||
@@ -0,0 +1,335 @@
|
||||
{
|
||||
"manifest": [
|
||||
{
|
||||
"key": "Hands/HandsMC_PCU.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/TopMC_PCU.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/AdaptiveUCON.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/HandsAdaptiveUCON.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/USEC_RaidAggressor.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_RaidAggressor.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/USECParkaBL.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/HandsParkaBL.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/USECParkaMC.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/HandsParkaMC.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/USEC_MC_softshell.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/Hands_MC_softshell.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/MCbirdeye.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/HandsBadlandsPCU.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/TopBadlandsPCU.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/HandsBlackPCU.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/TopBlackPCU.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/HandsPredatorlynx.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/USEClynxPredator.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/HandsODlynx.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/USEClynxOD.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/PredatorBirdeye.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/FlecktarnCombat.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/FlecktarnBirdeye.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/BadlandsBirdeye.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/Pants_BL_Knight.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/MultitarnG3.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/AtacsUCONBigPipe.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/FlecktarnSPN.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/HandsSPNFlecktarn.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/MultitarnSPN.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/HandsSPNMultitarn.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/ReconUCON.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/MultitarnUFPro.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/UCONBirdeye.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Bottoms/G3FieldMC.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Tops/TopCarinthiaUCON.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/characters/character/skeleton.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "Hands/HandsCarinthiaUCON.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/content/hands/usec/materials/watch_usec_textures",
|
||||
"assets/content/textures/holemanager/round_spec_mask.bundle",
|
||||
"assets/content/hands/bear/bear_watch.bundle"
|
||||
]
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
LFS
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user