diff --git a/.gitignore b/.gitignore index c59e5c9..03a576d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,2 @@ -ZEreshkigal-AllinOneMod-1.10.0.zip -ZEreshkigal-AllinOneMod/obfuscating.bat -ZEreshkigal-AllinOneMod/package.js +*.zip diff --git a/ZEreshkigal-AllinOneMod/config/config.json b/ZEreshkigal-AllinOneMod/config/config.json index d115481..c88bd23 100644 --- a/ZEreshkigal-AllinOneMod/config/config.json +++ b/ZEreshkigal-AllinOneMod/config/config.json @@ -17,7 +17,16 @@ "IncreaseExamineExp": false, "RemoveKeysUsageNumber": false, "StackableBarters": { - + "activated": false, + "Battery": 1, + "Building materials": 1, + "Electronics": 1, + "Household goods": 1, + "Jewelry": 1, + "Medical supplies": 1, + "Flammable": 1, + "Tools": 1, + "Other": 1 }, "RemoveAllGearPenalties": false, "RemoveItemsDurabilityBurn": false, @@ -113,14 +122,15 @@ "Additionnal Clothing": false, "Andrudis Quest Maniac": false }, - "Pre-Wipe events":{ + "Pre-Wipe events": { "Raiders on all maps": false, - "Killa on factory":false, + "Killa on factory": false, "All bosses on reserve": false, "All traders sells cheap items": false, "Make Obdolbos Powerfull": false, "Gluhkar on labs": false }, - "HideWarningMessage": false + "HideWarningMessage": false, + "ShowModLogs": true } } \ No newline at end of file diff --git a/ZEreshkigal-AllinOneMod/config/errors.json b/ZEreshkigal-AllinOneMod/config/errors.json index 7a4a9f8..9ea4ed6 100644 --- a/ZEreshkigal-AllinOneMod/config/errors.json +++ b/ZEreshkigal-AllinOneMod/config/errors.json @@ -15,6 +15,8 @@ "RemoveKeysUsageNumber": "RemoveKeysUsageNumber option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value.", "StackableBarters": "StackableBarters option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value.", "RemoveAllGearPenalties": "RemoveAllGearPenalties option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value.", + "RemoveItemsDurabilityBurn": "RemoveItemsDurabilityBurn option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value.", + "RemoveBulletsWeaponDurabilityDamage": "RemoveBulletsWeaponDurabilityDamage option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value.", "ChangeIndividualItemProperty": { "activated": "ChangeIndividualItemProperty[activated] option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value." } @@ -89,16 +91,13 @@ "ExtractionsExtended": "ExtractionsExtended option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value." }, "other": { - "CompatibilityMods": { - "CardGameMod": false, - "TerragroupSpecialist": false, - "CoD MW - Mil-Sim: CTSFO I": false, - "Additionnal Gear - Tan": false, - "Additionnal Gear - Black": false, - "Additionnal Gear - Untar": false, - "Additionnal Clothing": false, - "Andrudis Quest Maniac": false - }, - "HideWarningMessage": false + "Pre-Wipe events":{ + "Raiders on all maps": "Raiders on all maps option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value.", + "Killa on factory":"Killa on factory option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value.", + "All bosses on reserve": "All bosses on reserve option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value.", + "All traders sells cheap items": "All bosses on reserve option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value.", + "Make Obdolbos Powerfull": "Make Obdolbos Powerfull option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value.", + "Gluhkar on labs": "Gluhkar on labs option is incorrect, it must be a boolean in order to work (true or false). Check back readme.pdf to ensure you use the correct value." + } } } \ No newline at end of file diff --git a/ZEreshkigal-AllinOneMod/loader.js b/ZEreshkigal-AllinOneMod/loader.js deleted file mode 100644 index 4585963..0000000 --- a/ZEreshkigal-AllinOneMod/loader.js +++ /dev/null @@ -1,4 +0,0 @@ - - require('bytenode'); - require('./package.jsc'); - \ No newline at end of file diff --git a/ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode b/ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode deleted file mode 100644 index b695a90..0000000 --- a/ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../bytenode/lib/cli.js" "$@" - ret=$? -else - node "$basedir/../bytenode/lib/cli.js" "$@" - ret=$? -fi -exit $ret diff --git a/ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.cmd b/ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.cmd deleted file mode 100644 index 805f5e2..0000000 --- a/ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.cmd +++ /dev/null @@ -1,17 +0,0 @@ -@ECHO off -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -"%_prog%" "%dp0%\..\bytenode\lib\cli.js" %* -ENDLOCAL -EXIT /b %errorlevel% -:find_dp0 -SET dp0=%~dp0 -EXIT /b diff --git a/ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.ps1 b/ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.ps1 deleted file mode 100644 index 9718473..0000000 --- a/ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.ps1 +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -} -$ret=0 -if (Test-Path "$basedir/node$exe") { - & "$basedir/node$exe" "$basedir/../bytenode/lib/cli.js" $args - $ret=$LASTEXITCODE -} else { - & "node$exe" "$basedir/../bytenode/lib/cli.js" $args - $ret=$LASTEXITCODE -} -exit $ret diff --git a/ZEreshkigal-AllinOneMod/node_modules/bytenode/LICENSE b/ZEreshkigal-AllinOneMod/node_modules/bytenode/LICENSE deleted file mode 100644 index a604c93..0000000 --- a/ZEreshkigal-AllinOneMod/node_modules/bytenode/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 Osama Abbas - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/ZEreshkigal-AllinOneMod/node_modules/bytenode/README.md b/ZEreshkigal-AllinOneMod/node_modules/bytenode/README.md deleted file mode 100644 index b1c530d..0000000 --- a/ZEreshkigal-AllinOneMod/node_modules/bytenode/README.md +++ /dev/null @@ -1,270 +0,0 @@ -# Bytenode - -A minimalist bytecode compiler for Node.js. - -This tool truly compiles your JavaScript code into `V8` bytecode, so that you can protect your source code. It can be used with Node.js, as well as Electron and NW.js (check `examples/` directory). - ---- - -## Install - -```console -npm install --save bytenode -``` - -Or globally: - -```console -sudo npm install -g bytenode -``` - ---- - -## Known Issues and Limitations - -* In Node 10.x, Bytenode does not work in debug mode. See [#29](https://github.com/OsamaAbbas/bytenode/issues/29). - -* Any code depends on `Function.prototype.toString` function will break, because Bytenode removes the source code from `.jsc` files and puts a dummy code instead. See [#34](https://github.com/OsamaAbbas/bytenode/issues/34). - -* In recent versions of Node, the `--no-flush-bytecode` must be set. Bytenode sets it internally, but if you encounter any issues, try to run Node with that flag: ` $ node --no-flush-bytecode server.js`. See [#41](https://github.com/OsamaAbbas/bytenode/issues/41). - -* Arrow functions (especially Async arrow functions) cause crash in Puppeteer and in Electron apps if used in render processes. See [#106](https://github.com/bytenode/bytenode/issues/106), [#47](https://github.com/OsamaAbbas/bytenode/issues/47). They also cause an issue with the ndb debugger. See [#135](https://github.com/bytenode/bytenode/issues/135). Use the usual async functions instead. - ---- - -## Bytenode CLI - -``` - Usage: bytenode [option] [ FILE... | - ] [arguments] - - Options: - -h, --help show help information. - -v, --version show bytenode version. - - -c, --compile [ FILE... | - ] compile stdin, a file, or a list of files - -n, --no-module compile without producing commonjs module - -e, --electron compile for Electron - - -l, --loader [ FILE | PATTERN ] create a loader file and optionally define - loader filename or pattern using % as filename replacer - defaults to %.loader.js - - Examples: - - $ bytenode -c script.js compile `script.js` to `script.jsc`. - $ bytenode -c server.js app.js - $ bytenode -c src/*.js compile all `.js` files in `src/` directory. - - $ bytenode -c *.js -l %.load.js create `filename.load.js` loader files along side `.jsc` files - - $ bytenode script.jsc [arguments] run `script.jsc` with arguments. - $ bytenode open Node REPL with bytenode pre-loaded. -``` - -Examples: - -* Compile `express-server.js` to `express-server.jsc`. -```console -user@machine:~$ bytenode --compile express-server.js -``` - -* Run your compiled file `express-server.jsc`. -```console -user@machine:~$ bytenode express-server.jsc -Server listening on port 3000 -``` - -* Compile all `.js` files in `./app` directory. -```console -user@machine:~$ bytenode --compile ./app/*.js -``` - -* Compile all `.js` files in your project. -```console -user@machine:~$ bytenode --compile ./**/*.js -``` -Note: you may need to enable `globstar` option in bash (you should add it to `~/.bashrc`): -`shopt -s globstar` - -* Starting from v1.0.0, bytenode can compile from `stdin`. -```console -$ echo 'console.log("Hello");' | bytenode --compile - > hello.jsc -``` - ---- - -## Bytenode API - -```javascript -const bytenode = require('bytenode'); -``` - ---- - -#### bytenode.compileCode(javascriptCode) → {Buffer} - -Generates v8 bytecode buffer. - -- Parameters: - -| Name | Type | Description | -| ---- | ---- | ----------- | -| javascriptCode | string | JavaScript source that will be compiled to bytecode. | - -- Returns: - -{Buffer} The generated bytecode. - -- Example: - -```javascript -let helloWorldBytecode = bytenode.compileCode(`console.log('Hello World!');`); -``` -This `helloWorldBytecode` bytecode can be saved to a file. However, if you want to use your code as a module (i.e. if your file has some `exports`), you have to compile it using `bytenode.compileFile({compileAsModule: true})`, or wrap your code manually, using `Module.wrap()` function. - ---- - -#### bytenode.compileElectronCode(javascriptCode) → {Promise\} - -Asynchronous function which generates v8 bytecode buffer for Electron. - -Same as `bytenode.compileCode()`, but generates bytecode for the version of Electron currently installed in node_modules. - -- Parameters: - -| Name | Type | Description | -| ---- | ---- | ----------- | -| javascriptCode | string | JavaScript source that will be compiled to bytecode. | - -- Returns: - -{Promise\} A Promise which resolves with the generated bytecode. - -- Example: - -```javascript -let helloWorldBytecode = await bytenode.compileElectronCode(`console.log('Hello World!');`); -``` -This `helloWorldBytecode` bytecode can be saved to a file. However, if you want to use your code as a module (i.e. if your file has some `exports`), you have to compile it using `bytenode.compileFile({compileAsModule: true})`, or wrap your code manually, using `Module.wrap()` function. - ---- - -#### bytenode.runBytecode(bytecodeBuffer) → {any} - -Runs v8 bytecode buffer and returns the result. - -- Parameters: - -| Name | Type | Description | -| ---- | ---- | ----------- | -| bytecodeBuffer | Buffer | The buffer object that was created using compileCode function. | - -- Returns: - -{any} The result of the very last statement executed in the script. - -- Example: - -```javascript -bytenode.runBytecode(helloWorldBytecode); -// prints: Hello World! -``` - ---- - -#### bytenode.compileFile(args, output) → {Promise\} - -Asyncrhonous function which compiles JavaScript file to .jsc file. - -- Parameters: - -| Name | Type | Description | -| ---- | ---- | ----------- | -| args | object \| string | | -| args.filename | string | The JavaScript source file that will be compiled. | -| args.compileAsModule | boolean | If true, the output will be a commonjs module. Default: true. | -| args.electron | boolean | If true, the output will be a compiled through Electrong. Default: false. | -| args.output | string | The output filename. Defaults to the same path and name of the original file, but with `.jsc` extension. | -| output | string | The output filename. (Deprecated: use args.output instead) | - -- Returns: - -{Promise\}: A Promise that resolves as the compiled filename. - -- Examples: - -```javascript -let compiledFilename = bytenode.compileFile({ - filename: '/path/to/your/file.js', - output: '/path/to/compiled/file.jsc' // if omitted, it defaults to '/path/to/your/file.jsc' -}); -``` -Previous code will produce a commonjs module that can be required using `require` function. - -```javascript -let compiledFilename = await bytenode.compileFile({ - filename: '/path/to/your/file.js', - output: '/path/to/compiled/file.jsc', - compileAsModule: false -}); -``` -Previous code will produce a direct `.jsc` file, that can be run using `bytenode.runBytecodeFile()` function. It can NOT be required as a module. Please note that `compileAsModule` MUST be `false` in order to turn it off. Any other values (including: `null`, `""`, etc) will be treated as `true`. (It had to be done this way in order to keep the old code valid.) - ---- - -#### bytenode.runBytecodeFile(filename) → {any} - -Runs .jsc file and returns the result. - -- Parameters: - -| Name | Type | -| ---- | ---- | -| filename | string | - -- Returns: - -{any} The result of the very last statement executed in the script. - -- Example: - -```javascript -// test.js -console.log('Hello World!'); -``` - -```javascript -bytenode.runBytecodeFile('/path/to/test.jsc'); -// prints: Hello World! -``` - ---- - -#### require(filename) → {any} - -- Parameters: - -| Name | Type | -| ---- | ---- | -| filename | string | - -- Returns: - -{any} exported module content - -- Example: - -```javascript -let myModule = require('/path/to/your/file.jsc'); -``` -Just like regular `.js` modules. You can also omit the extension `.jsc`. - -`.jsc` file must have been compiled using `bytenode.compileFile()`, or have been wrapped inside `Module.wrap()` function. Otherwise it won't work as a module and it can NOT be required. - -Please note `.jsc` files must run with the same Node.js version that was used to compile it (using same architecture of course). Also, `.jsc` files are CPU-agnostic. However, you should run your tests before and after deployment, because V8 sanity checks include some checks related to CPU supported features, so this may cause errors in some rare cases. - ---- - -## Acknowledgements - -I had the idea of this tool many years ago. However, I finally decided to implement it after seeing this [issue](https://github.com/nodejs/node/issues/11842) by @hashseed. Also, some parts were inspired by [v8-compile-cache](https://github.com/zertosh/v8-compile-cache) by @zertosh. \ No newline at end of file diff --git a/ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/cli.js b/ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/cli.js deleted file mode 100644 index 9f57493..0000000 --- a/ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/cli.js +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const wrap = require('module').wrap; -const spawnSync = require('child_process').spawnSync; -const bytenode = require('./index.js'); - -const args = process.argv.slice(2); - -if (args.includes('-c')) { - args[args.indexOf('-c')] = '--compile'; -} - -if (args.includes('-o')) { - args[args.indexOf('-o')] = '--out'; -} - -if (args.includes('-h')) { - args[args.indexOf('-h')] = '--help'; -} - -if (args.includes('-v')) { - args[args.indexOf('-v')] = '--version'; -} - -if (args.includes('-n')) { - args[args.indexOf('-n')] = '--no-module'; -} - -if (args.includes('-e')) { - args[args.indexOf('-e')] = '--electron'; -} - -if (args.includes('-l')) { - args[args.indexOf('-l')] = '--loader'; -} - -let loaderFilename; -let createLoader = false; - -if (args.includes('--loader')) { - createLoader = true; - const nextIndex = args.indexOf('--loader') + 1; - const nextItem = args[nextIndex]; - if (nextItem && nextItem[0] !== '-') { - loaderFilename = nextItem; - // remove the loader filename from the args so it - // isn't mistaken for a file to compile - args.splice(nextIndex, 1); - } -} - -if (args.includes('--no-loader')) { - createLoader = false; -} - -const program = { - dirname: __dirname, - filename: __filename, - nodeBin: process.argv[0], - flags: args.filter(arg => arg[0] === '-'), - files: args.filter(arg => arg[0] !== '-' && arg[1] !== '-') -}; - -if (program.flags.includes('--compile')) { - program.files.forEach(async function (filename) { - filename = path.resolve(filename); - - if (fs.existsSync(filename) && fs.statSync(filename).isFile()) { - const compileAsModule = !program.flags.includes('--no-module'); - const electron = program.flags.includes('--electron'); - - try { - await bytenode.compileFile({ filename, compileAsModule, electron, createLoader, loaderFilename }); - } catch (error) { - console.error(error); - } - } else { - console.error(`Error: Cannot find file '${filename}'.`); - } - }); - - if (program.files.length === 0) { - let script = ''; - - process.stdin.setEncoding('utf-8'); - - process.stdin.on('readable', () => { - const data = process.stdin.read(); - if (data !== null) { - script += data; - } - }); - - process.stdin.on('end', () => { - try { - if (program.flags.includes('--no-module')) { - process.stdout.write(bytenode.compileCode(script)); - } else { - process.stdout.write(bytenode.compileCode(wrap(script))); - } - } catch (error) { - console.error(error); - } - }); - } -} else if (program.flags.includes('--help')) { - console.log(` - Usage: bytenode [option] [ FILE... | - ] [arguments] - - Options: - -h, --help show help information. - -v, --version show bytenode version. - - -c, --compile [ FILE... | - ] compile stdin, a file, or a list of files - -n, --no-module compile without producing commonjs module - -e, --electron compile for Electron - - --no-loader do not create a loader file, conflicts with -l - -l, --loader [ FILE | PATTERN ] create a loader file and optionally define - loader filename or pattern using % as filename replacer - defaults to %.loader.js - - Examples: - - $ bytenode -c script.js compile \`script.js\` to \`script.jsc\`. - $ bytenode -c server.js app.js - $ bytenode -c src/*.js compile all \`.js\` files in \`src/\` directory. - - $ bytenode script.jsc [arguments] run \`script.jsc\` with arguments. - $ bytenode open Node REPL with bytenode pre-loaded. - - $ echo 'console.log("Hello");' | bytenode --compile - > hello.jsc - compile from stdin and save to \`hello.jsc\` -`); -} else if (program.flags.includes('--version') && program.flags.length === 1 && program.files.length === 0) { - const pkg = require('../package.json'); - console.log(pkg.name, pkg.version); - console.log('Node', process.versions.node); - if (process.versions.electron) { - console.log('Electron', process.versions.electron); - } -} else { - try { - spawnSync(program.nodeBin, [ - '-r', - path.resolve(__dirname, 'index.js') - ].concat(args), { - stdio: 'inherit' - }); - } catch (error) { - console.error(error); - } -} diff --git a/ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.d.ts b/ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.d.ts deleted file mode 100644 index 4813c4a..0000000 --- a/ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/// -export declare const compileCode: (javascriptCode: string) => Buffer; -export declare const compileElectronCode: (javascriptCode: string) => Promise; -export declare const runBytecode: (bytecodeBuffer: Buffer) => any; -interface BytenodeOptions { - filename: string; - output?: string; - compileAsModule?: boolean; - electron?: boolean; - createLoader?: boolean; - loaderFilename?: string; -} -export declare const compileFile: (args: BytenodeOptions | string, output?: string | undefined) => Promise; -export declare const runBytecodeFile: (filename: string) => any; -export declare function addLoaderFile(fileToLoad: string, loaderFilename?: string): void; -export declare function loaderCode(targetPath: string): string; -export {}; diff --git a/ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.js b/ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.js deleted file mode 100644 index 76ed918..0000000 --- a/ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.js +++ /dev/null @@ -1,343 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const vm = require('vm'); -const v8 = require('v8'); -const path = require('path'); -const Module = require('module'); -const fork = require('child_process').fork; - -v8.setFlagsFromString('--no-lazy'); - -if (Number.parseInt(process.versions.node, 10) >= 12) { - v8.setFlagsFromString('--no-flush-bytecode'); // Thanks to A-Parser (@a-parser) -} - -const COMPILED_EXTNAME = '.jsc'; - -/** - * Generates v8 bytecode buffer. - * @param {string} javascriptCode JavaScript source that will be compiled to bytecode. - * @returns {Buffer} The generated bytecode. - */ -const compileCode = function (javascriptCode) { - if (typeof javascriptCode !== 'string') { - throw new Error(`javascriptCode must be string. ${typeof javascriptCode} was given.`); - } - - const script = new vm.Script(javascriptCode, { - produceCachedData: true - }); - - const bytecodeBuffer = (script.createCachedData && script.createCachedData.call) - ? script.createCachedData() - : script.cachedData; - - return bytecodeBuffer; -}; - -/** - * This function runs the compileCode() function (above) - * via a child process usine Electron as Node - * @param {string} javascriptCode - * @returns {Promise} - returns a Promise which resolves in the generated bytecode. - */ -const compileElectronCode = function (javascriptCode) { - return new Promise((resolve, reject) => { - let data = Buffer.from([]); - - const electronPath = path.join('node_modules', 'electron', 'cli.js'); - if (!fs.existsSync(electronPath)) { - throw new Error('Electron not installed'); - } - const bytenodePath = path.join(__dirname, 'cli.js'); - - // create a subprocess in which we run Electron as our Node and V8 engine - // running Bytenode to compile our code through stdin/stdout - const proc = fork(electronPath, [bytenodePath, '--compile', '--no-module', '-'], { - env: { ELECTRON_RUN_AS_NODE: '1' }, - stdio: ['pipe', 'pipe', 'pipe', 'ipc'] - }); - - if (proc.stdin) { - proc.stdin.write(javascriptCode); - proc.stdin.end(); - } - - if (proc.stdout) { - proc.stdout.on('data', (chunk) => { - data = Buffer.concat([data, chunk]); - }); - proc.stdout.on('error', (err) => { - console.error(err); - }); - proc.stdout.on('end', () => { - resolve(data); - }); - } - - if (proc.stderr) { - proc.stderr.on('data', (chunk) => { - console.error('Error: ', chunk); - }); - proc.stderr.on('error', (err) => { - console.error('Error: ', err); - }); - } - - proc.addListener('message', (message) => console.log(message)); - proc.addListener('error', err => console.error(err)); - - proc.on('error', (err) => reject(err)); - proc.on('exit', () => { resolve(data); }); - }); -}; - -// TODO: rewrite this function -const fixBytecode = function (bytecodeBuffer) { - if (!Buffer.isBuffer(bytecodeBuffer)) { - throw new Error('bytecodeBuffer must be a buffer object.'); - } - - const dummyBytecode = compileCode('"ಠ_ಠ"'); - - if (process.version.startsWith('v8.8') || process.version.startsWith('v8.9')) { - // Node is v8.8.x or v8.9.x - dummyBytecode.slice(16, 20).copy(bytecodeBuffer, 16); - dummyBytecode.slice(20, 24).copy(bytecodeBuffer, 20); - } else if (process.version.startsWith('v12') || - process.version.startsWith('v13') || - process.version.startsWith('v14') || - process.version.startsWith('v15') || - process.version.startsWith('v16')) { - dummyBytecode.slice(12, 16).copy(bytecodeBuffer, 12); - } else { - dummyBytecode.slice(12, 16).copy(bytecodeBuffer, 12); - dummyBytecode.slice(16, 20).copy(bytecodeBuffer, 16); - } -}; - -// TODO: rewrite this function -const readSourceHash = function (bytecodeBuffer) { - if (!Buffer.isBuffer(bytecodeBuffer)) { - throw new Error('bytecodeBuffer must be a buffer object.'); - } - - if (process.version.startsWith('v8.8') || process.version.startsWith('v8.9')) { - // Node is v8.8.x or v8.9.x - // eslint-disable-next-line no-return-assign - return bytecodeBuffer.slice(12, 16).reduce((sum, number, power) => sum += number * Math.pow(256, power), 0); - } else { - // eslint-disable-next-line no-return-assign - return bytecodeBuffer.slice(8, 12).reduce((sum, number, power) => sum += number * Math.pow(256, power), 0); - } -}; - -/** - * Runs v8 bytecode buffer and returns the result. - * @param {Buffer} bytecodeBuffer The buffer object that was created using compileCode function. - * @returns {any} The result of the very last statement executed in the script. - */ -const runBytecode = function (bytecodeBuffer) { - if (!Buffer.isBuffer(bytecodeBuffer)) { - throw new Error('bytecodeBuffer must be a buffer object.'); - } - - fixBytecode(bytecodeBuffer); - - const length = readSourceHash(bytecodeBuffer); - - let dummyCode = ''; - - if (length > 1) { - dummyCode = '"' + '\u200b'.repeat(length - 2) + '"'; // "\u200b" Zero width space - } - - const script = new vm.Script(dummyCode, { - cachedData: bytecodeBuffer - }); - - if (script.cachedDataRejected) { - throw new Error('Invalid or incompatible cached data (cachedDataRejected)'); - } - - return script.runInThisContext(); -}; - -/** - * Compiles JavaScript file to .jsc file. - * @param {object|string} args - * @param {string} args.filename The JavaScript source file that will be compiled - * @param {boolean} [args.compileAsModule=true] If true, the output will be a commonjs module - * @param {string} [args.output=filename.jsc] The output filename. Defaults to the same path and name of the original file, but with `.jsc` extension. - * @param {boolean} [args.electron=false] If true, compile code for Electron (which needs to be installed) - * @param {boolean} [args.createLoader=false] If true, create a loader file. - * @param {boolean} [args.loaderFilename='%.loader.js'] Filename or pattern for generated loader files. Defaults to originalFilename.loader.js. Use % as a substitute for originalFilename. - * @param {string} [output] The output filename. (Deprecated: use args.output instead) - * @returns {Promise} A Promise which returns the compiled filename - */ -const compileFile = async function (args, output) { - let filename, compileAsModule, electron, createLoader, loaderFilename; - - if (typeof args === 'string') { - filename = args; - compileAsModule = true; - electron = false; - createLoader = false; - } else if (typeof args === 'object') { - filename = args.filename; - compileAsModule = args.compileAsModule !== false; - electron = args.electron; - createLoader = args.createLoader; - loaderFilename = args.loaderFilename; - if (loaderFilename) createLoader = true; - } - - if (typeof filename !== 'string') { - throw new Error(`filename must be a string. ${typeof filename} was given.`); - } - - // @ts-ignore - const compiledFilename = args.output || output || filename.slice(0, -3) + COMPILED_EXTNAME; - - if (typeof compiledFilename !== 'string') { - throw new Error(`output must be a string. ${typeof compiledFilename} was given.`); - } - - const javascriptCode = fs.readFileSync(filename, 'utf-8'); - - let code; - - if (compileAsModule) { - code = Module.wrap(javascriptCode.replace(/^#!.*/, '')); - } else { - code = javascriptCode.replace(/^#!.*/, ''); - } - - let bytecodeBuffer; - - if (electron) { - bytecodeBuffer = await compileElectronCode(code); - } else { - bytecodeBuffer = compileCode(code); - } - - fs.writeFileSync(compiledFilename, bytecodeBuffer); - - if (createLoader) { - addLoaderFile(compiledFilename, loaderFilename); - } - - return compiledFilename; -}; - -/** - * Runs .jsc file and returns the result. - * @param {string} filename - * @returns {any} The result of the very last statement executed in the script. - */ -const runBytecodeFile = function (filename) { - if (typeof filename !== 'string') { - throw new Error(`filename must be a string. ${typeof filename} was given.`); - } - - const bytecodeBuffer = fs.readFileSync(filename); - - return runBytecode(bytecodeBuffer); -}; - -Module._extensions[COMPILED_EXTNAME] = function (fileModule, filename) { - const bytecodeBuffer = fs.readFileSync(filename); - - fixBytecode(bytecodeBuffer); - - const length = readSourceHash(bytecodeBuffer); - - let dummyCode = ''; - - if (length > 1) { - dummyCode = '"' + '\u200b'.repeat(length - 2) + '"'; // "\u200b" Zero width space - } - - const script = new vm.Script(dummyCode, { - filename: filename, - lineOffset: 0, - displayErrors: true, - cachedData: bytecodeBuffer - }); - - if (script.cachedDataRejected) { - throw new Error('Invalid or incompatible cached data (cachedDataRejected)'); - } - - /* - This part is based on: - https://github.com/zertosh/v8-compile-cache/blob/7182bd0e30ab6f6421365cee0a0c4a8679e9eb7c/v8-compile-cache.js#L158-L178 - */ - - function require (id) { - return fileModule.require(id); - } - require.resolve = function (request, options) { - // @ts-ignore - return Module._resolveFilename(request, fileModule, false, options); - }; - if (process.mainModule) { - require.main = process.mainModule; - } - - // @ts-ignore - require.extensions = Module._extensions; - // @ts-ignore - require.cache = Module._cache; - - const compiledWrapper = script.runInThisContext({ - filename: filename, - lineOffset: 0, - columnOffset: 0, - displayErrors: true - }); - - const dirname = path.dirname(filename); - - const args = [fileModule.exports, require, fileModule, filename, dirname, process, global]; - - return compiledWrapper.apply(fileModule.exports, args); -}; - -/** - * Add a loader file for a given .jsc file - * @param {String} fileToLoad path of the .jsc file we're loading - * @param {String} loaderFilename - optional pattern or name of the file to write - defaults to filename.loader.js. Patterns: "%" represents the root name of .jsc file. - */ -const addLoaderFile = function (fileToLoad, loaderFilename) { - let loaderFilePath; - if (typeof loaderFilename === 'boolean' || loaderFilename === undefined || loaderFilename === '') { - loaderFilePath = fileToLoad.replace('.jsc', '.loader.js'); - } else { - loaderFilename = loaderFilename.replace('%', path.parse(fileToLoad).name); - loaderFilePath = path.join(path.dirname(fileToLoad), loaderFilename); - } - const relativePath = path.relative(path.dirname(loaderFilePath), fileToLoad); - const code = loaderCode('./' + relativePath); - fs.writeFileSync(loaderFilePath, code); -}; - -const loaderCode = function (targetPath) { - return ` - require('bytenode'); - require('${targetPath}'); - `; -}; - -global.bytenode = { - compileCode, - compileFile, - compileElectronCode, - runBytecode, - runBytecodeFile, - addLoaderFile, - loaderCode -}; - -module.exports = global.bytenode; diff --git a/ZEreshkigal-AllinOneMod/node_modules/bytenode/package.json b/ZEreshkigal-AllinOneMod/node_modules/bytenode/package.json deleted file mode 100644 index 38a8de9..0000000 --- a/ZEreshkigal-AllinOneMod/node_modules/bytenode/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "_from": "bytenode", - "_id": "bytenode@1.3.3", - "_inBundle": false, - "_integrity": "sha512-N/d5zwUSsl7WbwY3xVmh8TzDjW4PyVxbb0RQdwc80PKs97a99WVfO+k/dfdG49Xr4NQyab8s6lQJd4tdUo7X1Q==", - "_location": "/bytenode", - "_phantomChildren": {}, - "_requested": { - "type": "tag", - "registry": true, - "raw": "bytenode", - "name": "bytenode", - "escapedName": "bytenode", - "rawSpec": "", - "saveSpec": null, - "fetchSpec": "latest" - }, - "_requiredBy": [ - "#USER", - "/" - ], - "_resolved": "https://registry.npmjs.org/bytenode/-/bytenode-1.3.3.tgz", - "_shasum": "cec8ef591647baa9ba6e8059c29625f95372fcc3", - "_spec": "bytenode", - "_where": "E:\\Github_Repositories\\EreshkigalMods_reworked\\AdvancedBotLoadouts_new\\ZEreshkigal-AdvancedBotLoadouts", - "author": { - "name": "Osama Abbas", - "email": "pw.osama@gmail.com" - }, - "bin": { - "bytenode": "lib/cli.js" - }, - "bugs": { - "url": "https://github.com/bytenode/bytenode/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "A minimalist bytecode compiler for Node.js", - "devDependencies": { - "electron": "^12.0.9", - "mocha": "^8.4.0" - }, - "files": [ - "lib" - ], - "homepage": "https://github.com/bytenode/bytenode#readme", - "keywords": [ - "bytenode", - "bytecode", - "v8-snapshots", - "compile", - "compiler" - ], - "license": "MIT", - "main": "lib/index.js", - "name": "bytenode", - "repository": { - "type": "git", - "url": "git+https://github.com/bytenode/bytenode.git" - }, - "scripts": { - "test": "mocha ./test/*.test.js" - }, - "types": "lib/index.d.ts", - "version": "1.3.3" -} diff --git a/ZEreshkigal-AllinOneMod/package.js b/ZEreshkigal-AllinOneMod/package.js new file mode 100644 index 0000000..200422d --- /dev/null +++ b/ZEreshkigal-AllinOneMod/package.js @@ -0,0 +1,32 @@ +/* +エレシュキガル +*/ + +"use strict"; + +//AIO Modules +const Other = require("./src/other.js"); +const Items = require("./src/items.js"); +const Raids = require("./src/raids.js"); +const Traders = require("./src/traders.js"); +const Players = require("./src/player.js"); +const Warnings = require("./src/warnings.js"); + + +class Ereshkigal { + constructor() { + const mod = require("./package.json") + const config = require("./config/config.json"); + Logger.info(`Loading: ${mod.name} : ${mod.version}`); + ModLoader.onLoad["AioMod-items"] = Items.ApplyItemsModifications; + ModLoader.onLoad["AioMod-raids"] = Raids.ApplyRaidsModifications; + ModLoader.onLoad["AioMod-traders"] = Traders.ApplyTradersModifications; + ModLoader.onLoad["AioMod-players"] = Players.ApplyPlayerModifications; + ModLoader.onLoad["AioMod-other"] = Other.ApplyVariousModifications; + if (config.other.ShowModLogs === true) { + ModLoader.onLoad["AioMod-warnings"] = Warnings.SendUserInformations; + } + } +} + +module.exports = new Ereshkigal(); \ No newline at end of file diff --git a/ZEreshkigal-AllinOneMod/package.jsc b/ZEreshkigal-AllinOneMod/package.jsc deleted file mode 100644 index 70796b6..0000000 Binary files a/ZEreshkigal-AllinOneMod/package.jsc and /dev/null differ diff --git a/ZEreshkigal-AllinOneMod/package.json b/ZEreshkigal-AllinOneMod/package.json index 931a4fa..a0123b2 100644 --- a/ZEreshkigal-AllinOneMod/package.json +++ b/ZEreshkigal-AllinOneMod/package.json @@ -1,10 +1,10 @@ { "name": "AllinOneMod", "author": "Ereshkigal", - "version": "2.2.1", + "version": "2.3.0", "license": "NCSA Open Source", "dependencies": { - "CoreMod": "2.0.1" + "CoreMod": "2.1.0" }, - "main": "loader.js" + "main": "package.js" } \ No newline at end of file diff --git a/ZEreshkigal-AllinOneMod/src/items.js b/ZEreshkigal-AllinOneMod/src/items.js index 1255df1..51cff93 100644 --- a/ZEreshkigal-AllinOneMod/src/items.js +++ b/ZEreshkigal-AllinOneMod/src/items.js @@ -10,6 +10,7 @@ class itemsModification { const config = require("../config/config.json"); const database = DatabaseServer.tables; const items = database.templates.items; + const global = database.globals const CoreMod = require("../../CoreMod/src/Core.js") const OtherModitication = require("./other.js"); @@ -63,39 +64,68 @@ class itemsModification { } } if (config.items.RemoveItemsDurabilityBurn === true) { + + Logger.log("RemoveItemsDurabilityBurn: You aren't on 12.11 yet, disable that :)") + /* if (base._props.DurabilityBurnModificator) { CoreMod.EditSimpleItemData(id, "DurabilityBurnModificator", 0) } + */ + } + if (config.items.RemoveBulletsWeaponDurabilityDamage === true) { + + if (base._props.Deterioration) { + CoreMod.EditSimpleItemData(id, "Deterioration", 0) + } + } - if (config.items.StackableBarters === true) { + if (config.items.StackableBarters.activated === true) { switch (base._parent) { case "57864ee62459775490116fc1": // Battery - CoreMod.EditSimpleItemData(id, "StackMaxSize", 5) + if (typeof config.items.StackableBarters.Battery === "number" && config.items.StackableBarters.Battery != 0) { + CoreMod.EditSimpleItemData(id, "StackMaxSize", config.items.StackableBarters.Battery) + } break; case "57864ada245977548638de91": //Building materials - CoreMod.EditSimpleItemData(id, "StackMaxSize", 100) + if (typeof config.items.StackableBarters["Building materials"] === "number" && config.items.StackableBarters["Building materials"] != 0) { + CoreMod.EditSimpleItemData(id, "StackMaxSize", config.items.StackableBarters["Building materials"]) + } break; case "57864a66245977548f04a81f": //Electronics - CoreMod.EditSimpleItemData(id, "StackMaxSize", 150) + if (typeof config.items.StackableBarters.Electronics === "number" && config.items.StackableBarters.Electronics != 0) { + CoreMod.EditSimpleItemData(id, "StackMaxSize", config.items.StackableBarters.Electronics) + } break; case "57864c322459775490116fbf": //Household goods - CoreMod.EditSimpleItemData(id, "StackMaxSize", 50) + if (typeof config.items.StackableBarters["Household goods"] === "number" && config.items.StackableBarters["Household goods"] != 0) { + CoreMod.EditSimpleItemData(id, "StackMaxSize", config.items.StackableBarters["Household goods"]) + } break; case "57864a3d24597754843f8721": // Jewelry - CoreMod.EditSimpleItemData(id, "StackMaxSize", 25) + if (typeof config.items.StackableBarters.Jewelry === "number" && config.items.StackableBarters.Jewelry != 0) { + CoreMod.EditSimpleItemData(id, "StackMaxSize", config.items.StackableBarters.Jewelry) + } break; case "57864c8c245977548867e7f1": //Medical supplies - CoreMod.EditSimpleItemData(id, "StackMaxSize", 65) + if (typeof config.items.StackableBarters.Jewelry === "number" && config.items.StackableBarters["Medical supplies"] != 0) { + CoreMod.EditSimpleItemData(id, "StackMaxSize", config.items.StackableBarters["Medical supplies"]) + } break; case "57864e4c24597754843f8723": //Flammable - CoreMod.EditSimpleItemData(id, "StackMaxSize", 100) + if (typeof config.items.StackableBarters.Flammable === "number" && config.items.StackableBarters.Flammable != 0) { + CoreMod.EditSimpleItemData(id, "StackMaxSize", config.items.StackableBarters.Flammable) + } break; case "57864bb7245977548b3b66c2": //Tools - CoreMod.EditSimpleItemData(id, "StackMaxSize", 120) + if (typeof config.items.StackableBarters.Tools === "number" && config.items.StackableBarters.Tools != 0) { + CoreMod.EditSimpleItemData(id, "StackMaxSize", config.items.StackableBarters.Tools) + } break; case "590c745b86f7743cc433c5f2": //Other - CoreMod.EditSimpleItemData(id, "StackMaxSize", 150) + if (typeof config.items.StackableBarters.Other === "number" &&config.items.StackableBarters.Other != 0) { + CoreMod.EditSimpleItemData(id, "StackMaxSize", config.items.StackableBarters.Other) + } break; } @@ -181,7 +211,139 @@ class itemsModification { } } - } //End of the loot for items modifications + } //End of the loop for items modifications + + if (config.other["Pre-Wipe events"]["Make Obdolbos Powerfull"] === true) { + const obdolbosBuff = [ + { + "BuffType": "StaminaRate", + "Chance": 1, + "Delay": 1, + "Duration": 1800, + "Value": 0.5, + "AbsoluteValue": true, + "SkillName": "" + }, + { + "BuffType": "SkillRate", + "Chance": 1, + "Delay": 1, + "Duration": 1800, + "Value": 10, + "AbsoluteValue": true, + "SkillName": "Endurance" + }, + { + "BuffType": "SkillRate", + "Chance": 1, + "Delay": 1, + "Duration": 1800, + "Value": 10, + "AbsoluteValue": true, + "SkillName": "Strength" + }, + { + "BuffType": "SkillRate", + "Chance": 1, + "Delay": 1, + "Duration": 1800, + "Value": 20, + "AbsoluteValue": true, + "SkillName": "StressResistance" + }, + { + "BuffType": "SkillRate", + "Chance": 1, + "Delay": 1, + "Duration": 1800, + "Value": 20, + "AbsoluteValue": true, + "SkillName": "Charisma" + }, + { + "BuffType": "SkillRate", + "Chance": 1, + "Delay": 1, + "Duration": 1800, + "Value": -20, + "AbsoluteValue": true, + "SkillName": "Memory" + }, + { + "BuffType": "SkillRate", + "Chance": 1, + "Delay": 1, + "Duration": 1800, + "Value": -20, + "AbsoluteValue": true, + "SkillName": "Intellect" + }, + { + "BuffType": "SkillRate", + "Chance": 1, + "Delay": 1, + "Duration": 1800, + "Value": -20, + "AbsoluteValue": true, + "SkillName": "Attention" + }, + { + "BuffType": "Pain", + "Chance": 0.25, + "Delay": 1, + "Duration": 1800, + "Value": 0, + "AbsoluteValue": false, + "SkillName": "" + }, + { + "BuffType": "StomachBloodloss", + "Chance": 0.25, + "Delay": 1, + "Duration": 1800, + "Value": 0, + "AbsoluteValue": false, + "SkillName": "" + }, + { + "BuffType": "HydrationRate", + "Chance": 0.25, + "Delay": 1, + "Duration": 1800, + "Value": -0.05, + "AbsoluteValue": true, + "SkillName": "" + }, + { + "BuffType": "EnergyRate", + "Chance": 0.25, + "Delay": 1, + "Duration": 1800, + "Value": -0.05, + "AbsoluteValue": true, + "SkillName": "" + }, + { + "BuffType": "DamageModifier", + "Chance": 0.25, + "Delay": 1, + "Duration": 1800, + "Value": 0.2, + "AbsoluteValue": false, + "SkillName": "" + }, + { + "BuffType": "QuantumTunnelling", + "Chance": 0.25, + "Delay": 1, + "Duration": 1800, + "Value": 0, + "AbsoluteValue": false, + "SkillName": "" + }] + global.config.Health.Effects.Stimulator.Buffs.Buffs_Obdolbos = obdolbosBuff + } + //Individual items proprety changes if (config.items.ChangeIndividualItemProperty.activated === true) { diff --git a/ZEreshkigal-AllinOneMod/src/other.js b/ZEreshkigal-AllinOneMod/src/other.js index 9292586..95210aa 100644 --- a/ZEreshkigal-AllinOneMod/src/other.js +++ b/ZEreshkigal-AllinOneMod/src/other.js @@ -48,13 +48,27 @@ class OtherModifications { Logger.log("[" + prefix + "]" + text + " " + suffix, "white", "red") } - static IsStolenModsLoaded() { - if (ModLoader.onLoad.SVM) { - this.CustomWarning("AIOMod","You have loaded a stolen mod on your server. Please remove SVM from your modlist in order to use this mod.") - return true; - } else { - return false + static SpawnRaidersEverywhere(url, info, sessionID){ + for (let type in info.conditions) { + let roles = info.conditions[type] + roles.Role = "pmcBot" + roles.Difficulty = "impossible" } + return HttpResponse.getBody(BotController.generate(info)); + } + static CreateBossWave(role,chance,followers,escortAmount,zones){ + const newWave = { + "BossName": role, + "BossChance": chance, + "BossZone": zones, + "BossPlayer": false, + "BossDifficult": "normal", + "BossEscortType": followers, + "BossEscortDifficult": "normal", + "BossEscortAmount": escortAmount, + "Time": -1 + } + return newWave } } diff --git a/ZEreshkigal-AllinOneMod/src/player.js b/ZEreshkigal-AllinOneMod/src/player.js index 5ccac44..37a1a93 100644 --- a/ZEreshkigal-AllinOneMod/src/player.js +++ b/ZEreshkigal-AllinOneMod/src/player.js @@ -62,8 +62,7 @@ class PlayerModifications { globals.SkillFatiguePerPoint = 0; globals.SkillFreshEffectiveness = 1.0; } else if (config.player.DisableSkillFatigue === "Custom") { - Logger.info("AllinOne Mod: DisableSkillFatigue activated on Custom settings"); - Logger.info("AllinOne Mod: Fatigue Settings: MinEffect: " + config.player.SkillMinEffectiveness + " FatiguePerPoint: " + config.player.SkillFatiguePerPoint + " FreshEffect: " + config.player.SkillFreshEffectiveness + " FreshPoints: " + config.player.SkillFreshPoints + " PointsBeforeFatigue: " + config.player.SkillPointsBeforeFatigue + " FatigueResetTime: " + config.player.SkillFatigueReset); + globals.SkillMinEffectiveness = config.player.SkillMinEffectiveness; globals.SkillFatiguePerPoint = config.player.SkillFatiguePerPoint; globals.SkillFreshEffectiveness = config.player.SkillFreshEffectiveness; @@ -71,7 +70,6 @@ class PlayerModifications { globals.SkillPointsBeforeFatigue = config.player.SkillPointsBeforeFatigue; globals.SkillFatigueReset = config.player.SkillFatigueReset; } else if (config.player.DisableSkillFatigue !== "Custom" && config.player.DisableSkillFatigue !== false && config.player.DisableSkillFatigue !== true) { - Logger.warning("DisableSkillFatigue variable is incorrect, please read carefully the description") } diff --git a/ZEreshkigal-AllinOneMod/src/raids.js b/ZEreshkigal-AllinOneMod/src/raids.js index 657a49f..eca84cf 100644 --- a/ZEreshkigal-AllinOneMod/src/raids.js +++ b/ZEreshkigal-AllinOneMod/src/raids.js @@ -10,6 +10,7 @@ class RaidsModifications { const database = DatabaseServer.tables; const hideout = database.hideout const locations = database.locations; + const botList = database.bots.types const OtherModitication = require("./other.js"); //Change hideout fuel consumption @@ -184,6 +185,69 @@ class RaidsModifications { } } + if(config.other["Pre-Wipe events"]["Raiders on all maps"] === true){ + HttpRouter.onStaticRoute["/client/game/bot/generate"]["aki"] = OtherModitication.SpawnRaidersEverywhere.bind(this); + + } + + if(config.other["Pre-Wipe events"]["Killa on factory"] === true){ + const KillaWave = OtherModitication.CreateBossWave("bossKilla",100,"followerBully",0,locations["factory4_day"].base.OpenZones) + locations["factory4_day"].base.BossLocationSpawn.push(KillaWave) + locations["factory4_night"].base.BossLocationSpawn.push(KillaWave) + } + + if(config.other["Pre-Wipe events"]["All bosses on reserve"] === true){ + let bossWave = OtherModitication.CreateBossWave("bossKilla",100,"followerBully",0,locations["rezervbase"].base.OpenZones) + locations["rezervbase"].base.BossLocationSpawn.push(bossWave) + bossWave = OtherModitication.CreateBossWave("bossBully",100,"followerBully",4,locations["rezervbase"].base.OpenZones) + locations["rezervbase"].base.BossLocationSpawn.push(bossWave) + bossWave = OtherModitication.CreateBossWave("bossKojaniy",100,"followerKojaniy",2,locations["rezervbase"].base.OpenZones) + locations["rezervbase"].base.BossLocationSpawn.push(bossWave) + bossWave = OtherModitication.CreateBossWave("bossSanitar",100,"followerSanitar",2,locations["rezervbase"].base.OpenZones) + locations["rezervbase"].base.BossLocationSpawn.push(bossWave) + } + + if(config.other["Pre-Wipe events"]["Gluhkar on labs"] === true){ + const GlugluWave = { + "BossName": "bossGluhar", + "BossChance": 43, + "BossZone": "ZoneRailStrorage,ZoneRailStrorage,ZoneRailStrorage,ZonePTOR1,ZonePTOR2,ZoneBarrack,ZoneBarrack,ZoneBarrack,ZoneSubStorage", + "BossPlayer": false, + "BossDifficult": "normal", + "BossEscortType": "followerGluharAssault", + "BossEscortDifficult": "normal", + "BossEscortAmount": "0", + "Time": -1, + "TriggerId": "", + "TriggerName": "", + "Supports": [ + { + "BossEscortType": "followerGluharAssault", + "BossEscortDifficult": [ + "normal" + ], + "BossEscortAmount": "2" + }, + { + "BossEscortType": "followerGluharSecurity", + "BossEscortDifficult": [ + "normal" + ], + "BossEscortAmount": "2" + }, + { + "BossEscortType": "followerGluharScout", + "BossEscortDifficult": [ + "normal" + ], + "BossEscortAmount": "2" + } + ] + } + GlugluWave.BossZone = locations["laboratory"].base.OpenZones + locations["laboratory"].base.BossLocationSpawn.push(GlugluWave) + } + //Extend raids to 16 hours if (config.raids.ExtendedRaid === true) { Logger.info("AllinOne Mod: Extended Raid activated"); diff --git a/ZEreshkigal-AllinOneMod/src/traders.js b/ZEreshkigal-AllinOneMod/src/traders.js index 5b50168..d10d96c 100644 --- a/ZEreshkigal-AllinOneMod/src/traders.js +++ b/ZEreshkigal-AllinOneMod/src/traders.js @@ -81,6 +81,23 @@ class TradersModifications { } } + //All cheap items on traders + if(config.other["Pre-Wipe events"]["All traders sells cheap items"] === true){ + for(const trader in traders){ + for(const assort in traders[trader].assort.barter_scheme){ + let itemScheme = traders[trader].assort.barter_scheme[assort] + if(itemScheme[0][0]._tpl === "5449016a4bdc2d6f028b456f"){ //Roubles + itemScheme[0][0].count = itemScheme[0][0].count * 0.01 + }else if(itemScheme[0][0]._tpl === "5696686a4bdc2da3298b456a"){ //Dollars + itemScheme[0][0].count = itemScheme[0][0].count * 0.1 + }else if(itemScheme[0][0]._tpl === "5696686a4bdc2da3298b456a"){ //euros + itemScheme[0][0].count = itemScheme[0][0].count * 0.05 + } + } + } + } + + //Change insurances return times if (config.traders.InsuranceTime.activated === true) { Logger.info("AllinOne Mod: InsuranceTime activated"); @@ -105,9 +122,10 @@ class TradersModifications { function lvlUp(traderID, sessionID) { if (config.traders.PreventFenceMastering === true) { - if (traderID === "579dc571d53a0658a154fbec") { - continue; - } + Logger.error("AIOMod : PreventFenceMastering isn't available yet, it's for 12.11 so disable it :)") + /* + if (traderID === "579dc571d53a0658a154fbec") {} + */ } let pmcData = ProfileController.getPmcProfile(sessionID); let loyaltyLevels = DatabaseServer.tables.traders[traderID].base.loyalty.loyaltyLevels; diff --git a/ZEreshkigal-AllinOneMod/src/warnings.js b/ZEreshkigal-AllinOneMod/src/warnings.js index 4946059..a9f5b36 100644 --- a/ZEreshkigal-AllinOneMod/src/warnings.js +++ b/ZEreshkigal-AllinOneMod/src/warnings.js @@ -23,7 +23,7 @@ class Warnings { if (typeof config.items.AllExaminedItems !== "boolean") { OtherModitication.CustomWarning("AIO Mod", errors.items.AllExaminedItems) } - if (typeof config.items.StackableBarters !== "boolean") { + if (typeof config.items.StackableBarters.activated !== "boolean") { OtherModitication.CustomWarning("AIO Mod", errors.items.StackableBarters) } if (typeof config.items.RemoveAllGearPenalties !== "boolean") { @@ -182,6 +182,24 @@ class Warnings { if (config.player.DisableSkillFatigue !== "Custom" && config.player.DisableSkillFatigue !== false && config.player.DisableSkillFatigue !== true) { OtherModitication.CustomWarning("AIO Mod", errors.player.DisableSkillFatigue) } + if (typeof config.other["Pre-Wipe events"]["Raiders on all maps"] !== "boolean") { + OtherModitication.CustomWarning("AIO Mod", errors.other["Pre-Wipe events"]["Raiders on all maps"]) + } + if (typeof config.other["Pre-Wipe events"]["Killa on factory"] !== "boolean") { + OtherModitication.CustomWarning("AIO Mod", errors.other["Pre-Wipe events"]["Killa on factory"]) + } + if (typeof config.other["Pre-Wipe events"]["All bosses on reserve"] !== "boolean") { + OtherModitication.CustomWarning("AIO Mod", errors.other["Pre-Wipe events"]["All bosses on reserve"]) + } + if (typeof config.other["Pre-Wipe events"]["All traders sells cheap items"] !== "boolean") { + OtherModitication.CustomWarning("AIO Mod", errors.other["Pre-Wipe events"]["All traders sells cheap items"]) + } + if (typeof config.other["Pre-Wipe events"]["Make Obdolbos Powerfull"] !== "boolean") { + OtherModitication.CustomWarning("AIO Mod", errors.other["Pre-Wipe events"]["Make Obdolbos Powerfull"]) + } + if (typeof config.other["Pre-Wipe events"]["Gluhkar on labs"] !== "boolean") { + OtherModitication.CustomWarning("AIO Mod", errors.other["Pre-Wipe events"]["Gluhkar on labs"]) + } /////// Activation notices if (config.items.RemoveKeysUsageNumber === true) { Logger.info("AllinOne Mod: RemoveKeysUsageNumber activated"); @@ -313,8 +331,8 @@ class Warnings { if (config.traders.AllTraders4Stars === true) { Logger.info("AllInOne Mod: AllSkillsMaster activated") } - if (config.items.StackableBarters === true) { - Logger.info("AllInOne Mod: StackableBarters activated") + if (config.items.StackableBarters.activated === true) { + Logger.info("AllInOne Mod: StackableBarters activated and applied") } if (config.items.RemoveAllGearPenalties === true) { Logger.info("AllInOne Mod: RemoveAllGearPenalties activated") @@ -338,6 +356,36 @@ class Warnings { Logger.info("AllinOne Mod: DisableSkillFatigue activated on Custom settings"); Logger.info(`AllinOne Mod: Fatigue Settings: MinEffect: ${config.player.SkillMinEffectiveness} FatiguePerPoint: ${config.player.SkillFatiguePerPoint} FreshEffect: ${config.player.SkillFreshEffectiveness} FreshPoints: ${config.player.SkillFreshPoints} PointsBeforeFatigue: ${config.player.SkillPointsBeforeFatigue} FatigueResetTime: ${config.player.SkillFatigueReset}`); } + if (config.other["Pre-Wipe events"]["Raiders on all maps"] === true) { + Logger.info("AllinOne Mod: Prewipe event activated: Raiders on all maps"); + } + if (config.other["Pre-Wipe events"]["Killa on factory"] === true) { + Logger.info("AllinOne Mod: Prewipe event activated: Killa on factory"); + } + if (config.other["Pre-Wipe events"]["All bosses on reserve"] === true) { + Logger.info("AllinOne Mod: Prewipe event activated: All bosses on reserve"); + } + if (config.other["Pre-Wipe events"]["All traders sells cheap items"] === true) { + Logger.info("AllinOne Mod: Prewipe event activated: All traders sells cheap items"); + } + if (config.other["Pre-Wipe events"]["Make Obdolbos Powerfull"] === true) { + Logger.info("AllinOne Mod: Prewipe event activated: Make Obdolbos Powerfull"); + } + if (config.other["Pre-Wipe events"]["Gluhkar on labs"] === true) { + Logger.info("AllinOne Mod: Prewipe event activated: Gluhkar on labs"); + } + if (config.traders.PreventFenceMastering === true) { + Logger.info("AllinOne Mod: PreventFenceMastering isn't available yet, it's for 12.11 so disable it :)"); + } + if (config.player.RemoveScavKarma === true) { + Logger.info("AllinOne Mod: RemoveScavKarma activated"); + } + if (config.items.RemoveItemsDurabilityBurn === true) { + Logger.info("AllinOne Mod: RemoveItemsDurabilityBurn activated"); + } + if (config.items.RemoveBulletsWeaponDurabilityDamage === true) { + Logger.info("AllinOne Mod: RemoveBulletsWeaponDurabilityDamage activated"); + } } }