60 Commits
Author SHA1 Message Date
Rage 23dc6d93c3 Update Download Modpack.bat
Cleaned up some code; Automated the MO2 install fully with a new user input method to acquire the game path.
2025-01-16 02:24:37 -05:00
Rage a84001c8bf Updated MOAR Settings 2025-01-16 02:06:59 -05:00
Rage 4ccd8753d1 Updated ModOrganizer.ini 2025-01-16 02:06:42 -05:00
Rage 1d21d74bb9 Some Optimizations to the Modpack
Disabled a lot of client-side related mods, removed Performance Improvements and disabled some potentially bad mods.

Reinstalled a default version of MOAR with just the source code preset selection set to custom.
2025-01-16 01:26:40 -05:00
Rage 3ebaed3777 Removed Potential Mod Corrupting Game 2025-01-15 21:33:26 -05:00
Rage 5d24318a39 Added A Mod; Fixed One Mod Installation
Added
- Black Clothing Pack

Fixed
- Make Val/VSS Great Again
2025-01-15 20:59:57 -05:00
Rage a161750966 Added Mods
- New Trader Mod; Painter
  - Along with a new weapon attachment mod; Black Core
- Make Val/VSS Great Again
2025-01-15 20:53:42 -05:00
Rage c3fcfb84f8 Reduced Quantity Multipliers 2025-01-15 20:16:52 -05:00
Rage 35e1404f43 Reduced MOAR Bot Spawn Counts 2025-01-15 19:38:36 -05:00
Rage f004d53072 Fixed Version Number 2025-01-15 18:47:35 -05:00
Rage 4a1cdbcd20 Tweaked MOAR Map-Specific Spawns and Config 2025-01-15 18:47:15 -05:00
Rage c6a4c23e0d Disabled SWAG/DONUTS & Re-Enabled MOAR 2025-01-15 18:34:25 -05:00
Rage 9a9bde3445 Updated SWAG/DONUTS 2025-01-15 17:04:53 -05:00
Rage 7456838720 Updated SWAG/DONUTS Spawn Settings 2025-01-15 06:33:55 -05:00
Rage 69f3954bcb Disabled Visceral Combat & Graphics/Renders for Dedi 2025-01-15 05:52:58 -05:00
Rage 77d156762e Updated Visceral Combat; Enabled Graphics/Renderers for Dedi 2025-01-15 04:38:41 -05:00
Rage b026a328e4 Added Configs for Some Mods 2025-01-14 21:45:01 -05:00
Rage dded8a81d6 Updated Progressive Bot System 2025-01-14 21:41:14 -05:00
Rage fb99760b29 Updated SWAG/DONUTS 2025-01-14 21:05:12 -05:00
Rage 951d0201f9 Updated SWAG/DONUTS 2025-01-14 20:43:36 -05:00
Rage b292d36c21 Added New Mods; Removed Backups
- AUG Attachment Pack
- Plant Time Modifier
2025-01-14 20:14:52 -05:00
Rage 147c9bda00 Update README.md 2025-01-14 19:58:47 -05:00
Rage a67f0d8248 Update LICENSE.md 2025-01-14 19:57:06 -05:00
Rage 93d8f94c6b Added LICENSE 2025-01-14 04:57:11 -05:00
Rage 437ad4203d Updated Mod Configs
- Tweaked MOAR Custom & Default Settings
- Added Interactable Exfils API Config
2025-01-14 04:24:58 -05:00
Rage 7fee303436 Updated Progressive Bot System 2025-01-14 01:49:02 -05:00
Rage b7a439a282 Added Interactable Exfils API 2025-01-14 01:42:23 -05:00
Rage 15ddd52ac6 Tweaked AI Settings, Leveling and MOAR Spawning 2025-01-14 00:52:51 -05:00
Rage 6eecae59f6 Updated MOAR & Tweaked Config 2025-01-13 18:17:36 -05:00
Rage c99136d826 Disabling SWAG/DONUTS For Time Being
Arys has postponed providing support for Fika for now until it is more finalized for SPT specifically.

