Archived
Added RPG-7 & Peacemaker Mods
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
[General]
|
||||
gameName=spt
|
||||
modid=0
|
||||
version=d2025.1.11.0
|
||||
newestVersion=
|
||||
category="1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=choccy-saa-1.0.7.zip
|
||||
repository=Nexus
|
||||
ignoredVersion=
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=true
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2025-01-11T09:13:21Z
|
||||
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,75 @@
|
||||
{
|
||||
"manifest": [
|
||||
{
|
||||
"key": "assets/weapons/colt_saa/patron_1143x33mmr_lead.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/weapons/colt_saa/weapon_colt_single_action_army_container.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/weapons/additional_hands/client_assets.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",
|
||||
"assets/weapons/colt_saa/main_store.bundle",
|
||||
"assets/weapons/colt_saa/saa_bank.bundle",
|
||||
"assets/content/audio/weapons/generic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/weapons/colt_saa/weapon_colt_single_action_army_container_debugging.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/weapons/additional_hands/client_assets.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",
|
||||
"assets/weapons/colt_saa/main_store.bundle",
|
||||
"assets/weapons/colt_saa/saa_bank.bundle",
|
||||
"assets/content/audio/weapons/generic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/weapons/colt_saa/weapon_colt_single_action_army_container_debugging_alt.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/weapons/additional_hands/client_assets.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",
|
||||
"assets/weapons/colt_saa/main_store.bundle",
|
||||
"assets/weapons/colt_saa/saa_bank.bundle",
|
||||
"assets/content/audio/weapons/generic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/weapons/colt_saa/main_store.bundle",
|
||||
"dependencyKeys": [
|
||||
"shaders",
|
||||
"cubemaps",
|
||||
"assets/weapons/colt_saa/texture.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/weapons/colt_saa/texture.bundle",
|
||||
"dependencyKeys": [
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/weapons/colt_saa/mod_magazine_colt_army_cylinder.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/weapons/colt_saa/main_store.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "assets/weapons/colt_saa/saa_bank.bundle",
|
||||
"dependencyKeys": [
|
||||
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"Debug_Mode": false,
|
||||
"altdebug": false
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "SAA",
|
||||
"version": "1.0.7",
|
||||
"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,82 @@
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"_id": "6651564f6b50749c3c503af5",
|
||||
"_tpl": "665152810b4c784f2258d7d0",
|
||||
"parentId": "hideout",
|
||||
"slotId": "hideout",
|
||||
"upd": {
|
||||
"UnlimitedCount": true,
|
||||
"StackObjectsCount": 2375,
|
||||
"FireMode": {
|
||||
"FireMode": "single"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "65f6e6c2fab2670ee1dd550f",
|
||||
"_tpl": "665154c4019e9e7d5ad6d0cc",
|
||||
"parentId": "6651564f6b50749c3c503af5",
|
||||
"slotId": "mod_magazine"
|
||||
},
|
||||
{
|
||||
"_id": "66515659559711f98644d702",
|
||||
"_tpl": "665154c4019e9e7d5ad6d0cc",
|
||||
"parentId": "hideout",
|
||||
"slotId": "hideout",
|
||||
"upd": {
|
||||
"UnlimitedCount": true,
|
||||
"StackObjectsCount": 5732
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "66515661ac3ab013c5a5308c",
|
||||
"_tpl": "65f3e7fa6d952338bde17f8a",
|
||||
"parentId": "hideout",
|
||||
"slotId": "hideout",
|
||||
"upd": {
|
||||
"UnlimitedCount": true,
|
||||
"StackObjectsCount": 5732
|
||||
}
|
||||
}
|
||||
],
|
||||
"barter_scheme": {
|
||||
"6651564f6b50749c3c503af5": [
|
||||
[
|
||||
{
|
||||
"_tpl": "5e54f62086f774219b0f1937",
|
||||
"count": 1
|
||||
},
|
||||
{
|
||||
"_tpl": "5bc9bdb8d4351e003562b8a1",
|
||||
"count": 1
|
||||
},
|
||||
{
|
||||
"_tpl": "5bc9b355d4351e6d1509862a",
|
||||
"count": 1
|
||||
}
|
||||
]
|
||||
],
|
||||
"66515659559711f98644d702": [
|
||||
[
|
||||
{
|
||||
"_tpl": "5449016a4bdc2d6f028b456f",
|
||||
"count": 21554
|
||||
}
|
||||
]
|
||||
],
|
||||
"66515661ac3ab013c5a5308c": [
|
||||
[
|
||||
{
|
||||
"_tpl": "5449016a4bdc2d6f028b456f",
|
||||
"count": 2875
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"loyal_level_items":{
|
||||
"6651564f6b50749c3c503af5": 3,
|
||||
"66515659559711f98644d702": 3,
|
||||
"66515661ac3ab013c5a5308c": 3
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"ItemPresets": {
|
||||
"65f3e931ac7e6374d1edae28": {
|
||||
"_changeWeaponName": false,
|
||||
"_encyclopedia": "665152810b4c784f2258d7d0",
|
||||
"_id": "65f3e931ac7e6374d1edae28",
|
||||
"_items": [
|
||||
{
|
||||
"_id": "65f3e93d2054f73e342c8c7e",
|
||||
"_tpl": "665152810b4c784f2258d7d0",
|
||||
"upd": {
|
||||
"FireMode": {
|
||||
"FireMode": "single"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "65f3e96e4069bbc8d4d79f8e",
|
||||
"_tpl": "665154c4019e9e7d5ad6d0cc",
|
||||
"parentId": "65f3e93d2054f73e342c8c7e",
|
||||
"slotId": "mod_magazine"
|
||||
}
|
||||
],
|
||||
"_name": "Peacemaker Stock",
|
||||
"_parent": "65f3e93d2054f73e342c8c7e",
|
||||
"_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,452 @@
|
||||
"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.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"));
|
||||
const config_json_1 = __importDefault(require("../config/config.json"));
|
||||
const Spawns_json_1 = __importDefault(require("../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["COLT_PEACEMAKER"] = "665152810b4c784f2258d7d0";
|
||||
})(WeaponIds || (exports.WeaponIds = WeaponIds = {}));
|
||||
class Mod {
|
||||
postDBLoad(container) {
|
||||
const customitem = container.resolve("CustomItemService");
|
||||
const databaseServer = container.resolve("DatabaseServer");
|
||||
const dbTables = databaseServer.getTables();
|
||||
const globals = dbTables.globals;
|
||||
const PK = dbTables.traders[Traders_1.Traders.PEACEKEEPER].assort;
|
||||
const SKR = dbTables.traders[Traders_1.Traders.SKIER].assort;
|
||||
// WEAPON LISTING AND ATTACHMENT
|
||||
const Patron_1143x33 = {
|
||||
itemTplToClone: "5c0d56a986f774449d5de529",
|
||||
overrideProperties: {
|
||||
Weight: 0.0165,
|
||||
ArmorDamage: 58,
|
||||
BulletMassGram: 16.5,
|
||||
Caliber: "Caliber1143x33mmR",
|
||||
Damage: 102,
|
||||
ExaminedByDefault: false,
|
||||
FragmentType: "",
|
||||
FragmentationChance: 0,
|
||||
InitialSpeed: 343,
|
||||
HeavyBleedingDelta: 0.24,
|
||||
LightBleedingDelta: 0.33,
|
||||
PenetrationChanceObstacle: 0.32,
|
||||
PenetrationPower: 67,
|
||||
PenetrationPowerDiviation: 0.211,
|
||||
Prefab: {
|
||||
path: "assets/weapons/colt_saa/patron_1143x33mmr_lead.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
StaminaBurnPerDamage: 0.733,
|
||||
casingMass: 14,
|
||||
ammoRec: 47,
|
||||
MalfFeedChance: 0,
|
||||
MalfMisfireChance: 0,
|
||||
StackMaxSize: 20,
|
||||
StackMaxRandom: 10
|
||||
},
|
||||
parentId: "5485a8684bdc2da71d8b4567",
|
||||
newId: "65f3e7fa6d952338bde17f8a",
|
||||
handbookParentId: "5b47574386f77428ca22b33b",
|
||||
handbookPriceRoubles: 1086,
|
||||
fleaPriceRoubles: 1244,
|
||||
locales: {
|
||||
"en": {
|
||||
name: ".45 Colt +P",
|
||||
shortName: ".45C+P",
|
||||
description: "The .45 Colt (11.43×33mmR), is a rimmed, straight-walled, handgun cartridge dating to 1872. The .45 Colt is loaded with black powder, but with recent years it is now loaded with a smokeless powder. Providing a powerful force with the cost of recoil."
|
||||
}
|
||||
}
|
||||
};
|
||||
customitem.createItemFromClone(Patron_1143x33);
|
||||
const colt_saa = {
|
||||
itemTplToClone: "61a4c8884f95bc3b2c5dc96f",
|
||||
overrideProperties: {
|
||||
Prefab: {
|
||||
path: "assets/weapons/colt_saa/weapon_colt_single_action_army_container.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
BackgroundColor: "yellow",
|
||||
aimingSensitivity: 0.7,
|
||||
AimPlane: 0.15,
|
||||
CenterOfImpact: 0.045,
|
||||
DeviationCurve: 3,
|
||||
DeviationMax: 8,
|
||||
Ergonomics: 95,
|
||||
ExaminedByDefault: true,
|
||||
ExamineExperience: 18,
|
||||
HeatFactorGun: 0.76,
|
||||
IronSightRange: 100,
|
||||
LootExperience: 25,
|
||||
RecoilAngle: 94,
|
||||
RecoilCenter: {
|
||||
x: 0,
|
||||
y: -0.491,
|
||||
z: -0.023
|
||||
},
|
||||
RecoilForceUp: 422,
|
||||
RecoilForceBack: 240,
|
||||
RecoilPosZMult: 0.7,
|
||||
RecoilCamera: 0.016,
|
||||
RecoilReturnPathDampingHandRotation: 0.68,
|
||||
RecoilReturnSpeedHandRotation: 3.26,
|
||||
RecoilDampingHandRotation: 0.74,
|
||||
CameraToWeaponAngleStep: 0.01,
|
||||
CameraSnap: 4,
|
||||
RotationCenterNoStock: {
|
||||
x: 0,
|
||||
y: -0.491,
|
||||
z: -0.023
|
||||
},
|
||||
Slots: [
|
||||
{
|
||||
_id: "665154a231f1039d7fccbcd5",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "mod_magazine",
|
||||
"_parent": WeaponIds.COLT_PEACEMAKER,
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"AnimationIndex": 0,
|
||||
"Filter": [
|
||||
"665154c4019e9e7d5ad6d0cc"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d30c394bdc2dae468b4577",
|
||||
"_required": true
|
||||
}
|
||||
],
|
||||
Weight: 1.048,
|
||||
ammoCaliber: "Caliber1143x33mmR",
|
||||
defAmmo: "65f3e7fa6d952338bde17f8a",
|
||||
defMagType: "665154c4019e9e7d5ad6d0cc",
|
||||
durabSpawnMax: 100,
|
||||
durabSpawnMin: 35,
|
||||
weapFireType: ["single"]
|
||||
},
|
||||
parentId: "617f1ef5e8b54b0998387733",
|
||||
newId: WeaponIds.COLT_PEACEMAKER,
|
||||
handbookParentId: "5b5f792486f77447ed5636b3",
|
||||
handbookPriceRoubles: 12987,
|
||||
fleaPriceRoubles: 174335,
|
||||
locales: {
|
||||
"en": {
|
||||
name: "Colt Single Action Army \"Peacemaker\" 11.43x33mmR Revolver",
|
||||
shortName: "Peacemaker",
|
||||
description: "The Colt Single Action Army, also known as SAA, is a single-action revolver handgun. It was designed for the U.S. government service revolver trials of 1872 by Colt's Patent Firearms Manufacturing Company and was adopted as the standard-issued pistol of the U.S. Army from 1873 until 1892. Today, they are mainly bought as memorabilia by collectors and re-enactors. It is recommended to not load all 6 shot as the hammer wil hit the round even if it's not cocked (but that's real life). This one has engraving all over it, offering no tactical advantage whatsoever."
|
||||
}
|
||||
}
|
||||
};
|
||||
customitem.createItemFromClone(colt_saa);
|
||||
const colt_cylinder = {
|
||||
itemTplToClone: "619f54a1d25cbd424731fb99",
|
||||
overrideProperties: {
|
||||
Cartridges: [
|
||||
{
|
||||
"_id": "66515612ca5e57294f5e3527",
|
||||
"_max_count": 6,
|
||||
"_name": "cartridges",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "5748538b2459770af276a261"
|
||||
}
|
||||
],
|
||||
Ergonomics: -12,
|
||||
Weight: 0.21,
|
||||
ExamineExperience: 12,
|
||||
Prefab: {
|
||||
path: "assets/weapons/colt_saa/mod_magazine_colt_army_cylinder.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
Slots: [
|
||||
{
|
||||
"_id": "665156168ca9d58731082a0a",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_000",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
MaxStackCount: 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "66515619ddd2bbaccbae878b",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_001",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
MaxStackCount: 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "6651561ed786bdb78ba7577d",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_002",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
"MaxStackCount": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "665156238098aeabb396b22e",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_003",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
"MaxStackCount": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "66515627af664f37df1da465",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_004",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
"MaxStackCount": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "6651562b36f0014c0cb19e14",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_005",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
"MaxStackCount": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
}
|
||||
]
|
||||
},
|
||||
parentId: "610720f290b75a49ff2e5e25",
|
||||
newId: "665154c4019e9e7d5ad6d0cc",
|
||||
handbookParentId: "5b5f754a86f774094242f19b",
|
||||
handbookPriceRoubles: 2553,
|
||||
fleaPriceRoubles: 4348,
|
||||
locales: {
|
||||
"en": {
|
||||
name: "Colt Single Action Army 6-Round Cylinder",
|
||||
shortName: "Colt SAA",
|
||||
description: "6-Round standard issue cylinder for the SAA. This one has been customized with intricate engraving."
|
||||
}
|
||||
}
|
||||
};
|
||||
customitem.createItemFromClone(colt_cylinder);
|
||||
const Patron_1143x33_PACK = {
|
||||
itemTplToClone: "5649ed104bdc2d3d1c8b458b",
|
||||
overrideProperties: {
|
||||
StackSlots: [
|
||||
{
|
||||
"_id": "6651562fa7842ba5dacc9d7d",
|
||||
"_max_count": 20,
|
||||
"_name": "cartridges",
|
||||
"_parent": "66515174b0b7affec08d22aa",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "5748538b2459770af276a261"
|
||||
}
|
||||
],
|
||||
Prefab: {
|
||||
path: "assets/content/items/ammo/boxes/item_ammo_box_7_62x54mm_r.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
ammoCaliber: "Caliber1143x33mmR"
|
||||
},
|
||||
parentId: "543be5cb4bdc2deb348b4568",
|
||||
newId: "66515174b0b7affec08d22aa",
|
||||
handbookParentId: "5b47574386f77428ca22b33c",
|
||||
handbookPriceRoubles: 1763,
|
||||
fleaPriceRoubles: 2876,
|
||||
locales: {
|
||||
"en": {
|
||||
name: ".45 Colt +P 20 Cartridges Pack",
|
||||
shortName: ".45C+P",
|
||||
description: "A 20-round pack for .45 Colt cartridges."
|
||||
}
|
||||
}
|
||||
};
|
||||
customitem.createItemFromClone(Patron_1143x33_PACK);
|
||||
// MASTERY AND TRADER
|
||||
const saa_mastery = {
|
||||
"Name": "Colt Single Action",
|
||||
"Templates": [
|
||||
WeaponIds.COLT_PEACEMAKER
|
||||
],
|
||||
"Level2": 450,
|
||||
"Level3": 900
|
||||
};
|
||||
globals.config.Mastering.push(saa_mastery);
|
||||
if (config_json_1.default.Debug_Mode && config_json_1.default.altdebug != true) {
|
||||
dbTables.templates.items[WeaponIds.COLT_PEACEMAKER]._props.Prefab.path = "assets/weapons/colt_saa/weapon_colt_single_action_army_container_debugging.bundle";
|
||||
}
|
||||
else if (config_json_1.default.Debug_Mode && config_json_1.default.altdebug) {
|
||||
dbTables.templates.items[WeaponIds.COLT_PEACEMAKER]._props.Prefab.path = "assets/weapons/colt_saa/weapon_colt_single_action_army_container_debugging_alt.bundle";
|
||||
}
|
||||
for (const itemPreset in global_item_preset_json_1.default.ItemPresets) {
|
||||
globals.ItemPresets[itemPreset] = global_item_preset_json_1.default.ItemPresets[itemPreset];
|
||||
}
|
||||
//trader push
|
||||
SKR.items.push(...Item_Preset_json_1.default.items);
|
||||
for (const bsc in Item_Preset_json_1.default.barter_scheme) {
|
||||
SKR.barter_scheme[bsc] = Item_Preset_json_1.default.barter_scheme[bsc];
|
||||
}
|
||||
for (const llv in Item_Preset_json_1.default.loyal_level_items) {
|
||||
SKR.loyal_level_items[llv] = Item_Preset_json_1.default.loyal_level_items[llv];
|
||||
}
|
||||
//push loot
|
||||
const safeLoot = {
|
||||
"tpl": WeaponIds.COLT_PEACEMAKER,
|
||||
"relativeProbability": 24
|
||||
};
|
||||
const ammopack = {
|
||||
tpl: "66515174b0b7affec08d22aa",
|
||||
"relativeProbability": 146
|
||||
};
|
||||
const locations = dbTables.locations;
|
||||
locations.rezervbase.looseLoot.spawnpoints.push(...Spawns_json_1.default.spawnsRezerv);
|
||||
locations.woods.looseLoot.spawnpoints.push(...Spawns_json_1.default.spawnsWoods);
|
||||
locations.factory4_day.looseLoot.spawnpoints.push(...Spawns_json_1.default.spawnsFactory);
|
||||
locations.factory4_night.looseLoot.spawnpoints.push(...Spawns_json_1.default.spawnsFactory);
|
||||
for (const locationKey in locations) {
|
||||
const location = locations[locationKey];
|
||||
if (!location || !location.staticLoot) {
|
||||
continue;
|
||||
}
|
||||
const safe = location.staticLoot[ItemTpl_1.ItemTpl.LOOTCONTAINER_SAFE];
|
||||
if (safe) {
|
||||
safe.itemDistribution.push(safeLoot);
|
||||
}
|
||||
const weaponbox5x5 = location.staticLoot[ItemTpl_1.ItemTpl.LOOTCONTAINER_WEAPON_BOX_5X5];
|
||||
if (weaponbox5x5) {
|
||||
weaponbox5x5.itemDistribution.push(ammopack);
|
||||
}
|
||||
location.staticLoot[ItemTpl_1.ItemTpl.LOOTCONTAINER_WEAPON_BOX_4X4]?.itemDistribution.push(ammopack);
|
||||
location.staticLoot[ItemTpl_1.ItemTpl.LOOTCONTAINER_WEAPON_BOX_6X3]?.itemDistribution.push(ammopack);
|
||||
location.staticLoot[ItemTpl_1.ItemTpl.LOOTCONTAINER_WEAPON_BOX_5X2]?.itemDistribution.push(ammopack);
|
||||
location.staticLoot[ItemTpl_1.ItemTpl.LOOTCONTAINER_WOODEN_CRATE]?.itemDistribution.push(ammopack);
|
||||
if (!location || !location.staticAmmo) {
|
||||
continue;
|
||||
}
|
||||
location.staticAmmo["Caliber1143x33mmR"] =
|
||||
[
|
||||
{
|
||||
tpl: "65f3e7fa6d952338bde17f8a",
|
||||
relativeProbability: 1
|
||||
}
|
||||
];
|
||||
}
|
||||
const scavy = dbTables.bots.types["assault"];
|
||||
scavy.inventory.equipment.Holster[WeaponIds.COLT_PEACEMAKER] = 9;
|
||||
scavy.inventory.mods[WeaponIds.COLT_PEACEMAKER] =
|
||||
{
|
||||
mod_magazine: [
|
||||
"665154c4019e9e7d5ad6d0cc"
|
||||
]
|
||||
};
|
||||
scavy.inventory.mods["665154c4019e9e7d5ad6d0cc"] =
|
||||
{
|
||||
camora_000: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
camora_001: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
camora_002: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
camora_003: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
camora_004: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
camora_005: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
]
|
||||
};
|
||||
scavy.inventory.Ammo["Caliber1143x33mmR"] =
|
||||
{
|
||||
"65f3e7fa6d952338bde17f8a": 1
|
||||
};
|
||||
customitem.addCustomWeaponToPMCs(WeaponIds.COLT_PEACEMAKER, 7, "Holster");
|
||||
//ON GOD WACKY AHH ID INVENTORY THING
|
||||
dbTables.templates.items["55d7217a4bdc2d86028b456d"]._props.Slots[2]._props.filters[0].Filter.push(WeaponIds.COLT_PEACEMAKER);
|
||||
}
|
||||
}
|
||||
exports.mod = new Mod();
|
||||
//# sourceMappingURL=mod.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,494 @@
|
||||
/* 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 config from "../config/config.json";
|
||||
import spawnPoints from "../src/loot/Spawns.json";
|
||||
import { ItemTpl } from "@spt/models/enums/ItemTpl";
|
||||
import { Traders } from "@spt/models/enums/Traders";
|
||||
import { BodyPart, IBotType } from "@spt/models/eft/common/tables/IBotType";
|
||||
|
||||
export enum WeaponIds
|
||||
{
|
||||
COLT_PEACEMAKER = "665152810b4c784f2258d7d0"
|
||||
}
|
||||
|
||||
class Mod implements IPostDBLoadMod
|
||||
{
|
||||
public postDBLoad(container: DependencyContainer): void {
|
||||
const customitem = container.resolve<CustomItemService>("CustomItemService");
|
||||
const databaseServer = container.resolve<DatabaseServer>("DatabaseServer");
|
||||
const dbTables = databaseServer.getTables();
|
||||
const globals = dbTables.globals;
|
||||
const PK = dbTables.traders[Traders.PEACEKEEPER].assort;
|
||||
const SKR = dbTables.traders[Traders.SKIER].assort;
|
||||
// WEAPON LISTING AND ATTACHMENT
|
||||
const Patron_1143x33: NewItemFromCloneDetails = {
|
||||
itemTplToClone: "5c0d56a986f774449d5de529",
|
||||
overrideProperties: {
|
||||
Weight: 0.0165,
|
||||
ArmorDamage: 58,
|
||||
BulletMassGram: 16.5,
|
||||
Caliber: "Caliber1143x33mmR",
|
||||
Damage: 102,
|
||||
ExaminedByDefault: false,
|
||||
FragmentType: "",
|
||||
FragmentationChance: 0,
|
||||
InitialSpeed: 343,
|
||||
HeavyBleedingDelta: 0.24,
|
||||
LightBleedingDelta: 0.33,
|
||||
PenetrationChanceObstacle: 0.32,
|
||||
PenetrationPower: 67,
|
||||
PenetrationPowerDiviation: 0.211,
|
||||
Prefab: {
|
||||
path: "assets/weapons/colt_saa/patron_1143x33mmr_lead.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
StaminaBurnPerDamage: 0.733,
|
||||
casingMass: 14,
|
||||
ammoRec: 47,
|
||||
MalfFeedChance: 0,
|
||||
MalfMisfireChance: 0,
|
||||
StackMaxSize: 20,
|
||||
StackMaxRandom: 10
|
||||
},
|
||||
parentId: "5485a8684bdc2da71d8b4567",
|
||||
newId: "65f3e7fa6d952338bde17f8a",
|
||||
handbookParentId: "5b47574386f77428ca22b33b",
|
||||
handbookPriceRoubles: 1086,
|
||||
fleaPriceRoubles: 1244,
|
||||
locales: {
|
||||
"en": {
|
||||
name: ".45 Colt +P",
|
||||
shortName: ".45C+P",
|
||||
description: "The .45 Colt (11.43×33mmR), is a rimmed, straight-walled, handgun cartridge dating to 1872. The .45 Colt is loaded with black powder, but with recent years it is now loaded with a smokeless powder. Providing a powerful force with the cost of recoil."
|
||||
}
|
||||
}
|
||||
}
|
||||
customitem.createItemFromClone(Patron_1143x33);
|
||||
|
||||
const colt_saa: NewItemFromCloneDetails = {
|
||||
itemTplToClone: "61a4c8884f95bc3b2c5dc96f",
|
||||
overrideProperties: {
|
||||
Prefab: {
|
||||
path: "assets/weapons/colt_saa/weapon_colt_single_action_army_container.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
BackgroundColor: "yellow",
|
||||
aimingSensitivity: 0.7,
|
||||
AimPlane: 0.15,
|
||||
CenterOfImpact: 0.045,
|
||||
DeviationCurve: 3,
|
||||
DeviationMax: 8,
|
||||
Ergonomics: 95,
|
||||
ExaminedByDefault: true,
|
||||
ExamineExperience: 18,
|
||||
HeatFactorGun: 0.76,
|
||||
IronSightRange: 100,
|
||||
LootExperience: 25,
|
||||
RecoilAngle: 94,
|
||||
RecoilCenter:
|
||||
{
|
||||
x: 0,
|
||||
y: -0.491,
|
||||
z: -0.023
|
||||
},
|
||||
RecoilForceUp: 422,
|
||||
RecoilForceBack: 240,
|
||||
RecoilPosZMult: 0.7,
|
||||
RecoilCamera: 0.016,
|
||||
RecoilReturnPathDampingHandRotation: 0.68,
|
||||
RecoilReturnSpeedHandRotation: 3.26,
|
||||
RecoilDampingHandRotation: 0.74,
|
||||
CameraToWeaponAngleStep: 0.01,
|
||||
CameraSnap: 4,
|
||||
RotationCenterNoStock:
|
||||
{
|
||||
x: 0,
|
||||
y: -0.491,
|
||||
z: -0.023
|
||||
},
|
||||
Slots: [
|
||||
{
|
||||
_id: "665154a231f1039d7fccbcd5",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "mod_magazine",
|
||||
"_parent": WeaponIds.COLT_PEACEMAKER,
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"AnimationIndex": 0,
|
||||
"Filter": [
|
||||
"665154c4019e9e7d5ad6d0cc"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d30c394bdc2dae468b4577",
|
||||
"_required": true
|
||||
}
|
||||
],
|
||||
Weight: 1.048,
|
||||
ammoCaliber: "Caliber1143x33mmR",
|
||||
defAmmo: "65f3e7fa6d952338bde17f8a",
|
||||
defMagType: "665154c4019e9e7d5ad6d0cc",
|
||||
durabSpawnMax: 100,
|
||||
durabSpawnMin: 35,
|
||||
weapFireType: ["single"]
|
||||
},
|
||||
parentId: "617f1ef5e8b54b0998387733",
|
||||
newId: WeaponIds.COLT_PEACEMAKER,
|
||||
handbookParentId: "5b5f792486f77447ed5636b3",
|
||||
handbookPriceRoubles: 12987,
|
||||
fleaPriceRoubles: 174335,
|
||||
locales: {
|
||||
"en": {
|
||||
name: "Colt Single Action Army \"Peacemaker\" 11.43x33mmR Revolver",
|
||||
shortName: "Peacemaker",
|
||||
description: "The Colt Single Action Army, also known as SAA, is a single-action revolver handgun. It was designed for the U.S. government service revolver trials of 1872 by Colt's Patent Firearms Manufacturing Company and was adopted as the standard-issued pistol of the U.S. Army from 1873 until 1892. Today, they are mainly bought as memorabilia by collectors and re-enactors. It is recommended to not load all 6 shot as the hammer wil hit the round even if it's not cocked (but that's real life). This one has engraving all over it, offering no tactical advantage whatsoever."
|
||||
}
|
||||
}
|
||||
}
|
||||
customitem.createItemFromClone(colt_saa);
|
||||
|
||||
const colt_cylinder: NewItemFromCloneDetails = {
|
||||
itemTplToClone: "619f54a1d25cbd424731fb99",
|
||||
overrideProperties: {
|
||||
Cartridges: [
|
||||
{
|
||||
"_id": "66515612ca5e57294f5e3527",
|
||||
"_max_count": 6,
|
||||
"_name": "cartridges",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "5748538b2459770af276a261"
|
||||
}
|
||||
],
|
||||
Ergonomics: -12,
|
||||
Weight: 0.21,
|
||||
ExamineExperience: 12,
|
||||
Prefab:
|
||||
{
|
||||
path: "assets/weapons/colt_saa/mod_magazine_colt_army_cylinder.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
Slots: [
|
||||
{
|
||||
"_id": "665156168ca9d58731082a0a",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_000",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
MaxStackCount: 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "66515619ddd2bbaccbae878b",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_001",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
MaxStackCount: 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "6651561ed786bdb78ba7577d",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_002",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
"MaxStackCount": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "665156238098aeabb396b22e",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_003",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
"MaxStackCount": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "66515627af664f37df1da465",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_004",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
"MaxStackCount": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "6651562b36f0014c0cb19e14",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "camora_005",
|
||||
"_parent": "665154c4019e9e7d5ad6d0cc",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
"MaxStackCount": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
}
|
||||
]
|
||||
|
||||
},
|
||||
parentId: "610720f290b75a49ff2e5e25",
|
||||
newId: "665154c4019e9e7d5ad6d0cc",
|
||||
handbookParentId: "5b5f754a86f774094242f19b",
|
||||
handbookPriceRoubles: 2553,
|
||||
fleaPriceRoubles: 4348,
|
||||
locales: {
|
||||
"en": {
|
||||
name: "Colt Single Action Army 6-Round Cylinder",
|
||||
shortName: "Colt SAA",
|
||||
description: "6-Round standard issue cylinder for the SAA. This one has been customized with intricate engraving."
|
||||
}
|
||||
}
|
||||
}
|
||||
customitem.createItemFromClone(colt_cylinder);
|
||||
|
||||
const Patron_1143x33_PACK: NewItemFromCloneDetails = {
|
||||
itemTplToClone: "5649ed104bdc2d3d1c8b458b",
|
||||
overrideProperties: {
|
||||
StackSlots: [
|
||||
{
|
||||
"_id": "6651562fa7842ba5dacc9d7d",
|
||||
"_max_count": 20,
|
||||
"_name": "cartridges",
|
||||
"_parent": "66515174b0b7affec08d22aa",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "5748538b2459770af276a261"
|
||||
}
|
||||
],
|
||||
Prefab: {
|
||||
path: "assets/content/items/ammo/boxes/item_ammo_box_7_62x54mm_r.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
ammoCaliber: "Caliber1143x33mmR"
|
||||
},
|
||||
parentId: "543be5cb4bdc2deb348b4568",
|
||||
newId: "66515174b0b7affec08d22aa",
|
||||
handbookParentId: "5b47574386f77428ca22b33c",
|
||||
handbookPriceRoubles: 1763,
|
||||
fleaPriceRoubles: 2876,
|
||||
locales: {
|
||||
"en": {
|
||||
name: ".45 Colt +P 20 Cartridges Pack",
|
||||
shortName: ".45C+P",
|
||||
description: "A 20-round pack for .45 Colt cartridges."
|
||||
}
|
||||
}
|
||||
}
|
||||
customitem.createItemFromClone(Patron_1143x33_PACK);
|
||||
|
||||
// MASTERY AND TRADER
|
||||
const saa_mastery = {
|
||||
"Name": "Colt Single Action",
|
||||
"Templates": [
|
||||
WeaponIds.COLT_PEACEMAKER
|
||||
],
|
||||
"Level2": 450,
|
||||
"Level3": 900
|
||||
}
|
||||
globals.config.Mastering.push(saa_mastery)
|
||||
|
||||
if (config.Debug_Mode && config.altdebug != true)
|
||||
{
|
||||
dbTables.templates.items[WeaponIds.COLT_PEACEMAKER]._props.Prefab.path = "assets/weapons/colt_saa/weapon_colt_single_action_army_container_debugging.bundle";
|
||||
}
|
||||
else if (config.Debug_Mode && config.altdebug)
|
||||
{
|
||||
dbTables.templates.items[WeaponIds.COLT_PEACEMAKER]._props.Prefab.path = "assets/weapons/colt_saa/weapon_colt_single_action_army_container_debugging_alt.bundle";
|
||||
}
|
||||
|
||||
for (const itemPreset in global_preset_file.ItemPresets)
|
||||
{
|
||||
globals.ItemPresets[itemPreset] = global_preset_file.ItemPresets[itemPreset];
|
||||
}
|
||||
|
||||
//trader push
|
||||
SKR.items.push(...preset_file.items);
|
||||
|
||||
for (const bsc in preset_file.barter_scheme)
|
||||
{
|
||||
SKR.barter_scheme[bsc] = preset_file.barter_scheme[bsc];
|
||||
}
|
||||
|
||||
for (const llv in preset_file.loyal_level_items)
|
||||
{
|
||||
SKR.loyal_level_items[llv] = preset_file.loyal_level_items[llv];
|
||||
}
|
||||
|
||||
//push loot
|
||||
const safeLoot =
|
||||
{
|
||||
"tpl": WeaponIds.COLT_PEACEMAKER,
|
||||
"relativeProbability": 24
|
||||
}
|
||||
|
||||
const ammopack =
|
||||
{
|
||||
tpl: "66515174b0b7affec08d22aa",
|
||||
"relativeProbability": 146
|
||||
}
|
||||
|
||||
const locations = dbTables.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
|
||||
}
|
||||
|
||||
const safe = location.staticLoot[ItemTpl.LOOTCONTAINER_SAFE];
|
||||
if (safe)
|
||||
{
|
||||
safe.itemDistribution.push(safeLoot);
|
||||
}
|
||||
|
||||
const weaponbox5x5 = location.staticLoot[ItemTpl.LOOTCONTAINER_WEAPON_BOX_5X5];
|
||||
if (weaponbox5x5)
|
||||
{
|
||||
weaponbox5x5.itemDistribution.push(ammopack);
|
||||
}
|
||||
|
||||
location.staticLoot[ItemTpl.LOOTCONTAINER_WEAPON_BOX_4X4]?.itemDistribution.push(ammopack);
|
||||
location.staticLoot[ItemTpl.LOOTCONTAINER_WEAPON_BOX_6X3]?.itemDistribution.push(ammopack);
|
||||
location.staticLoot[ItemTpl.LOOTCONTAINER_WEAPON_BOX_5X2]?.itemDistribution.push(ammopack);
|
||||
location.staticLoot[ItemTpl.LOOTCONTAINER_WOODEN_CRATE]?.itemDistribution.push(ammopack);
|
||||
if (!location || !location.staticAmmo)
|
||||
{
|
||||
continue
|
||||
}
|
||||
location.staticAmmo["Caliber1143x33mmR"] =
|
||||
[
|
||||
{
|
||||
tpl: "65f3e7fa6d952338bde17f8a",
|
||||
relativeProbability: 1
|
||||
}
|
||||
]
|
||||
}
|
||||
const scavy = dbTables.bots.types["assault"];
|
||||
scavy.inventory.equipment.Holster[WeaponIds.COLT_PEACEMAKER] = 9;
|
||||
scavy.inventory.mods[WeaponIds.COLT_PEACEMAKER] =
|
||||
{
|
||||
mod_magazine: [
|
||||
"665154c4019e9e7d5ad6d0cc"
|
||||
]
|
||||
}
|
||||
scavy.inventory.mods["665154c4019e9e7d5ad6d0cc"] =
|
||||
{
|
||||
camora_000: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
camora_001: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
camora_002: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
camora_003: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
camora_004: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
],
|
||||
camora_005: [
|
||||
"65f3e7fa6d952338bde17f8a"
|
||||
]
|
||||
}
|
||||
scavy.inventory.Ammo["Caliber1143x33mmR"] =
|
||||
{
|
||||
"65f3e7fa6d952338bde17f8a": 1
|
||||
}
|
||||
|
||||
customitem.addCustomWeaponToPMCs(WeaponIds.COLT_PEACEMAKER, 7, "Holster")
|
||||
|
||||
|
||||
//ON GOD WACKY AHH ID INVENTORY THING
|
||||
dbTables.templates.items["55d7217a4bdc2d86028b456d"]._props.Slots[2]._props.filters[0].Filter.push(WeaponIds.COLT_PEACEMAKER);
|
||||
}
|
||||
}
|
||||
|
||||
export const mod = new Mod();
|
||||
LFS
BIN
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
[General]
|
||||
gameName=spt
|
||||
modid=0
|
||||
version=d2025.1.11.0
|
||||
newestVersion=
|
||||
category="1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=choccy-rpg7-1.1.4.zip
|
||||
repository=Nexus
|
||||
ignoredVersion=
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=false
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2025-01-11T09:13:31Z
|
||||
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,49 @@
|
||||
{
|
||||
"manifest": [
|
||||
{
|
||||
"key": "rpg7/client_assets.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"rpg7/textures.bundle",
|
||||
"shaders"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "rpg7/textures.bundle",
|
||||
"dependencyKeys": []
|
||||
},
|
||||
{
|
||||
"key": "rpg7/mod_front_sight_rpg7.bundle",
|
||||
"dependencyKeys": [
|
||||
"rpg7/client_assets.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "rpg7/mod_rear_sight_rpg7.bundle",
|
||||
"dependencyKeys": [
|
||||
"rpg7/client_assets.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "rpg7/patron_rpg7_pg7vl_93x40mm.bundle",
|
||||
"dependencyKeys": [
|
||||
"cubemaps",
|
||||
"shaders",
|
||||
"rpg7/client_assets.bundle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "rpg7/weapon_rpg7_container.bundle",
|
||||
"dependencyKeys": [
|
||||
"assets/content/audio/blendoptions/assets.bundle",
|
||||
"assets/content/audio/weapons/generic",
|
||||
"assets/content/weapons/additional_hands/client_assets.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",
|
||||
"rpg7/client_assets.bundle"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"ExplosionMin": 30,
|
||||
"ExplosionMax": 45
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"name": "RPG7",
|
||||
"version": "1.1.4",
|
||||
"main": "src/mod.js",
|
||||
"license": "CC-BY 3.0",
|
||||
"author": "Choccy",
|
||||
"isBundleMod": true,
|
||||
"sptVersion": "~3.10",
|
||||
"loadBefore": [],
|
||||
"loadAfter": [],
|
||||
"incompatibilities": [],
|
||||
"contributors": [],
|
||||
"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,170 @@
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"_id": "668ba3975c1a4c9b79bb68d9",
|
||||
"_tpl": "668b9c37adf8dd87dcd87df9",
|
||||
"parentId": "hideout",
|
||||
"slotId": "hideout",
|
||||
"upd": {
|
||||
"UnlimitedCount": false,
|
||||
"StackObjectsCount": 1053,
|
||||
"BuyRestrictionCurrent": 0,
|
||||
"BuyRestrictionMax": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "3d98eada45977b1008bd60fe",
|
||||
"_tpl": "668b9c27558936e864b4a504",
|
||||
"parentId": "668ba3975c1a4c9b79bb68d9",
|
||||
"slotId": "mod_sight_front"
|
||||
},
|
||||
{
|
||||
"_id": "0980a5e03a3b26542b77f091",
|
||||
"_tpl": "668b9c1b327f6a93d2375db3",
|
||||
"parentId": "668ba3975c1a4c9b79bb68d9",
|
||||
"slotId": "mod_sight_rear"
|
||||
},
|
||||
{
|
||||
"_id": "668ba3a3e2754a5d658f9d86",
|
||||
"_tpl": "668b9c37adf8dd87dcd87df9",
|
||||
"parentId": "hideout",
|
||||
"slotId": "hideout",
|
||||
"upd": {
|
||||
"UnlimitedCount": false,
|
||||
"StackObjectsCount": 1053,
|
||||
"BuyRestrictionCurrent": 0,
|
||||
"BuyRestrictionMax": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "668ba3d2c7b4aaca11e0b8bb",
|
||||
"_tpl": "668b9c27558936e864b4a504",
|
||||
"parentId": "668ba3a3e2754a5d658f9d86",
|
||||
"slotId": "mod_sight_front"
|
||||
},
|
||||
{
|
||||
"_id": "668ba3ce3c888c935f524bbe",
|
||||
"_tpl": "668b9c1b327f6a93d2375db3",
|
||||
"parentId": "668ba3a3e2754a5d658f9d86",
|
||||
"slotId": "mod_sight_rear"
|
||||
},
|
||||
{
|
||||
"_id": "668ba3afc5745416518fc98c",
|
||||
"_tpl": "65f484909638b1821d56149e",
|
||||
"parentId": "hideout",
|
||||
"slotId": "hideout",
|
||||
"upd": {
|
||||
"UnlimitedCount": false,
|
||||
"StackObjectsCount": 3241,
|
||||
"BuyRestrictionCurrent": 0,
|
||||
"BuyRestrictionMax": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "668ba3b4a8df04f0219b9056",
|
||||
"_tpl": "65f484909638b1821d56149e",
|
||||
"parentId": "hideout",
|
||||
"slotId": "hideout",
|
||||
"upd": {
|
||||
"UnlimitedCount": false,
|
||||
"StackObjectsCount": 4091,
|
||||
"BuyRestrictionCurrent": 0,
|
||||
"BuyRestrictionMax": 8
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "668ba3c691121ef7a6da0d5b",
|
||||
"_tpl": "668b9c27558936e864b4a504",
|
||||
"parentId": "hideout",
|
||||
"slotId": "hideout",
|
||||
"upd": {
|
||||
"UnlimitedCount": true,
|
||||
"StackObjectsCount": 9999
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "668ba3c093eacd575f37dc7c",
|
||||
"_tpl": "668b9c1b327f6a93d2375db3",
|
||||
"parentId": "hideout",
|
||||
"slotId": "hideout",
|
||||
"upd": {
|
||||
"UnlimitedCount": true,
|
||||
"StackObjectsCount": 9999
|
||||
}
|
||||
}
|
||||
],
|
||||
"barter_scheme": {
|
||||
"668ba3975c1a4c9b79bb68d9": [
|
||||
[
|
||||
{
|
||||
"_tpl": "59faff1d86f7746c51718c9c",
|
||||
"count": 1
|
||||
},
|
||||
{
|
||||
"_tpl": "5d1c819a86f774771b0acd6c",
|
||||
"count": 3
|
||||
},
|
||||
{
|
||||
"_tpl": "5c12620d86f7743f8b198b72",
|
||||
"count": 3
|
||||
},
|
||||
{
|
||||
"_tpl": "5d6fc87386f77449db3db94e",
|
||||
"count": 2
|
||||
}
|
||||
]
|
||||
],
|
||||
"668ba3a3e2754a5d658f9d86": [
|
||||
[
|
||||
{
|
||||
"_tpl": "5449016a4bdc2d6f028b456f",
|
||||
"count": 411532
|
||||
}
|
||||
]
|
||||
],
|
||||
"668ba3afc5745416518fc98c": [
|
||||
[
|
||||
{
|
||||
"_tpl": "5d6fc87386f77449db3db94e",
|
||||
"count": 3
|
||||
},
|
||||
{
|
||||
"_tpl": "5d1c819a86f774771b0acd6c",
|
||||
"count": 1
|
||||
}
|
||||
]
|
||||
],
|
||||
"668ba3b4a8df04f0219b9056": [
|
||||
[
|
||||
{
|
||||
"_tpl": "5449016a4bdc2d6f028b456f",
|
||||
"count": 75221
|
||||
}
|
||||
]
|
||||
],
|
||||
"668ba3c691121ef7a6da0d5b": [
|
||||
[
|
||||
{
|
||||
"_tpl": "5449016a4bdc2d6f028b456f",
|
||||
"count": 1152
|
||||
}
|
||||
]
|
||||
],
|
||||
"668ba3c093eacd575f37dc7c": [
|
||||
[
|
||||
{
|
||||
"_tpl": "5449016a4bdc2d6f028b456f",
|
||||
"count": 1152
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"loyal_level_items":{
|
||||
"668ba3975c1a4c9b79bb68d9": 1,
|
||||
"668ba3a3e2754a5d658f9d86": 3,
|
||||
"668ba3afc5745416518fc98c": 1,
|
||||
"668ba3b4a8df04f0219b9056": 2,
|
||||
"668ba3c093eacd575f37dc7c": 1,
|
||||
"668ba3c691121ef7a6da0d5b": 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
{
|
||||
"spawnsRezerv": [
|
||||
{
|
||||
"locationId": "(93.1053, 3.3972, -17.8457)",
|
||||
"probability": 0.00548271211,
|
||||
"template": {
|
||||
"Id": "6650379222019b5d201b86e1",
|
||||
"IsContainer": false,
|
||||
"useGravity": true,
|
||||
"randomRotation": false,
|
||||
"Position": {
|
||||
"x": 93.1053,
|
||||
"y": 3.3972,
|
||||
"z": -17.8457
|
||||
},
|
||||
"Rotation": {
|
||||
"x": 0.0094,
|
||||
"y": 115.0182,
|
||||
"z": 89.9465
|
||||
},
|
||||
"IsGroupPosition": false,
|
||||
"GroupPositions": [],
|
||||
"IsAlwaysSpawn": false,
|
||||
"Root": "6650379651a307b46b5843fa",
|
||||
"Items": [
|
||||
{
|
||||
"_id": "66503799222398c8f0ffb499",
|
||||
"_tpl": "668b9c37adf8dd87dcd87df9"
|
||||
},
|
||||
{
|
||||
"_id": "3d98eada45977b1008bd60fe",
|
||||
"_tpl": "668b9c27558936e864b4a504",
|
||||
"parentId": "66503799222398c8f0ffb499",
|
||||
"slotId": "mod_sight_front"
|
||||
},
|
||||
{
|
||||
"_id": "0980a5e03a3b26542b77f091",
|
||||
"_tpl": "668b9c1b327f6a93d2375db3",
|
||||
"parentId": "66503799222398c8f0ffb499",
|
||||
"slotId": "mod_sight_rear"
|
||||
}
|
||||
]
|
||||
},
|
||||
"itemDistribution": [
|
||||
{
|
||||
"composedKey": {
|
||||
"key": "66503799222398c8f0ffb499"
|
||||
},
|
||||
"relativeProbability": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"locationId": "(92.3145, 3.3779, -17.606)",
|
||||
"probability": 0.0000815232,
|
||||
"template": {
|
||||
"Id": "665037a906a6915e8c1d6cf6",
|
||||
"IsContainer": false,
|
||||
"useGravity": true,
|
||||
"randomRotation": false,
|
||||
"Position": {
|
||||
"x": 92.3145,
|
||||
"y": 3.3779,
|
||||
"z": -17.606
|
||||
},
|
||||
"Rotation": {
|
||||
"x": -0.0003,
|
||||
"y": 105.6718,
|
||||
"z": 228.0094
|
||||
},
|
||||
"IsGroupPosition": false,
|
||||
"GroupPositions": [],
|
||||
"IsAlwaysSpawn": false,
|
||||
"Root": "665037adc139b4fe0a2f5a6c",
|
||||
"Items": [
|
||||
{
|
||||
"_id": "665037affc12bfe0662b362b",
|
||||
"_tpl": "65f484909638b1821d56149e"
|
||||
}
|
||||
]
|
||||
},
|
||||
"itemDistribution": [
|
||||
{
|
||||
"composedKey": {
|
||||
"key": "665037affc12bfe0662b362b"
|
||||
},
|
||||
"relativeProbability": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"locationId": "(92.5457, 3.3778, -17.4563)",
|
||||
"probability": 0.0000815232,
|
||||
"template": {
|
||||
"Id": "665037b61299defbc2bb7d50",
|
||||
"IsContainer": false,
|
||||
"useGravity": true,
|
||||
"randomRotation": false,
|
||||
"Position": {
|
||||
"x": 92.5457,
|
||||
"y": 3.3778,
|
||||
"z": -17.4563
|
||||
},
|
||||
"Rotation": {
|
||||
"x": 0.02,
|
||||
"y": 231.0191,
|
||||
"z": 174.213
|
||||
},
|
||||
"IsGroupPosition": false,
|
||||
"GroupPositions": [],
|
||||
"IsAlwaysSpawn": false,
|
||||
"Root": "665037b9a4193746f8b55fd8",
|
||||
"Items": [
|
||||
{
|
||||
"_id": "665037bc6437b3e76401fb33",
|
||||
"_tpl": "65f484909638b1821d56149e"
|
||||
}
|
||||
]
|
||||
},
|
||||
"itemDistribution": [
|
||||
{
|
||||
"composedKey": {
|
||||
"key": "665037bc6437b3e76401fb33"
|
||||
},
|
||||
"relativeProbability": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"ItemPresets": {
|
||||
"65f484cd7d39950ce561bad4": {
|
||||
"_changeWeaponName": false,
|
||||
"_encyclopedia": "668b9c37adf8dd87dcd87df9",
|
||||
"_id": "65f484cd7d39950ce561bad4",
|
||||
"_items": [
|
||||
{
|
||||
"_id": "65f484d569e9a755c7c06bf2",
|
||||
"_tpl": "668b9c37adf8dd87dcd87df9",
|
||||
"upd": {
|
||||
"FireMode": {
|
||||
"FireMode": "single"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "3d98eada45977b1008bd60fe",
|
||||
"_tpl": "668b9c27558936e864b4a504",
|
||||
"parentId": "65f484d569e9a755c7c06bf2",
|
||||
"slotId": "mod_sight_front",
|
||||
"upd": {
|
||||
"Sight": {
|
||||
"ScopesCurrentCalibPointIndexes": [
|
||||
0
|
||||
],
|
||||
"ScopesSelectedModes": [
|
||||
0
|
||||
],
|
||||
"SelectedScope": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"_id": "0980a5e03a3b26542b77f091",
|
||||
"_tpl": "668b9c1b327f6a93d2375db3",
|
||||
"parentId": "65f484d569e9a755c7c06bf2",
|
||||
"slotId": "mod_sight_rear",
|
||||
"upd": {
|
||||
"Sight": {
|
||||
"ScopesCurrentCalibPointIndexes": [
|
||||
0
|
||||
],
|
||||
"ScopesSelectedModes": [
|
||||
0
|
||||
],
|
||||
"SelectedScope": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"_name": "RPG-7V2",
|
||||
"_parent": "65f484d569e9a755c7c06bf2",
|
||||
"_type": "Preset"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,261 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.mod = void 0;
|
||||
const ItemTpl_1 = require("C:/snapshot/project/obj/models/enums/ItemTpl");
|
||||
const Traders_1 = require("C:/snapshot/project/obj/models/enums/Traders");
|
||||
const Item_Preset_json_1 = __importDefault(require("../src/Item_Preset.json"));
|
||||
const global_item_preset_json_1 = __importDefault(require("../src/global_item_preset.json"));
|
||||
const Spawns_json_1 = __importDefault(require("../src/Spawns.json"));
|
||||
const config_json_1 = __importDefault(require("../config/config.json"));
|
||||
class Mod {
|
||||
postDBLoad(container) {
|
||||
const customitem = container.resolve("CustomItemService");
|
||||
const databaseserver = container.resolve("DatabaseServer");
|
||||
const db = databaseserver.getTables();
|
||||
const globals = db.globals;
|
||||
const PRP = db.traders[Traders_1.Traders.PRAPOR].assort;
|
||||
//---WEAPON LISTING AND ATTACHMENT---
|
||||
const weapon_rpg7 = {
|
||||
itemTplToClone: "5e81ebcd8e146c7080625e15",
|
||||
overrideProperties: {
|
||||
BackgroundColor: "yellow",
|
||||
AimPlane: 0.03,
|
||||
AimSensitivity: 0.55,
|
||||
CenterOfImpact: 0.4,
|
||||
Chambers: [
|
||||
{
|
||||
"_id": "668b9c4618fcdec559709609",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "patron_in_weapon",
|
||||
"_parent": "668b9c37adf8dd87dcd87df9",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f484909638b1821d56149e"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
}
|
||||
],
|
||||
CompactHandling: false,
|
||||
CanSellOnRagfair: false,
|
||||
Ergonomics: 34,
|
||||
Foldable: false,
|
||||
Height: 2,
|
||||
Width: 7,
|
||||
IronSightRange: 50,
|
||||
LootExperience: 35,
|
||||
RecoilCenter: {
|
||||
x: 0.039,
|
||||
y: -0.016,
|
||||
z: 0.024
|
||||
},
|
||||
RecoilForceBack: 68,
|
||||
RecoilForceUp: 45,
|
||||
RecoilDampingHandRotation: 0.75,
|
||||
RecoilCamera: 0,
|
||||
blockLeftStance: true,
|
||||
RotationCenter: {
|
||||
x: 0.039,
|
||||
y: -0.016,
|
||||
z: 0.024
|
||||
},
|
||||
RotationCenterNoStock: {
|
||||
x: 0.039,
|
||||
y: -0.016,
|
||||
z: 0.024
|
||||
},
|
||||
Weight: 6.3,
|
||||
defAmmo: "65f484909638b1821d56149e",
|
||||
ammoCaliber: "Caliber40mm",
|
||||
isBoltCatch: false,
|
||||
Slots: [
|
||||
{
|
||||
"_id": "668b9c4169fa7f86b96a072f",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "mod_sight_front",
|
||||
"_parent": "668b9c37adf8dd87dcd87df9",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"668b9c27558936e864b4a504"
|
||||
],
|
||||
"Shift": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d30c4c4bdc2db4468b457e",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "668b9c2ee622e896622dd1cc",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "mod_sight_rear",
|
||||
"_parent": "668b9c37adf8dd87dcd87df9",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"668b9c1b327f6a93d2375db3"
|
||||
],
|
||||
"Shift": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d30c4c4bdc2db4468b457e",
|
||||
"_required": false
|
||||
}
|
||||
],
|
||||
Prefab: {
|
||||
path: "rpg7/weapon_rpg7_container.bundle",
|
||||
rcid: ""
|
||||
}
|
||||
},
|
||||
parentId: "5447bedf4bdc2d87278b4568",
|
||||
newId: "668b9c37adf8dd87dcd87df9",
|
||||
handbookParentId: "5b5f79eb86f77447ed5636b7",
|
||||
fleaPriceRoubles: 511073,
|
||||
handbookPriceRoubles: 417322,
|
||||
locales: {
|
||||
"en": {
|
||||
name: "RPG-7V2 \"Ruchnoy Protivotankovyy Granatomot\" Handheld Anti-Tank Grenade Launcher",
|
||||
shortName: "RPG-7V2",
|
||||
description: "The RPG-7 is a portable and reusable Shoulder launched rocket propelled grenade launcher. The ruggedness, simplicity, low cost, and effectiveness of the RPG-7 has made it the most widely used anti-armor weapon in the world. Currently around 40 countries use the weapon; it is manufactured in several variants by nine countries. It is popular with irregular and guerrilla forces. The RPG-7 can fire a variety of warheads for anti-armor or anti-personnel."
|
||||
}
|
||||
}
|
||||
};
|
||||
customitem.createItemFromClone(weapon_rpg7);
|
||||
const sight_front_rpg7 = {
|
||||
itemTplToClone: "5ba26b01d4351e0085325a51",
|
||||
overrideProperties: {
|
||||
AimSensitivity: [
|
||||
[
|
||||
0.55
|
||||
]
|
||||
],
|
||||
Prefab: {
|
||||
path: "rpg7/mod_front_sight_rpg7.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
SightingRange: 50
|
||||
},
|
||||
parentId: "55818ac54bdc2d5b648b456e",
|
||||
newId: "668b9c27558936e864b4a504",
|
||||
fleaPriceRoubles: 8755,
|
||||
handbookPriceRoubles: 7544,
|
||||
handbookParentId: "5b5f746686f77447ec5d7708",
|
||||
locales: {
|
||||
"en": {
|
||||
name: "RPG-7 Standard Front Iron Sight",
|
||||
shortName: "RPG-7 Iron",
|
||||
description: "A standard issue iron sight made for RPG-7"
|
||||
}
|
||||
}
|
||||
};
|
||||
customitem.createItemFromClone(sight_front_rpg7);
|
||||
const sight_rear_rpg7 = {
|
||||
itemTplToClone: "5ba26b17d4351e00367f9bdd",
|
||||
overrideProperties: {
|
||||
AimSensitivity: [
|
||||
[
|
||||
0.55
|
||||
]
|
||||
],
|
||||
Prefab: {
|
||||
path: "rpg7/mod_rear_sight_rpg7.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
SightingRange: 50
|
||||
},
|
||||
parentId: "55818ac54bdc2d5b648b456e",
|
||||
newId: "668b9c1b327f6a93d2375db3",
|
||||
fleaPriceRoubles: 8755,
|
||||
handbookPriceRoubles: 7544,
|
||||
handbookParentId: "5b5f746686f77447ec5d7708",
|
||||
locales: {
|
||||
"en": {
|
||||
name: "RPG-7 Standard Rear Iron Sight",
|
||||
shortName: "RPG-7 Iron",
|
||||
description: "A standard issue iron sight made for RPG-7"
|
||||
}
|
||||
}
|
||||
};
|
||||
customitem.createItemFromClone(sight_rear_rpg7);
|
||||
const patron_pg7vl = {
|
||||
itemTplToClone: "5ede474b0c226a66f5402622",
|
||||
overrideProperties: {
|
||||
ArmorDamage: 100,
|
||||
AmmoLifeTimeSec: 60,
|
||||
ArmorDistanceDistanceDamage: {
|
||||
x: 1,
|
||||
y: 5,
|
||||
z: 26
|
||||
},
|
||||
CanSellOnRagfair: false,
|
||||
Caliber: "Caliber93x40mm",
|
||||
BallisticCoeficient: 0.078,
|
||||
Damage: 210,
|
||||
ExplosionStrength: 95,
|
||||
FragmentsCount: 50,
|
||||
FuzeArmTimeSec: 0.18,
|
||||
FragmentType: "5996f6d686f77467977ba6cc",
|
||||
Height: 1,
|
||||
Width: 5,
|
||||
InitialSpeed: 112,
|
||||
MaxExplosionDistance: config_json_1.default.ExplosionMax,
|
||||
MinExplosionDistance: config_json_1.default.ExplosionMin,
|
||||
ExplosionType: "spg_explosion",
|
||||
PenetrationPower: 0,
|
||||
Prefab: {
|
||||
path: "rpg7/patron_rpg7_pg7vl_93x40mm.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
ShowBullet: true,
|
||||
ShowHitEffectOnExplode: true,
|
||||
RemoveShellAfterFire: true,
|
||||
Tracer: true,
|
||||
TracerColor: "tracerRed",
|
||||
Weight: 2.6
|
||||
},
|
||||
parentId: "5485a8684bdc2da71d8b4567",
|
||||
newId: "65f484909638b1821d56149e",
|
||||
fleaPriceRoubles: 86654,
|
||||
handbookPriceRoubles: 75542,
|
||||
handbookParentId: "5b47574386f77428ca22b33b",
|
||||
locales: {
|
||||
"en": {
|
||||
name: "PG-7VL Anti-Tank HEAT Warhead",
|
||||
shortName: "PG-7VL",
|
||||
description: "RPG-7 Round with an improved HEAT warhead, most effective against light and some armored target. Not recommended to fire into human unless you want red mist."
|
||||
}
|
||||
}
|
||||
};
|
||||
customitem.createItemFromClone(patron_pg7vl);
|
||||
//---MASTERY AND TRADER---
|
||||
PRP.items.push(...Item_Preset_json_1.default.items);
|
||||
for (const bsc in Item_Preset_json_1.default.barter_scheme) {
|
||||
PRP.barter_scheme[bsc] = Item_Preset_json_1.default.barter_scheme[bsc];
|
||||
}
|
||||
for (const llv in Item_Preset_json_1.default.loyal_level_items) {
|
||||
PRP.loyal_level_items[llv] = Item_Preset_json_1.default.loyal_level_items[llv];
|
||||
}
|
||||
//---Global Weapon Preset---
|
||||
for (const itemPreset in global_item_preset_json_1.default.ItemPresets) {
|
||||
globals.ItemPresets[itemPreset] = global_item_preset_json_1.default.ItemPresets[itemPreset];
|
||||
}
|
||||
db.locations.rezervbase.looseLoot.spawnpoints.push(...Spawns_json_1.default.spawnsRezerv);
|
||||
//---For Other tidbits of manipulation---
|
||||
db.templates.items[ItemTpl_1.ItemTpl.INVENTORY_DEFAULT]._props.Slots[0]._props.filters[0].Filter.push("668b9c37adf8dd87dcd87df9");
|
||||
db.templates.items[ItemTpl_1.ItemTpl.INVENTORY_DEFAULT]._props.Slots[1]._props.filters[0].Filter.push("668b9c37adf8dd87dcd87df9");
|
||||
}
|
||||
}
|
||||
exports.mod = new Mod();
|
||||
//# sourceMappingURL=mod.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,281 @@
|
||||
/* eslint-disable no-mixed-spaces-and-tabs */
|
||||
/* eslint-disable @typescript-eslint/indent */
|
||||
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 { ItemTpl } from "@spt/models/enums/ItemTpl";
|
||||
import { Traders } from "@spt/models/enums/Traders";
|
||||
import preset_file from "../src/Item_Preset.json";
|
||||
import global_preset_file from "../src/global_item_preset.json";
|
||||
import loot from "../src/Spawns.json";
|
||||
import config from "../config/config.json";
|
||||
|
||||
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 PRP = db.traders[Traders.PRAPOR].assort;
|
||||
//---WEAPON LISTING AND ATTACHMENT---
|
||||
const weapon_rpg7: NewItemFromCloneDetails =
|
||||
{
|
||||
itemTplToClone: "5e81ebcd8e146c7080625e15",
|
||||
overrideProperties: {
|
||||
BackgroundColor: "yellow",
|
||||
AimPlane: 0.03,
|
||||
AimSensitivity: 0.55,
|
||||
CenterOfImpact: 0.4,
|
||||
Chambers: [
|
||||
{
|
||||
"_id": "668b9c4618fcdec559709609",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "patron_in_weapon",
|
||||
"_parent": "668b9c37adf8dd87dcd87df9",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"65f484909638b1821d56149e"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d4af244bdc2d962f8b4571",
|
||||
"_required": false
|
||||
}
|
||||
],
|
||||
CompactHandling: false,
|
||||
CanSellOnRagfair: false,
|
||||
Ergonomics: 34,
|
||||
Foldable: false,
|
||||
Height: 2,
|
||||
Width: 7,
|
||||
IronSightRange: 50,
|
||||
LootExperience: 35,
|
||||
RecoilCenter: {
|
||||
x: 0.039,
|
||||
y: -0.016,
|
||||
z: 0.024
|
||||
},
|
||||
RecoilForceBack: 68,
|
||||
RecoilForceUp: 45,
|
||||
RecoilDampingHandRotation: 0.75,
|
||||
RecoilCamera: 0,
|
||||
blockLeftStance: true,
|
||||
RotationCenter: {
|
||||
x: 0.039,
|
||||
y: -0.016,
|
||||
z: 0.024
|
||||
},
|
||||
RotationCenterNoStock: {
|
||||
x: 0.039,
|
||||
y: -0.016,
|
||||
z: 0.024
|
||||
},
|
||||
Weight: 6.3,
|
||||
defAmmo: "65f484909638b1821d56149e",
|
||||
ammoCaliber: "Caliber40mm",
|
||||
isBoltCatch: false,
|
||||
Slots: [
|
||||
{
|
||||
"_id": "668b9c4169fa7f86b96a072f",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "mod_sight_front",
|
||||
"_parent": "668b9c37adf8dd87dcd87df9",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"668b9c27558936e864b4a504"
|
||||
],
|
||||
"Shift": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d30c4c4bdc2db4468b457e",
|
||||
"_required": false
|
||||
},
|
||||
{
|
||||
"_id": "668b9c2ee622e896622dd1cc",
|
||||
"_mergeSlotWithChildren": false,
|
||||
"_name": "mod_sight_rear",
|
||||
"_parent": "668b9c37adf8dd87dcd87df9",
|
||||
"_props": {
|
||||
"filters": [
|
||||
{
|
||||
"Filter": [
|
||||
"668b9c1b327f6a93d2375db3"
|
||||
],
|
||||
"Shift": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"_proto": "55d30c4c4bdc2db4468b457e",
|
||||
"_required": false
|
||||
}
|
||||
],
|
||||
Prefab: {
|
||||
path: "rpg7/weapon_rpg7_container.bundle",
|
||||
rcid: ""
|
||||
}
|
||||
},
|
||||
parentId: "5447bedf4bdc2d87278b4568",
|
||||
newId: "668b9c37adf8dd87dcd87df9",
|
||||
handbookParentId: "5b5f79eb86f77447ed5636b7",
|
||||
fleaPriceRoubles: 511073,
|
||||
handbookPriceRoubles: 417322,
|
||||
locales: {
|
||||
"en": {
|
||||
name: "RPG-7V2 \"Ruchnoy Protivotankovyy Granatomot\" Handheld Anti-Tank Grenade Launcher",
|
||||
shortName: "RPG-7V2",
|
||||
description: "The RPG-7 is a portable and reusable Shoulder launched rocket propelled grenade launcher. The ruggedness, simplicity, low cost, and effectiveness of the RPG-7 has made it the most widely used anti-armor weapon in the world. Currently around 40 countries use the weapon; it is manufactured in several variants by nine countries. It is popular with irregular and guerrilla forces. The RPG-7 can fire a variety of warheads for anti-armor or anti-personnel."
|
||||
}
|
||||
}
|
||||
}
|
||||
customitem.createItemFromClone(weapon_rpg7);
|
||||
|
||||
const sight_front_rpg7: NewItemFromCloneDetails ={
|
||||
itemTplToClone: "5ba26b01d4351e0085325a51",
|
||||
overrideProperties: {
|
||||
AimSensitivity: [
|
||||
[
|
||||
0.55
|
||||
]
|
||||
],
|
||||
Prefab: {
|
||||
path: "rpg7/mod_front_sight_rpg7.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
SightingRange: 50
|
||||
},
|
||||
parentId: "55818ac54bdc2d5b648b456e",
|
||||
newId: "668b9c27558936e864b4a504",
|
||||
fleaPriceRoubles: 8755,
|
||||
handbookPriceRoubles: 7544,
|
||||
handbookParentId: "5b5f746686f77447ec5d7708",
|
||||
locales: {
|
||||
"en":
|
||||
{
|
||||
name: "RPG-7 Standard Front Iron Sight",
|
||||
shortName: "RPG-7 Iron",
|
||||
description: "A standard issue iron sight made for RPG-7"
|
||||
}
|
||||
}
|
||||
}
|
||||
customitem.createItemFromClone(sight_front_rpg7);
|
||||
|
||||
const sight_rear_rpg7: NewItemFromCloneDetails ={
|
||||
itemTplToClone: "5ba26b17d4351e00367f9bdd",
|
||||
overrideProperties: {
|
||||
AimSensitivity: [
|
||||
[
|
||||
0.55
|
||||
]
|
||||
],
|
||||
Prefab: {
|
||||
path: "rpg7/mod_rear_sight_rpg7.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
SightingRange: 50
|
||||
},
|
||||
parentId: "55818ac54bdc2d5b648b456e",
|
||||
newId: "668b9c1b327f6a93d2375db3",
|
||||
fleaPriceRoubles: 8755,
|
||||
handbookPriceRoubles: 7544,
|
||||
handbookParentId: "5b5f746686f77447ec5d7708",
|
||||
locales: {
|
||||
"en":
|
||||
{
|
||||
name: "RPG-7 Standard Rear Iron Sight",
|
||||
shortName: "RPG-7 Iron",
|
||||
description: "A standard issue iron sight made for RPG-7"
|
||||
}
|
||||
}
|
||||
}
|
||||
customitem.createItemFromClone(sight_rear_rpg7);
|
||||
|
||||
const patron_pg7vl: NewItemFromCloneDetails ={
|
||||
itemTplToClone: "5ede474b0c226a66f5402622",
|
||||
overrideProperties: {
|
||||
ArmorDamage: 100,
|
||||
AmmoLifeTimeSec: 60,
|
||||
ArmorDistanceDistanceDamage: {
|
||||
x: 1,
|
||||
y: 5,
|
||||
z: 26
|
||||
},
|
||||
CanSellOnRagfair: false,
|
||||
Caliber: "Caliber93x40mm",
|
||||
BallisticCoeficient: 0.078,
|
||||
Damage: 210,
|
||||
ExplosionStrength: 95,
|
||||
FragmentsCount: 50,
|
||||
FuzeArmTimeSec: 0.18,
|
||||
FragmentType: "5996f6d686f77467977ba6cc",
|
||||
Height: 1,
|
||||
Width: 5,
|
||||
InitialSpeed: 112,
|
||||
MaxExplosionDistance: config.ExplosionMax,
|
||||
MinExplosionDistance: config.ExplosionMin,
|
||||
ExplosionType: "rpg_explosion",
|
||||
PenetrationPower: 0,
|
||||
Prefab: {
|
||||
path: "rpg7/patron_rpg7_pg7vl_93x40mm.bundle",
|
||||
rcid: ""
|
||||
},
|
||||
ShowBullet: true,
|
||||
ShowHitEffectOnExplode: true,
|
||||
RemoveShellAfterFire: true,
|
||||
Tracer: true,
|
||||
TracerColor: "tracerRed",
|
||||
Weight: 2.6
|
||||
},
|
||||
parentId: "5485a8684bdc2da71d8b4567",
|
||||
newId: "65f484909638b1821d56149e",
|
||||
fleaPriceRoubles: 86654,
|
||||
handbookPriceRoubles: 75542,
|
||||
handbookParentId: "5b47574386f77428ca22b33b",
|
||||
locales: {
|
||||
"en":
|
||||
{
|
||||
name: "PG-7VL Anti-Tank HEAT Warhead",
|
||||
shortName: "PG-7VL",
|
||||
description: "RPG-7 Round with an improved HEAT warhead, most effective against light and some armored target. Not recommended to fire into human unless you want red mist."
|
||||
}
|
||||
}
|
||||
}
|
||||
customitem.createItemFromClone(patron_pg7vl);
|
||||
//---MASTERY AND TRADER---
|
||||
PRP.items.push(...preset_file.items);
|
||||
|
||||
for (const bsc in preset_file.barter_scheme)
|
||||
{
|
||||
PRP.barter_scheme[bsc] = preset_file.barter_scheme[bsc];
|
||||
}
|
||||
|
||||
for (const llv in preset_file.loyal_level_items)
|
||||
{
|
||||
PRP.loyal_level_items[llv] = preset_file.loyal_level_items[llv];
|
||||
}
|
||||
|
||||
//---Global Weapon Preset---
|
||||
for (const itemPreset in global_preset_file.ItemPresets)
|
||||
{
|
||||
globals.ItemPresets[itemPreset] = global_preset_file.ItemPresets[itemPreset];
|
||||
}
|
||||
|
||||
db.locations.rezervbase.looseLoot.spawnpoints.push(...loot.spawnsRezerv);
|
||||
|
||||
//---For Other tidbits of manipulation---
|
||||
db.templates.items[ItemTpl.INVENTORY_DEFAULT]._props.Slots[0]._props.filters[0].Filter.push("668b9c37adf8dd87dcd87df9");
|
||||
db.templates.items[ItemTpl.INVENTORY_DEFAULT]._props.Slots[1]._props.filters[0].Filter.push("668b9c37adf8dd87dcd87df9");
|
||||
}
|
||||
}
|
||||
|
||||
export const mod = new Mod();
|
||||
@@ -23,6 +23,7 @@
|
||||
-AI & Combat Tweaks_separator
|
||||
+Weapon Customizer
|
||||
+Little Drummer Boy
|
||||
+RPG-7
|
||||
+SVD
|
||||
+M249
|
||||
+AK-5C
|
||||
@@ -30,6 +31,7 @@
|
||||
+Armsel Striker-12
|
||||
+Kel-Tec KSG-12
|
||||
+China Lake
|
||||
+Peacemaker
|
||||
-New Weapons & Gear_separator
|
||||
+Ref SPT Friendly Quests
|
||||
-New Traders & Tweaks_separator
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
+AI & Combat Tweaks_separator
|
||||
-Weapon Customizer
|
||||
+Little Drummer Boy
|
||||
+RPG-7
|
||||
+SVD
|
||||
+M249
|
||||
+AK-5C
|
||||
@@ -30,6 +31,7 @@
|
||||
+Armsel Striker-12
|
||||
+Kel-Tec KSG-12
|
||||
+China Lake
|
||||
+Peacemaker
|
||||
+New Weapons & Gear_separator
|
||||
+Ref SPT Friendly Quests
|
||||
+New Traders & Tweaks_separator
|
||||
|
||||
Reference in New Issue
Block a user