Adding Mods w/Symlink

This commit is contained in:
2025-01-02 20:23:50 -05:00
parent 88fc2c3c93
commit 404890ecbb
10218 changed files with 3191380 additions and 0 deletions
@@ -0,0 +1,13 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/modules.xml
/.idea.Choccy-KSG12.iml
/contentModel.xml
/projectSettingsUpdater.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>
@@ -0,0 +1,43 @@
{
"manifest": [
{
"key": "ksg12/client_assets.bundle",
"dependencyKeys": [
"ksg12/texture.bundle",
"cubemaps",
"shaders"
]
},
{
"key": "ksg12/texture.bundle",
"dependencyKeys": [
]
},
{
"key": "ksg12/ksg12_bank.bundle",
"dependencyKeys": [
"assets/content/audio/blendoptions/assets.bundle"
]
},
{
"key": "ksg12/mod_magazine_ksg_12g_tube_cap.bundle",
"dependencyKeys": [
"ksg12/client_assets.bundle"
]
},
{
"key": "ksg12/weapon_keltec_ksg_12g_container.bundle",
"dependencyKeys": [
"assets/content/audio/weapons/generic",
"assets/content/weapons/additional_hands/client_assets.bundle",
"assets/content/weapons/weapon_root_anim_fix.bundle",
"assets/content/weapons/wip/kibas tuning prefabs/muzzlejets_templates/default_assets.bundle",
"assets/systems/effects/heathaze/defaultheathaze.bundle",
"assets/systems/effects/muzzleflash/muzzleflash.bundle",
"assets/systems/effects/smoke.bundle",
"ksg12/client_assets.bundle",
"ksg12/ksg12_bank.bundle"
]
}
]
}
@@ -0,0 +1,26 @@
{
"name": "KSG12",
"version": "1.0.5",
"main": "src/mod.js",
"license": "CC-BY 3.0",
"author": "Choccy",
"isBundleMod": true,
"sptVersion": "~3.10",
"scripts": {
"setup": "npm i",
"build": "node ./build.mjs",
"buildinfo": "node ./build.mjs --verbose"
},
"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"
}
}
@@ -0,0 +1,72 @@
#!/usr/bin/env node
// This is a simple script used to build a mod package. The script will copy necessary files to the build directory
// and compress the build directory into a zip file that can be easily shared.
const fs = require("fs-extra");
const glob = require("glob");
const zip = require('bestzip');
const path = require("path");
// Load the package.json file to get some information about the package so we can name things appropriately. This is
// atypical, and you would never do this in a production environment, but this script is only used for development so
// it's fine in this case. Some of these values are stored in environment variables, but those differ between node
// versions; the 'author' value is not available after node v14.
const { author, name:packageName, version } = require("./package.json");
// Generate the name of the package, stripping out all non-alphanumeric characters in the 'author' and 'name'.
const modName = `${author.replace(/[^a-z0-9]/gi, "")}-${packageName.replace(/[^a-z0-9]/gi, "")}-${version}`;
console.log(`Generated package name: ${modName}`);
// Delete the old build directory and compressed package file.
fs.rmSync(`${__dirname}/dist`, { force: true, recursive: true });
console.log("Previous build files deleted.");
// Generate a list of files that should not be copied over into the distribution directory. This is a blacklist to ensure
// we always copy over additional files and directories that authors may have added to their project. This may need to be
// expanded upon by the mod author to allow for node modules that are used within the mod; example commented out below.
const ignoreList = [
"node_modules/",
// "node_modules/!(weighted|glob)", // Instead of excluding the entire node_modules directory, allow two node modules.
"src/**/*.js",
"types/",
".git/",
".gitea/",
".eslintignore",
".eslintrc.json",
".gitignore",
".DS_Store",
"packageBuild.ts",
"mod.code-workspace",
"package-lock.json",
"tsconfig.json"
];
const exclude = glob.sync(`{${ignoreList.join(",")}}`, { realpath: true, dot: true });
// For some reason these basic-bitch functions won't allow us to copy a directory into itself, so we have to resort to
// using a temporary directory, like an idiot. Excuse the normalize spam; some modules cross-platform, some don't...
fs.copySync(__dirname, path.normalize(`${__dirname}/../~${modName}`), {filter:(filePath) =>
{
return !exclude.includes(filePath);
}});
fs.moveSync(path.normalize(`${__dirname}/../~${modName}`), path.normalize(`${__dirname}/${modName}`), { overwrite: true });
fs.copySync(path.normalize(`${__dirname}/${modName}`), path.normalize(`${__dirname}/dist`));
console.log("Build files copied.");
// Compress the files for easy distribution. The compressed file is saved into the dist directory. When uncompressed we
// need to be sure that it includes a directory that the user can easily copy into their game mods directory.
zip({
source: modName,
destination: `dist/${modName}.zip`,
cwd: __dirname
}).catch(function(err)
{
console.error("A bestzip error has occurred: ", err.stack);
}).then(function()
{
console.log(`Compressed mod package to: /dist/${modName}.zip`);
// Now that we're done with the compression we can delete the temporary build directory.
fs.rmSync(`${__dirname}/${modName}`, { force: true, recursive: true });
console.log("Build successful! your zip file has been created and is ready to be uploaded to hub.sp-tarkov.com/files/");
});
@@ -0,0 +1,227 @@
{
"items": [
{
"_id": "66cf2a5d69fb0c98e6a9411b",
"_tpl": "66ce63fe2fce038160aa9ac6",
"parentId": "hideout",
"slotId": "hideout",
"upd": {
"UnlimitedCount": true,
"StackObjectsCount": 7531
}
},
{
"_id": "66cf2a631e3685e558dce877",
"_tpl": "66ce64029424740723b70288",
"parentId": "66cf2a5d69fb0c98e6a9411b",
"slotId": "mod_magazine"
},
{
"_id": "66cf2a6538a0af9020433ac3",
"_tpl": "5bc09a18d4351e003562b68e",
"parentId": "66cf2a5d69fb0c98e6a9411b",
"slotId": "mod_sight_rear"
},
{
"_id": "66cf28bf10ea8b6a8a8eafb9",
"_tpl": "5bc09a30d4351e00367fb7c8",
"parentId": "66cf2a5d69fb0c98e6a9411b",
"slotId": "mod_sight_front"
},
{
"_id": "66cf2b200dd2c22301adbc21",
"_tpl": "66ce63fe2fce038160aa9ac6",
"parentId": "hideout",
"slotId": "hideout",
"upd": {
"UnlimitedCount": true,
"StackObjectsCount": 5532
}
},
{
"_id": "66cf2b252936b5de9c70a136",
"_tpl": "66ce64029424740723b70288",
"parentId": "66cf2b200dd2c22301adbc21",
"slotId": "mod_magazine"
},
{
"_id": "66cf2b27e4995dc333ecfeda",
"_tpl": "584924ec24597768f12ae244",
"parentId": "66cf2b200dd2c22301adbc21",
"slotId": "mod_scope"
},
{
"_id": "66cf2b2883787f00d44d4ad4",
"_tpl": "5c87ca002e221600114cb150",
"parentId": "66cf2b200dd2c22301adbc21",
"slotId": "mod_foregrip"
},
{
"_id": "66cf2b2a62a0de6a3dceca0c",
"_tpl": "5bc09a18d4351e003562b68e",
"parentId": "66cf2b200dd2c22301adbc21",
"slotId": "mod_sight_rear"
},
{
"_id": "66cf2b2c6c10fa1a3dd89111",
"_tpl": "5bc09a30d4351e00367fb7c8",
"parentId": "66cf2b200dd2c22301adbc21",
"slotId": "mod_sight_front"
},
{
"_id": "66cf2b8b45d73907343924a3",
"_tpl": "66ce63fe2fce038160aa9ac6",
"parentId": "hideout",
"slotId": "hideout",
"upd": {
"UnlimitedCount": true,
"StackObjectsCount": 7531
}
},
{
"_id": "66cf2b95febcdccef1464156",
"_tpl": "66ce64029424740723b70288",
"parentId": "66cf2b8b45d73907343924a3",
"slotId": "mod_magazine"
},
{
"_id": "66cf2b96986c2ebac83a61dc",
"_tpl": "5bc09a18d4351e003562b68e",
"parentId": "66cf2b8b45d73907343924a3",
"slotId": "mod_sight_rear"
},
{
"_id": "66cf2b9813dd1fd762131ae9",
"_tpl": "5bc09a30d4351e00367fb7c8",
"parentId": "66cf2b8b45d73907343924a3",
"slotId": "mod_sight_front"
},
{
"_id": "66cf2bde82ea790ad007f1fa",
"_tpl": "66ce63fe2fce038160aa9ac6",
"parentId": "hideout",
"slotId": "hideout",
"upd": {
"UnlimitedCount": true,
"StackObjectsCount": 5532
}
},
{
"_id": "66cf2bf9ca5b96982f9b5972",
"_tpl": "66ce64029424740723b70288",
"parentId": "66cf2bde82ea790ad007f1fa",
"slotId": "mod_magazine"
},
{
"_id": "66cf2bfb0940e8d0c47ae35d",
"_tpl": "57c69dd424597774c03b7bbc",
"parentId": "66cf2bde82ea790ad007f1fa",
"slotId": "mod_scope"
},
{
"_id": "66cf2c00bb4ecab519ef6fdd",
"_tpl": "5c1cd46f2e22164bef5cfedb",
"parentId": "66cf2bde82ea790ad007f1fa",
"slotId": "mod_foregrip"
},
{
"_id": "66cf2c02db06cff9e183f17c",
"_tpl": "5bc09a18d4351e003562b68e",
"parentId": "66cf2bde82ea790ad007f1fa",
"slotId": "mod_sight_rear"
},
{
"_id": "66cf2c047b59010a035f8f0d",
"_tpl": "5bc09a30d4351e00367fb7c8",
"parentId": "66cf2bde82ea790ad007f1fa",
"slotId": "mod_sight_front"
},
{
"_id": "66cf2c062e771cc14c56c1c7",
"_tpl": "5b2388675acfc4771e1be0be",
"parentId": "66cf2bfb0940e8d0c47ae35d",
"slotId": "mod_scope"
},
{
"_id": "66cf3512f8e69a857c1ef843",
"_tpl": "66ce64029424740723b70288",
"parentId": "hideout",
"slotId": "hideout",
"upd": {
"UnlimitedCount": true,
"StackObjectsCount": 8722
}
}
],
"barter_scheme": {
"66cf2a5d69fb0c98e6a9411b": [
[
{
"_tpl": "5d1c819a86f774771b0acd6c",
"count": 2
},
{
"_tpl": "590a386e86f77429692b27ab",
"count": 2
},
{
"_tpl": "59e35cbb86f7741778269d83",
"count": 1
}
]
],
"66cf2b200dd2c22301adbc21": [
[
{
"_tpl": "5672cb724bdc2dc2088b456b",
"count": 2
},
{
"_tpl": "590c5c9f86f77477c91c36e7",
"count": 1
}
]
],
"66cf2b8b45d73907343924a3": [
[
{
"_tpl": "5696686a4bdc2da3298b456a",
"count": 563
}
]
],
"66cf2bde82ea790ad007f1fa": [
[
{
"_tpl": "590c645c86f77412b01304d9",
"count": 2
},
{
"_tpl": "5733279d245977289b77ec24",
"count": 1
}
]
],
"66cf3512f8e69a857c1ef843": [
[
{
"_tpl": "5696686a4bdc2da3298b456a",
"count": 23
}
]
]
},
"loyal_level_items":{
"66cf2a5d69fb0c98e6a9411b": 1,
"66cf2b200dd2c22301adbc21": 2,
"66cf2b8b45d73907343924a3": 2,
"66cf2bde82ea790ad007f1fa": 1,
"66cf3512f8e69a857c1ef843": 2
}
}
@@ -0,0 +1,150 @@
{
"ItemPresets": {
"66cf28b1716733c9610a18be": {
"_changeWeaponName": false,
"_encyclopedia": "66ce63fe2fce038160aa9ac6",
"_id": "66cf28b1716733c9610a18be",
"_items": [
{
"_id": "66cf28984a599acb4bdb7681",
"_tpl": "66ce63fe2fce038160aa9ac6"
},
{
"_id": "66cf28ba3e497adff96e63ff",
"_tpl": "66ce64029424740723b70288",
"parentId": "66cf28984a599acb4bdb7681",
"slotId": "mod_magazine"
},
{
"_id": "66cf28bdf93a2bd7eeb2abbe",
"_tpl": "5bc09a18d4351e003562b68e",
"parentId": "66cf28984a599acb4bdb7681",
"slotId": "mod_sight_rear",
"upd": {
"Sight": {
"ScopesCurrentCalibPointIndexes": [
0
],
"ScopesSelectedModes": [
0
],
"SelectedScope": 0
}
}
},
{
"_id": "66cf28bf10ea8b6a8a8eafb9",
"_tpl": "5bc09a30d4351e00367fb7c8",
"parentId": "66cf28984a599acb4bdb7681",
"slotId": "mod_sight_front",
"upd": {
"Sight": {
"ScopesCurrentCalibPointIndexes": [
0
],
"ScopesSelectedModes": [
0
],
"SelectedScope": 0
}
}
}
],
"_name": "KSG-12 Stock",
"_parent": "66cf28984a599acb4bdb7681",
"_type": "Preset"
},
"66cf290ff22275c4f39ccecc": {
"_changeWeaponName": true,
"_id": "66cf290ff22275c4f39ccecc",
"_items": [
{
"_id": "66cf292bd8085eae93da99c1",
"_tpl": "66ce63fe2fce038160aa9ac6"
},
{
"_id": "66cf29404c2b9cd75a5e0c9f",
"_tpl": "66ce64029424740723b70288",
"parentId": "66cf292bd8085eae93da99c1",
"slotId": "mod_magazine"
},
{
"_id": "66cf293d50a29ce7061367d1",
"_tpl": "584924ec24597768f12ae244",
"parentId": "66cf292bd8085eae93da99c1",
"slotId": "mod_scope"
},
{
"_id": "66cf29391dc6ec5bd2e3ea9a",
"_tpl": "5c87ca002e221600114cb150",
"parentId": "66cf292bd8085eae93da99c1",
"slotId": "mod_foregrip"
},
{
"_id": "66cf293732503acd36b3a9ba",
"_tpl": "5bc09a18d4351e003562b68e",
"parentId": "66cf292bd8085eae93da99c1",
"slotId": "mod_sight_rear"
},
{
"_id": "66cf29353cf9a097c85a95ae",
"_tpl": "5bc09a30d4351e00367fb7c8",
"parentId": "66cf292bd8085eae93da99c1",
"slotId": "mod_sight_front"
}
],
"_name": "CQB",
"_parent": "66cf292bd8085eae93da99c1",
"_type": "Preset"
},
"66cf2968f9beb45c3d12d323": {
"_changeWeaponName": true,
"_id": "66cf2968f9beb45c3d12d323",
"_items": [
{
"_id": "66cf296dc9595cea0af9c0a0",
"_tpl": "66ce63fe2fce038160aa9ac6"
},
{
"_id": "66cf297eb1da8884e1b5fbb6",
"_tpl": "66ce64029424740723b70288",
"parentId": "66cf296dc9595cea0af9c0a0",
"slotId": "mod_magazine"
},
{
"_id": "66cf2980e699d6a18f3679e5",
"_tpl": "57c69dd424597774c03b7bbc",
"parentId": "66cf296dc9595cea0af9c0a0",
"slotId": "mod_scope"
},
{
"_id": "66cf298343b3a317aa233777",
"_tpl": "5c1cd46f2e22164bef5cfedb",
"parentId": "66cf296dc9595cea0af9c0a0",
"slotId": "mod_foregrip"
},
{
"_id": "66cf29852ebcedeb2fdc428e",
"_tpl": "5bc09a18d4351e003562b68e",
"parentId": "66cf296dc9595cea0af9c0a0",
"slotId": "mod_sight_rear"
},
{
"_id": "66cf298cba84d709c5d1d3ad",
"_tpl": "5bc09a30d4351e00367fb7c8",
"parentId": "66cf296dc9595cea0af9c0a0",
"slotId": "mod_sight_front"
},
{
"_id": "66cf2994fd7e0cd2c88ea389",
"_tpl": "5b2388675acfc4771e1be0be",
"parentId": "66cf2980e699d6a18f3679e5",
"slotId": "mod_scope"
}
],
"_name": "Lucky Shooter",
"_parent": "66cf296dc9595cea0af9c0a0",
"_type": "Preset"
}
}
}
@@ -0,0 +1,319 @@
{
"spawnsRezerv": [
{
"locationId": "(78.797 2.4313 -13.9751|37.4873 226.9819 316.1582)",
"probability": 0.345273,
"template": {
"Id": "6651567375381abb786f3a5b",
"IsContainer": false,
"useGravity": true,
"randomRotation": false,
"Position": {
"x": 78.797,
"y": 2.4313,
"z": -13.9751
},
"Rotation": {
"x": 37.4873,
"y": 226.9819,
"z": 316.1582
},
"IsGroupPosition": false,
"GroupPositions": [],
"IsAlwaysSpawn": false,
"Root": "6651567738f38ab0f6c52bc2",
"Items": [
{
"_id": "6651567ed962a5b792248fa6",
"_tpl": "665152810b4c784f2258d7d0"
},
{
"_id": "665156862404d5899b738021",
"_tpl": "665154c4019e9e7d5ad6d0cc",
"parentId": "6651567ed962a5b792248fa6",
"slotId": "mod_magazine"
}
]
},
"itemDistribution": [
{
"composedKey": {
"key": "6651567ed962a5b792248fa6"
},
"relativeProbability": 8
}
]
},
{
"locationId": "(11.5916 -0.7892 4.6904|353.6969 48.8262 41.7712)",
"probability": 0.044532,
"template": {
"Id": "66515689253af484c5f1303a",
"IsContainer": false,
"useGravity": true,
"randomRotation": false,
"Position": {
"x": 11.5916,
"y": -0.7892,
"z": 4.6904
},
"Rotation": {
"x": 353.6969,
"y": 48.8262,
"z": 41.7712
},
"IsGroupPosition": false,
"GroupPositions": [],
"IsAlwaysSpawn": false,
"Root": "6651568ca4b26f481f19cda6",
"Items": [
{
"_id": "66515693328c890700469175",
"_tpl": "665152810b4c784f2258d7d0"
},
{
"_id": "665156918928bd149c60e827",
"_tpl": "665154c4019e9e7d5ad6d0cc",
"parentId": "66515693328c890700469175",
"slotId": "mod_magazine"
}
]
},
"itemDistribution": [
{
"composedKey": {
"key": "66515693328c890700469175"
},
"relativeProbability": 8
}
]
},
{
"locationId": "(-57.1463 2.6746 20.5125|332.6287 14.0353 93.8348)",
"probability": 0.007432,
"template": {
"Id": "6651569a10759cb0de48342f",
"IsContainer": false,
"useGravity": true,
"randomRotation": false,
"Position": {
"x": -57.1463,
"y": 2.6746,
"z": 20.5125
},
"Rotation": {
"x": 332.6287,
"y": 14.0353,
"z": 93.8348
},
"IsGroupPosition": false,
"GroupPositions": [],
"IsAlwaysSpawn": false,
"Root": "6651569d1466068c6cf8b2b2",
"Items": [
{
"_id": "665156a3b260a8bf5125a4b7",
"_tpl": "665152810b4c784f2258d7d0"
},
{
"_id": "665156a05ac9ddcd5afa52d2",
"_tpl": "665154c4019e9e7d5ad6d0cc",
"parentId": "665156a3b260a8bf5125a4b7",
"slotId": "mod_magazine"
}
]
},
"itemDistribution": [
{
"composedKey": {
"key": "665156a3b260a8bf5125a4b7"
},
"relativeProbability": 8
}
]
},
{
"locationId": "(-40.0311 19.3493 182.6263|359.9928 29.7891 272.4274)",
"probability": 0.115632,
"template": {
"Id": "665156b386eb1fb0aa4423d8",
"IsContainer": false,
"useGravity": true,
"randomRotation": false,
"Position": {
"x": -40.0311,
"y": 19.3493,
"z": 182.6263
},
"Rotation": {
"x": 359.9928,
"y": 29.7891,
"z": 272.4274
},
"IsGroupPosition": false,
"GroupPositions": [],
"IsAlwaysSpawn": false,
"Root": "665156b6e05850fe3e39d38e",
"Items": [
{
"_id": "665156bcf71631770429e3ad",
"_tpl": "665152810b4c784f2258d7d0"
},
{
"_id": "665156b953844543601b15ca",
"_tpl": "665154c4019e9e7d5ad6d0cc",
"parentId": "665156bcf71631770429e3ad",
"slotId": "mod_magazine"
}
]
},
"itemDistribution": [
{
"composedKey": {
"key": "665156bcf71631770429e3ad"
},
"relativeProbability": 8
}
]
}
],
"spawnsWoods":[
{
"locationId": "(54.0311 -1.9997 -47.0143|1.7769 44.5448 93.2316)",
"probability": 0.15673,
"template": {
"Id": "665156c6e89a63667409ae9b",
"IsContainer": false,
"useGravity": true,
"randomRotation": false,
"Position": {
"x": 54.0311,
"y": -1.9997,
"z": -47.0143
},
"Rotation": {
"x": 1.7769,
"y": 44.5448,
"z": 93.2316
},
"IsGroupPosition": false,
"GroupPositions": [],
"IsAlwaysSpawn": false,
"Root": "665156ca4aeb42ea90e12402",
"Items": [
{
"_id": "665156d18439fd78ee89f7fa",
"_tpl": "665152810b4c784f2258d7d0"
},
{
"_id": "665156cdfbc726f414d55e81",
"_tpl": "665154c4019e9e7d5ad6d0cc",
"parentId": "665156d18439fd78ee89f7fa",
"slotId": "mod_magazine"
}
]
},
"itemDistribution": [
{
"composedKey": {
"key": "665156d18439fd78ee89f7fa"
},
"relativeProbability": 8
}
]
},
{
"locationId": "(-203.8976 -1.006 217.1824|359.8936 156.5553 49.0165)",
"probability": 0.24673,
"template": {
"Id": "665156d66283b8245a51ee10",
"IsContainer": false,
"useGravity": true,
"randomRotation": false,
"Position": {
"x": -203.8976,
"y": -1.006,
"z": 217.1824
},
"Rotation": {
"x": 359.8936,
"y": 156.5553,
"z": 49.0165
},
"IsGroupPosition": false,
"GroupPositions": [],
"IsAlwaysSpawn": false,
"Root": "665156d92118013ac5fc6364",
"Items": [
{
"_id": "665156e00c98d72dd4cde0f9",
"_tpl": "665152810b4c784f2258d7d0"
},
{
"_id": "665156ddb836ed40339d2688",
"_tpl": "665154c4019e9e7d5ad6d0cc",
"parentId": "665156e00c98d72dd4cde0f9",
"slotId": "mod_magazine"
}
]
},
"itemDistribution": [
{
"composedKey": {
"key": "665156e00c98d72dd4cde0f9"
},
"relativeProbability": 8
}
]
}
],
"spawnsFactory": [
{
"locationId": "(25.5145 8.6044 40.7727|0.1531 106.4753 158.1044)",
"probability": 0.07643,
"template": {
"Id": "665156e757dec8b8d7dd5f0b",
"IsContainer": false,
"useGravity": true,
"randomRotation": false,
"Position": {
"x": 25.5145,
"y": 8.6044,
"z": 40.7727
},
"Rotation": {
"x": 0.1531,
"y": 106.4753,
"z": 158.1044
},
"IsGroupPosition": false,
"GroupPositions": [],
"IsAlwaysSpawn": false,
"Root": "665156eac2285ec483385e8d",
"Items": [
{
"_id": "665156ef5ddfea15aa6e1b1b",
"_tpl": "665152810b4c784f2258d7d0"
},
{
"_id": "665156edbf39d6a24be36ec7",
"_tpl": "665154c4019e9e7d5ad6d0cc",
"parentId": "665156ef5ddfea15aa6e1b1b",
"slotId": "mod_magazine"
}
]
},
"itemDistribution": [
{
"composedKey": {
"key": "665156ef5ddfea15aa6e1b1b"
},
"relativeProbability": 4
}
]
}
],
"spawnsLight": [],
"spawnsShore": [],
"spawnsCustom": []
}
@@ -0,0 +1,444 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.mod = exports.HandbookTPL = exports.WeaponIds = void 0;
const Item_Preset_json_1 = __importDefault(require("../src/Item_Preset.json"));
const global_item_preset_json_1 = __importDefault(require("../src/global_item_preset.json"));
//import spawnPoints from "../src/loot/Spawns.json";
const ItemTpl_1 = require("C:/snapshot/project/obj/models/enums/ItemTpl");
const Traders_1 = require("C:/snapshot/project/obj/models/enums/Traders");
var WeaponIds;
(function (WeaponIds) {
WeaponIds["KSG12"] = "66ce63fe2fce038160aa9ac6";
WeaponIds["KSG12_MAG"] = "66ce64029424740723b70288";
})(WeaponIds || (exports.WeaponIds = WeaponIds = {}));
var HandbookTPL;
(function (HandbookTPL) {
HandbookTPL["SHOTGUN"] = "5b5f794b86f77409407a7f92";
HandbookTPL["ASSAULT_RIFLE"] = "5b5f78fc86f77409407a7f90";
HandbookTPL["PISTOL"] = "5b5f792486f77447ed5636b3";
HandbookTPL["CARBINE"] = "5b5f78e986f77447ed5636b1";
HandbookTPL["MARKSMAN"] = "5b5f791486f774093f2ed3be";
HandbookTPL["SMG"] = "5b5f796a86f774093f2ed3c0";
})(HandbookTPL || (exports.HandbookTPL = HandbookTPL = {}));
class Mod {
postDBLoad(container) {
const customitem = container.resolve("CustomItemService");
const databaseServer = container.resolve("DatabaseServer");
const db = databaseServer.getTables();
const globals = db.globals;
const PK = db.traders[Traders_1.Traders.PEACEKEEPER].assort;
const SKR = db.traders[Traders_1.Traders.SKIER].assort;
// WEAPON LISTING AND ATTACHMENT
const ksg_12g = {
itemTplToClone: ItemTpl_1.ItemTpl.SHOTGUN_REMINGTON_MODEL_870_12GA_PUMPACTION,
overrideProperties: {
Prefab: {
path: "ksg12/weapon_keltec_ksg_12g_container.bundle",
rcid: ""
},
AimPlane: 0.27,
Name: "weapon_keltec_ksg_12g",
ShortName: "weapon_keltec_ksg_12g",
Description: "weapon_keltec_ksg_12g",
CenterOfImpact: 0.36,
shotgunDispersion: 1.2,
ShotgunDispersion: 1.2,
Width: 5,
Height: 2,
Ergonomics: 54,
ExaminedByDefault: false,
ExamineExperience: 20,
IronSightRange: 50,
LootExperience: 15,
RecoilAngle: 94,
RecoilCenter: {
x: 0,
y: 0.027,
z: -0.039
},
RecoilForceUp: 256,
RecoilForceBack: 344,
RecoilPosZMult: 0.7,
RecoilCamera: 0.215,
RecoilReturnPathDampingHandRotation: 0.62,
RecoilReturnSpeedHandRotation: 3.75,
RecoilDampingHandRotation: 0.51,
CameraToWeaponAngleStep: 0.2,
CameraSnap: 3.2,
CompactHandling: false,
RotationCenterNoStock: {
x: 0,
y: -0.193,
z: -0.03899999
},
Slots: [
{
_id: "66ce675cd29851414a241834",
"_mergeSlotWithChildren": false,
"_name": "mod_magazine",
"_parent": WeaponIds.KSG12,
"_props": {
"filters": [
{
"AnimationIndex": 0,
"Filter": [
WeaponIds.KSG12_MAG
]
}
]
},
"_proto": "55d30c394bdc2dae468b4577",
"_required": true
},
{
"_name": "mod_scope",
"_id": "66ce68e4bdd6e19c47c184b7",
"_parent": WeaponIds.KSG12,
"_props": {
"filters": [
{
"Shift": 0,
"Filter": [
"57ac965c24597706be5f975c",
"57aca93d2459771f2c7e26db",
"544a3f024bdc2d1d388b4568",
"544a3a774bdc2d3a388b4567",
"5d2dc3e548f035404a1a4798",
"57adff4f24597737f373b6e6",
"5c0517910db83400232ffee5",
"591c4efa86f7741030027726",
"570fd79bd2720bc7458b4583",
"570fd6c2d2720bc6458b457f",
"558022b54bdc2dac148b458d",
"5c07dd120db834001c39092d",
"5c0a2cec0db834001b7ce47d",
"58491f3324597764bc48fa02",
"584924ec24597768f12ae244",
"5b30b0dc5acfc400153b7124",
"6165ac8c290d254f5e6b2f6c",
"60a23797a37c940de7062d02",
"5d2da1e948f035477b1ce2ba",
"5c0505e00db834001b735073",
"609a63b6e2ff132951242d09",
"584984812459776a704a82a6",
"59f9d81586f7744c7506ee62",
"570fd721d2720bc5458b4596",
"57ae0171245977343c27bfcf",
"5dfe6104585a0c3e995c7b82",
"5d1b5e94d7ad1a2b865a96b0",
"609bab8b455afd752b2e6138",
"58d39d3d86f77445bb794ae7",
"616554fe50224f204c1da2aa",
"5c7d55f52e221644f31bff6a",
"616584766ef05c2ce828ef57",
"5b3b6dc75acfc47a8773fb1e",
"615d8d878004cc50514c3233",
"5b2389515acfc4771e1be0c0",
"577d128124597739d65d0e56",
"618b9643526131765025ab35",
"618bab21526131765025ab3f",
"5c86592b2e2216000e69e77c",
"5a37ca54c4a282000d72296a",
"5d0a29fed7ad1a002769ad08",
"5c064c400db834001d23f468",
"58d2664f86f7747fec5834f6",
"57c69dd424597774c03b7bbc",
"5b3b99265acfc4704b4a1afb",
"5aa66a9be5b5b0214e506e89",
"5aa66c72e5b5b00016327c93",
"5c1cdd302e221602b3137250",
"61714b2467085e45ef140b2c",
"6171407e50224f204c1da3c5",
"61713cc4d8e3106d9806c109",
"5b31163c5acfc400153b71cb",
"5a33b652c4a28232996e407c",
"5a33b2c9c4a282000c5a9511",
"59db7eed86f77461f8380365",
"5a1ead28fcdbcb001912fa9f",
"626bb8532c923541184624b4",
"62811f461d5df4475f46a332",
"63fc449f5bd61c6cf3784a88",
"6477772ea8a38bb2050ed4db",
"6478641c19d732620e045e17",
"64785e7c19d732620e045e15",
"65392f611406374f82152ba5",
"653931da5db71d30ab1d6296",
"655f13e0a246670fb0373245"
]
}
]
},
"_required": false,
"_mergeSlotWithChildren": false,
"_proto": "55d30c4c4bdc2db4468b457e"
},
{
"_name": "mod_foregrip",
"_id": "66ce69648498e374463500a6",
"_parent": WeaponIds.KSG12,
"_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",
"648067db042be0705c0b3009",
"64807a29e5ffe165600abc97",
"64806bdd26c80811d408d37a",
"65169d5b30425317755f8e25",
"655df24fdf80b12750626d0a",
"655dccfdbdcc6b5df71382b6"
]
}
]
},
"_required": false,
"_mergeSlotWithChildren": false,
"_proto": "55d30c4c4bdc2db4468b457e"
},
{
"_name": "mod_sight_rear",
"_id": "66ce69d9b539f92cb86b9691",
"_parent": WeaponIds.KSG12,
"_props": {
"filters": [
{
"Shift": 0,
"Filter": [
"5bb20e49d4351e3bac1212de",
"5ba26b17d4351e00367f9bdd",
"5dfa3d7ac41b2312ea33362a",
"5c1780312e221602b66cc189",
"5fb6564947ce63734e3fa1da",
"5bc09a18d4351e003562b68e",
"5c18b9192e2216398b5a8104",
"5fc0fa957283c4046c58147e",
"5894a81786f77427140b8347",
"55d5f46a4bdc2d1b198b4567"
]
}
]
},
"_required": false,
"_mergeSlotWithChildren": false,
"_proto": "55d30c4c4bdc2db4468b457e"
},
{
"_name": "mod_sight_front",
"_id": "66ce69f01b281721aa000457",
"_parent": WeaponIds.KSG12,
"_props": {
"filters": [
{
"Shift": 0,
"Filter": [
"5ba26b01d4351e0085325a51",
"5dfa3d950dee1b22f862eae0",
"5c17804b2e2216152006c02f",
"5fb6567747ce63734e3fa1dc",
"5bc09a30d4351e00367fb7c8",
"5c18b90d2e2216152142466b",
"5fc0fa362770a0045c59c677",
"5894a73486f77426d259076c",
"55d4af3a4bdc2d972f8b456f"
]
}
]
},
"_required": false,
"_mergeSlotWithChildren": false,
"_proto": "55d30c4c4bdc2db4468b457e"
}
],
Weight: 3.02,
ammoCaliber: "Caliber12g",
defAmmo: "560d5e524bdc2d25448b4571",
defMagType: WeaponIds.KSG12_MAG,
durabSpawnMax: 100,
durabSpawnMin: 35,
AllowFeed: false,
AllowJam: false,
AllowMisfire: false,
AllowSlide: false,
AllowOverheat: false
},
parentId: "5447b6094bdc2dc3278b4567",
newId: WeaponIds.KSG12,
handbookParentId: "5b5f794b86f77409407a7f92",
handbookPriceRoubles: 64431,
fleaPriceRoubles: 88763,
locales: {
"en": {
name: "Kel-Tec KSG-12g Shotgun",
shortName: "KSG-12",
description: "The Kel-Tec KSG is a bullpup 12-gauge pump-action shotgun designed by Kel-Tec. It has two tube magazines which the user of the gun can switch between manually (visual only, non functional). Rounds are loaded into the magazines through a large loading/ejection port, located at the bottom of the gun in the stock, behind the pistol grip. Empty shells are ejected down through the same port. Sighting equipment (iron sights and/or red dot sights) can be installed using the standard Picatinny rail located above the barrel. A second Picatinny rail is provided at the bottom of the sliding forend, permitting installation of other accessories."
}
}
};
customitem.createItemFromClone(ksg_12g);
const ksg_cap = {
itemTplToClone: ItemTpl_1.ItemTpl.MAGAZINE_12G_M870X10_10RND,
overrideProperties: {
Cartridges: [
{
"_id": "66515612ca5e57294f5e3527",
"_max_count": 14,
"_name": "cartridges",
"_parent": "665154c4019e9e7d5ad6d0cc",
"_props": {
"filters": [
{
"Filter": [
"560d5e524bdc2d25448b4571",
"5d6e6772a4b936088465b17c",
"5d6e67fba4b9361bc73bc779",
"5d6e6806a4b936088465b17e",
"5d6e68dea4b9361bcc29e659",
"5d6e6911a4b9361bd5780d52",
"5c0d591486f7744c505b416f",
"58820d1224597753c90aeb13",
"5d6e68c4a4b9361b93413f79",
"5d6e68a8a4b9360b6c0d54e2",
"5d6e68e6a4b9361c140bcfe0",
"5d6e6869a4b9361c140bcfde",
"5d6e68b3a4b9361bca7e50b5",
"5d6e6891a4b9361bd473feea",
"5d6e689ca4b9361bc8618956",
"5d6e68d1a4b93622fe60e845",
"64b8ee384b75259c590fa89b"
]
}
]
},
"_proto": "5748538b2459770af276a261"
}
],
Ergonomics: -8,
Weight: 0.08,
ExamineExperience: 4,
ExaminedByDefault: false,
Name: "mod_magazine_ksg_12g_tube_cap",
ShortName: "mod_magazine_ksg_12g_tube_cap",
Description: "mod_magazine_ksg_12g_tube_cap",
Width: 1,
ExtraSizeLeft: 0,
Prefab: {
path: "ksg12/mod_magazine_ksg_12g_tube_cap.bundle",
rcid: ""
}
},
parentId: "5448bc234bdc2d3c308b4569",
newId: WeaponIds.KSG12_MAG,
handbookParentId: "5b5f754a86f774094242f19b",
handbookPriceRoubles: 2644,
fleaPriceRoubles: 3874,
locales: {
"en": {
name: "Kel-Tec KSG-12g 14-round Mag Cap",
shortName: "KSG-12",
description: "14-Round standard magazine cap for the KSG-12."
}
}
};
customitem.createItemFromClone(ksg_cap);
// MASTERY AND TRADER
const ksg_mastery = {
"Name": "Kel-Tec KSG-12",
"Templates": [
WeaponIds.KSG12
],
"Level2": 500,
"Level3": 960
};
globals.config.Mastering.push(ksg_mastery);
for (const lang in db.locales.global) {
db.locales.global[lang]["66cf2968f9beb45c3d12d323"] = "Lucky Shooter";
db.locales.global[lang]["66cf290ff22275c4f39ccecc"] = "CQB";
}
for (const itemPreset in global_item_preset_json_1.default.ItemPresets) {
globals.ItemPresets[itemPreset] = global_item_preset_json_1.default.ItemPresets[itemPreset];
}
//trader push
PK.items.push(...Item_Preset_json_1.default.items);
for (const bsc in Item_Preset_json_1.default.barter_scheme) {
PK.barter_scheme[bsc] = Item_Preset_json_1.default.barter_scheme[bsc];
}
for (const llv in Item_Preset_json_1.default.loyal_level_items) {
PK.loyal_level_items[llv] = Item_Preset_json_1.default.loyal_level_items[llv];
}
//push loot
const weaponcrateloot = {
"tpl": WeaponIds.KSG12,
"relativeProbability": 17
};
const locations = db.locations;
/* locations.rezervbase.looseLoot.spawnpoints.push(...spawnPoints.spawnsRezerv);
locations.woods.looseLoot.spawnpoints.push(...spawnPoints.spawnsWoods);
locations.factory4_day.looseLoot.spawnpoints.push(...spawnPoints.spawnsFactory);
locations.factory4_night.looseLoot.spawnpoints.push(...spawnPoints.spawnsFactory); */
for (const locationKey in locations) {
const location = locations[locationKey];
if (!location || !location.staticLoot) {
continue;
}
location.staticLoot[ItemTpl_1.ItemTpl.LOOTCONTAINER_WEAPON_BOX_5X5]?.itemDistribution.push(weaponcrateloot);
location.staticLoot[ItemTpl_1.ItemTpl.LOOTCONTAINER_WEAPON_BOX_6X3]?.itemDistribution.push(weaponcrateloot);
location.staticLoot[ItemTpl_1.ItemTpl.LOOTCONTAINER_WEAPON_BOX_5X2]?.itemDistribution.push(weaponcrateloot);
}
const pipe = db.bots.types["followerbigpipe"];
pipe.inventory.equipment.SecondPrimaryWeapon[WeaponIds.KSG12] = 825;
pipe.inventory.mods[WeaponIds.KSG12] =
{
mod_magazine: [
WeaponIds.KSG12_MAG
],
mod_sight_rear: [
"5bc09a18d4351e003562b68e"
],
mod_sight_front: [
"5bc09a30d4351e00367fb7c8"
],
mod_scope: [
"58491f3324597764bc48fa02"
],
mod_foregrip: [
"5c87ca002e221600114cb150"
]
};
customitem.addCustomWeaponToPMCs(WeaponIds.KSG12, 12, "FirstPrimaryWeapon");
db.templates.quests["5a03153686f77442d90e2171"].conditions.AvailableForFinish[0].counter.conditions[0].weapon.push(WeaponIds.KSG12);
//ON GOD WACKY AHH ID INVENTORY THING
db.templates.items["55d7217a4bdc2d86028b456d"]._props.Slots[0]._props.filters[0].Filter.push(WeaponIds.KSG12);
db.templates.items["55d7217a4bdc2d86028b456d"]._props.Slots[1]._props.filters[0].Filter.push(WeaponIds.KSG12);
}
}
exports.mod = new Mod();
//# sourceMappingURL=mod.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,481 @@
/* eslint-disable no-mixed-spaces-and-tabs */
/* eslint-disable @typescript-eslint/indent */
/* eslint-disable @typescript-eslint/naming-convention */
import { DependencyContainer } from "tsyringe";
import { IPostDBLoadMod } from "@spt/models/external/IPostDBLoadMod";
import { CustomItemService } from "@spt/services/mod/CustomItemService";
import { NewItemFromCloneDetails } from "@spt/models/spt/mod/NewItemDetails";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
import { ILocation } from "@spt/models/eft/common/ILocation";
import preset_file from "../src/Item_Preset.json";
import global_preset_file from "../src/global_item_preset.json";
//import spawnPoints from "../src/loot/Spawns.json";
import { ItemTpl } from "@spt/models/enums/ItemTpl";
import { Traders } from "@spt/models/enums/Traders";
export enum WeaponIds
{
KSG12 = "66ce63fe2fce038160aa9ac6",
KSG12_MAG = "66ce64029424740723b70288"
}
export enum HandbookTPL
{
SHOTGUN = "5b5f794b86f77409407a7f92",
ASSAULT_RIFLE = "5b5f78fc86f77409407a7f90",
PISTOL= "5b5f792486f77447ed5636b3",
CARBINE= "5b5f78e986f77447ed5636b1",
MARKSMAN= "5b5f791486f774093f2ed3be",
SMG= "5b5f796a86f774093f2ed3c0"
}
class Mod implements IPostDBLoadMod
{
public postDBLoad(container: DependencyContainer): void {
const customitem = container.resolve<CustomItemService>("CustomItemService");
const databaseServer = container.resolve<DatabaseServer>("DatabaseServer");
const db = databaseServer.getTables();
const globals = db.globals;
const PK = db.traders[Traders.PEACEKEEPER].assort;
const SKR = db.traders[Traders.SKIER].assort;
// WEAPON LISTING AND ATTACHMENT
const ksg_12g: NewItemFromCloneDetails = {
itemTplToClone: ItemTpl.SHOTGUN_REMINGTON_MODEL_870_12GA_PUMPACTION,
overrideProperties: {
Prefab: {
path: "ksg12/weapon_keltec_ksg_12g_container.bundle",
rcid: ""
},
AimPlane: 0.27,
Name: "weapon_keltec_ksg_12g",
ShortName: "weapon_keltec_ksg_12g",
Description: "weapon_keltec_ksg_12g",
CenterOfImpact: 0.36,
shotgunDispersion: 1.2,
ShotgunDispersion: 1.2,
Width: 5,
Height: 2,
Ergonomics: 54,
ExaminedByDefault: false,
ExamineExperience: 20,
IronSightRange: 50,
LootExperience: 15,
RecoilAngle: 94,
RecoilCenter:
{
x: 0,
y: 0.027,
z: -0.039
},
RecoilForceUp: 256,
RecoilForceBack: 344,
RecoilPosZMult: 0.7,
RecoilCamera: 0.215,
RecoilReturnPathDampingHandRotation: 0.62,
RecoilReturnSpeedHandRotation: 3.75,
RecoilDampingHandRotation: 0.51,
CameraToWeaponAngleStep: 0.2,
CameraSnap: 3.2,
CompactHandling: false,
RotationCenterNoStock:
{
x: 0,
y: -0.193,
z: -0.03899999
},
Slots: [
{
_id: "66ce675cd29851414a241834",
"_mergeSlotWithChildren": false,
"_name": "mod_magazine",
"_parent": WeaponIds.KSG12,
"_props": {
"filters": [
{
"AnimationIndex": 0,
"Filter": [
WeaponIds.KSG12_MAG
]
}
]
},
"_proto": "55d30c394bdc2dae468b4577",
"_required": true
},
{
"_name": "mod_scope",
"_id": "66ce68e4bdd6e19c47c184b7",
"_parent": WeaponIds.KSG12,
"_props": {
"filters": [
{
"Shift": 0,
"Filter": [
"57ac965c24597706be5f975c",
"57aca93d2459771f2c7e26db",
"544a3f024bdc2d1d388b4568",
"544a3a774bdc2d3a388b4567",
"5d2dc3e548f035404a1a4798",
"57adff4f24597737f373b6e6",
"5c0517910db83400232ffee5",
"591c4efa86f7741030027726",
"570fd79bd2720bc7458b4583",
"570fd6c2d2720bc6458b457f",
"558022b54bdc2dac148b458d",
"5c07dd120db834001c39092d",
"5c0a2cec0db834001b7ce47d",
"58491f3324597764bc48fa02",
"584924ec24597768f12ae244",
"5b30b0dc5acfc400153b7124",
"6165ac8c290d254f5e6b2f6c",
"60a23797a37c940de7062d02",
"5d2da1e948f035477b1ce2ba",
"5c0505e00db834001b735073",
"609a63b6e2ff132951242d09",
"584984812459776a704a82a6",
"59f9d81586f7744c7506ee62",
"570fd721d2720bc5458b4596",
"57ae0171245977343c27bfcf",
"5dfe6104585a0c3e995c7b82",
"5d1b5e94d7ad1a2b865a96b0",
"609bab8b455afd752b2e6138",
"58d39d3d86f77445bb794ae7",
"616554fe50224f204c1da2aa",
"5c7d55f52e221644f31bff6a",
"616584766ef05c2ce828ef57",
"5b3b6dc75acfc47a8773fb1e",
"615d8d878004cc50514c3233",
"5b2389515acfc4771e1be0c0",
"577d128124597739d65d0e56",
"618b9643526131765025ab35",
"618bab21526131765025ab3f",
"5c86592b2e2216000e69e77c",
"5a37ca54c4a282000d72296a",
"5d0a29fed7ad1a002769ad08",
"5c064c400db834001d23f468",
"58d2664f86f7747fec5834f6",
"57c69dd424597774c03b7bbc",
"5b3b99265acfc4704b4a1afb",
"5aa66a9be5b5b0214e506e89",
"5aa66c72e5b5b00016327c93",
"5c1cdd302e221602b3137250",
"61714b2467085e45ef140b2c",
"6171407e50224f204c1da3c5",
"61713cc4d8e3106d9806c109",
"5b31163c5acfc400153b71cb",
"5a33b652c4a28232996e407c",
"5a33b2c9c4a282000c5a9511",
"59db7eed86f77461f8380365",
"5a1ead28fcdbcb001912fa9f",
"626bb8532c923541184624b4",
"62811f461d5df4475f46a332",
"63fc449f5bd61c6cf3784a88",
"6477772ea8a38bb2050ed4db",
"6478641c19d732620e045e17",
"64785e7c19d732620e045e15",
"65392f611406374f82152ba5",
"653931da5db71d30ab1d6296",
"655f13e0a246670fb0373245"
]
}
]
},
"_required": false,
"_mergeSlotWithChildren": false,
"_proto": "55d30c4c4bdc2db4468b457e"
},
{
"_name": "mod_foregrip",
"_id": "66ce69648498e374463500a6",
"_parent": WeaponIds.KSG12,
"_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",
"648067db042be0705c0b3009",
"64807a29e5ffe165600abc97",
"64806bdd26c80811d408d37a",
"65169d5b30425317755f8e25",
"655df24fdf80b12750626d0a",
"655dccfdbdcc6b5df71382b6"
]
}
]
},
"_required": false,
"_mergeSlotWithChildren": false,
"_proto": "55d30c4c4bdc2db4468b457e"
},
{
"_name": "mod_sight_rear",
"_id": "66ce69d9b539f92cb86b9691",
"_parent": WeaponIds.KSG12,
"_props": {
"filters": [
{
"Shift": 0,
"Filter": [
"5bb20e49d4351e3bac1212de",
"5ba26b17d4351e00367f9bdd",
"5dfa3d7ac41b2312ea33362a",
"5c1780312e221602b66cc189",
"5fb6564947ce63734e3fa1da",
"5bc09a18d4351e003562b68e",
"5c18b9192e2216398b5a8104",
"5fc0fa957283c4046c58147e",
"5894a81786f77427140b8347",
"55d5f46a4bdc2d1b198b4567"
]
}
]
},
"_required": false,
"_mergeSlotWithChildren": false,
"_proto": "55d30c4c4bdc2db4468b457e"
},
{
"_name": "mod_sight_front",
"_id": "66ce69f01b281721aa000457",
"_parent": WeaponIds.KSG12,
"_props": {
"filters": [
{
"Shift": 0,
"Filter": [
"5ba26b01d4351e0085325a51",
"5dfa3d950dee1b22f862eae0",
"5c17804b2e2216152006c02f",
"5fb6567747ce63734e3fa1dc",
"5bc09a30d4351e00367fb7c8",
"5c18b90d2e2216152142466b",
"5fc0fa362770a0045c59c677",
"5894a73486f77426d259076c",
"55d4af3a4bdc2d972f8b456f"
]
}
]
},
"_required": false,
"_mergeSlotWithChildren": false,
"_proto": "55d30c4c4bdc2db4468b457e"
}
],
Weight: 3.02,
ammoCaliber: "Caliber12g",
defAmmo: "560d5e524bdc2d25448b4571",
defMagType: WeaponIds.KSG12_MAG,
durabSpawnMax: 100,
durabSpawnMin: 35,
AllowFeed: false,
AllowJam: false,
AllowMisfire: false,
AllowSlide: false,
AllowOverheat: false
},
parentId: "5447b6094bdc2dc3278b4567",
newId: WeaponIds.KSG12,
handbookParentId: "5b5f794b86f77409407a7f92",
handbookPriceRoubles: 64431,
fleaPriceRoubles: 88763,
locales: {
"en": {
name: "Kel-Tec KSG-12g Shotgun",
shortName: "KSG-12",
description: "The Kel-Tec KSG is a bullpup 12-gauge pump-action shotgun designed by Kel-Tec. It has two tube magazines which the user of the gun can switch between manually (visual only, non functional). Rounds are loaded into the magazines through a large loading/ejection port, located at the bottom of the gun in the stock, behind the pistol grip. Empty shells are ejected down through the same port. Sighting equipment (iron sights and/or red dot sights) can be installed using the standard Picatinny rail located above the barrel. A second Picatinny rail is provided at the bottom of the sliding forend, permitting installation of other accessories."
}
}
}
customitem.createItemFromClone(ksg_12g);
const ksg_cap: NewItemFromCloneDetails = {
itemTplToClone: ItemTpl.MAGAZINE_12G_M870X10_10RND,
overrideProperties: {
Cartridges: [
{
"_id": "66515612ca5e57294f5e3527",
"_max_count": 14,
"_name": "cartridges",
"_parent": "665154c4019e9e7d5ad6d0cc",
"_props": {
"filters": [
{
"Filter": [
"560d5e524bdc2d25448b4571",
"5d6e6772a4b936088465b17c",
"5d6e67fba4b9361bc73bc779",
"5d6e6806a4b936088465b17e",
"5d6e68dea4b9361bcc29e659",
"5d6e6911a4b9361bd5780d52",
"5c0d591486f7744c505b416f",
"58820d1224597753c90aeb13",
"5d6e68c4a4b9361b93413f79",
"5d6e68a8a4b9360b6c0d54e2",
"5d6e68e6a4b9361c140bcfe0",
"5d6e6869a4b9361c140bcfde",
"5d6e68b3a4b9361bca7e50b5",
"5d6e6891a4b9361bd473feea",
"5d6e689ca4b9361bc8618956",
"5d6e68d1a4b93622fe60e845",
"64b8ee384b75259c590fa89b"
]
}
]
},
"_proto": "5748538b2459770af276a261"
}
],
Ergonomics: -8,
Weight: 0.08,
ExamineExperience: 4,
ExaminedByDefault: false,
Name: "mod_magazine_ksg_12g_tube_cap",
ShortName: "mod_magazine_ksg_12g_tube_cap",
Description: "mod_magazine_ksg_12g_tube_cap",
Width: 1,
ExtraSizeLeft: 0,
Prefab:
{
path: "ksg12/mod_magazine_ksg_12g_tube_cap.bundle",
rcid: ""
}
},
parentId: "5448bc234bdc2d3c308b4569",
newId: WeaponIds.KSG12_MAG,
handbookParentId: "5b5f754a86f774094242f19b",
handbookPriceRoubles: 2644,
fleaPriceRoubles: 3874,
locales: {
"en": {
name: "Kel-Tec KSG-12g 14-round Mag Cap",
shortName: "KSG-12",
description: "14-Round standard magazine cap for the KSG-12."
}
}
}
customitem.createItemFromClone(ksg_cap);
// MASTERY AND TRADER
const ksg_mastery = {
"Name": "Kel-Tec KSG-12",
"Templates": [
WeaponIds.KSG12
],
"Level2": 500,
"Level3": 960
}
globals.config.Mastering.push(ksg_mastery)
for (const lang in db.locales.global)
{
db.locales.global[lang]["66cf2968f9beb45c3d12d323"] = "Lucky Shooter";
db.locales.global[lang]["66cf290ff22275c4f39ccecc"] = "CQB";
}
for (const itemPreset in global_preset_file.ItemPresets)
{
globals.ItemPresets[itemPreset] = global_preset_file.ItemPresets[itemPreset];
}
//trader push
PK.items.push(...preset_file.items);
for (const bsc in preset_file.barter_scheme)
{
PK.barter_scheme[bsc] = preset_file.barter_scheme[bsc];
}
for (const llv in preset_file.loyal_level_items)
{
PK.loyal_level_items[llv] = preset_file.loyal_level_items[llv];
}
//push loot
const weaponcrateloot =
{
"tpl": WeaponIds.KSG12,
"relativeProbability": 17
}
const locations = db.locations;
/* locations.rezervbase.looseLoot.spawnpoints.push(...spawnPoints.spawnsRezerv);
locations.woods.looseLoot.spawnpoints.push(...spawnPoints.spawnsWoods);
locations.factory4_day.looseLoot.spawnpoints.push(...spawnPoints.spawnsFactory);
locations.factory4_night.looseLoot.spawnpoints.push(...spawnPoints.spawnsFactory); */
for (const locationKey in locations)
{
const location: ILocation = locations[locationKey];
if (!location || !location.staticLoot)
{
continue
}
location.staticLoot[ItemTpl.LOOTCONTAINER_WEAPON_BOX_5X5]?.itemDistribution.push(weaponcrateloot);
location.staticLoot[ItemTpl.LOOTCONTAINER_WEAPON_BOX_6X3]?.itemDistribution.push(weaponcrateloot);
location.staticLoot[ItemTpl.LOOTCONTAINER_WEAPON_BOX_5X2]?.itemDistribution.push(weaponcrateloot);
}
const pipe = db.bots.types["followerbigpipe"];
pipe.inventory.equipment.SecondPrimaryWeapon[WeaponIds.KSG12] = 825;
pipe.inventory.mods[WeaponIds.KSG12] =
{
mod_magazine: [
WeaponIds.KSG12_MAG
],
mod_sight_rear: [
"5bc09a18d4351e003562b68e"
],
mod_sight_front: [
"5bc09a30d4351e00367fb7c8"
],
mod_scope: [
"58491f3324597764bc48fa02"
],
mod_foregrip: [
"5c87ca002e221600114cb150"
]
}
customitem.addCustomWeaponToPMCs(WeaponIds.KSG12, 12, "FirstPrimaryWeapon")
db.templates.quests["5a03153686f77442d90e2171"].conditions.AvailableForFinish[0].counter.conditions[0].weapon.push(WeaponIds.KSG12)
//ON GOD WACKY AHH ID INVENTORY THING
db.templates.items["55d7217a4bdc2d86028b456d"]._props.Slots[0]._props.filters[0].Filter.push(WeaponIds.KSG12);
db.templates.items["55d7217a4bdc2d86028b456d"]._props.Slots[1]._props.filters[0].Filter.push(WeaponIds.KSG12);
}
}
export const mod = new Mod();