Deleted backups for mods as well.
2025-01-13 18:07:22 -05:00
Rage 8039e900f6 Updated Donuts.dll 2025-01-13 17:44:03 -05:00
Rage 5381ede0e2 Added Additional Clothing & Updated Menu Overhaul 2025-01-13 08:29:02 -05:00
Rage 4347242d3a Tweaked Bot Limits for DONUTS 2025-01-13 06:39:16 -05:00
Rage ccc7f1c7b6 BE Test - Reverted to PR Edit of Raid Handling 2025-01-13 01:05:49 -05:00
Rage 810312b097 BE Test - Updated Donuts.dll X2 2025-01-13 00:56:13 -05:00
Rage cbffa56551 BE Testing - Updated Donuts.dll 2025-01-13 00:51:05 -05:00
Rage 75c67cbaa0 Forgot to enable SWAG/DONUTS 2025-01-13 00:34:18 -05:00
Rage a60509ce4e Updated Donuts DLL 2025-01-13 00:26:38 -05:00
Rage f2b832fb77 Updated SWAG/DONUTS 2025-01-13 00:19:28 -05:00
Rage e787ecccb5 Disabled Swagnuts 2025-01-12 23:31:41 -05:00
Rage fa192acb29 Updated Version Number 2025-01-12 22:41:12 -05:00
Rage c02a35612e Updated Swagnuts & Some Mod Configs 2025-01-12 22:40:35 -05:00
Rage 73e3f57758 Disabled Swagnuts; Re-enabled & Tweaked MOAR 2025-01-12 18:27:43 -05:00
Rage 9e834694f2 Added Scope and Red Dot Sight Overhaul 2025-01-12 17:43:22 -05:00
Rage a7d2afe3b0 Updated SVM Config 2025-01-12 17:36:55 -05:00
Rage c2885757d3 Updated Borkels NVGs & SVM 2025-01-12 17:34:08 -05:00
Rage b697b687a7 Updated That's Lit & Tweaked Configs 2025-01-12 07:34:09 -05:00
Rage b9abacef3e Updated Version Number 2025-01-12 07:03:50 -05:00
Rage d990cf381f Added Borkel's Realistic Night Vision Goggles 2025-01-12 06:48:15 -05:00
Rage b8efad481d Some Config Updates 2025-01-12 06:42:16 -05:00
Rage 4c35579b73 Added a Separator for Version Tracking 2025-01-12 04:51:07 -05:00
Rage 7ccfda6d3d Updated Fika Dedicated & Update Rate for Config 2025-01-12 04:48:05 -05:00
Rage f44663aa2a Recreated Swagnuts Config 2025-01-12 03:41:40 -05:00
Rage df12331013 Updated Swagnuts 2025-01-12 03:14:20 -05:00
Rage 66964b26ef Updated Quick Throw Hotkey & Fika Config 2025-01-11 16:19:56 -05:00
Rage 887e7116b6 Disabled Custom Asset Importer 2025-01-11 16:05:23 -05:00
Rage e1905a5613 Added RPG-7 & Peacemaker Mods 2025-01-11 04:49:47 -05:00
Rage 4be51035f2 Tweaked Donuts Spawn Settigns 2025-01-11 00:10:29 -05:00
Rage 246e806005 Updated Server Modlist 2025-01-10 23:29:23 -05:00
Rage 2a85d05696 Generated & Tweaked Donuts Config 2025-01-10 23:24:34 -05:00
967 changed files with 40445 additions and 49419 deletions
+1
View File
@@ -3,3 +3,4 @@ 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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+21
View File
@@ -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.
+28
View File
@@ -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"
]
}
]
}
@@ -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"
}
}
}
@@ -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
}
@@ -1,11 +1,11 @@
[General]
gameName=spt
modid=0
version=d2024.12.18.0
version=d2025.1.13.0
newestVersion=
category="-1,"
category="1,"
nexusFileStatus=1
installationFile=SWAG-Donuts-v3.5.2-Alpha-V1.zip
installationFile=Additional Clothing BEAR 310.zip
repository=Nexus
ignoredVersion=
comments=
@@ -15,7 +15,7 @@ url=
hasCustomURL=false
lastNexusQuery=
lastNexusUpdate=
nexusLastModified=2024-12-18T07:07:11Z
nexusLastModified=2025-01-13T13:28:06Z
nexusCategory=0
converted=false
validated=false
@@ -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"
]
}
]
}
@@ -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"
}
@@ -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
File diff suppressed because one or more lines are too long
@@ -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;
}
}
}
@@ -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
@@ -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"}
@@ -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() };
@@ -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
@@ -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"}
@@ -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;
};
}
@@ -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
@@ -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"}
@@ -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",
};
@@ -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
@@ -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"}
@@ -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",
};
File diff suppressed because one or more lines are too long
+28
View File
@@ -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"
]
}
]
}

Some files were not shown because too many files have changed in this diff Show More