Archived
Added RPG-7 & Peacemaker Mods
This commit is contained in:
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();
|
||||
Reference in New Issue
Block a user