AIO 2.3.0 update
Fix MaxTraderLevel Fix ExamineExperience Removed leftover log Added: RemoveDurabilityBurnModifier Prevent scav karma gain/lose Prevent mastering Fence option (avoiding getting scavs karma bonuses) Pre-wipes events Improvement of stackable barters
This commit is contained in:
parent
620f6b7626
commit
2350e19ef0
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,4 +1,2 @@
|
||||
|
||||
ZEreshkigal-AllinOneMod-1.10.0.zip
|
||||
ZEreshkigal-AllinOneMod/obfuscating.bat
|
||||
ZEreshkigal-AllinOneMod/package.js
|
||||
*.zip
|
||||
|
@ -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
|
||||
}
|
||||
}
|
@ -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."
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
|
||||
require('bytenode');
|
||||
require('./package.jsc');
|
||||
|
15
ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode
generated
vendored
15
ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode
generated
vendored
@ -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
|
17
ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.cmd
generated
vendored
17
ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.cmd
generated
vendored
@ -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
|
18
ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.ps1
generated
vendored
18
ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.ps1
generated
vendored
@ -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
|
21
ZEreshkigal-AllinOneMod/node_modules/bytenode/LICENSE
generated
vendored
21
ZEreshkigal-AllinOneMod/node_modules/bytenode/LICENSE
generated
vendored
@ -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.
|
270
ZEreshkigal-AllinOneMod/node_modules/bytenode/README.md
generated
vendored
270
ZEreshkigal-AllinOneMod/node_modules/bytenode/README.md
generated
vendored
@ -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\<Buffer\>}
|
||||
|
||||
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\<Buffer\>} 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\<string\>}
|
||||
|
||||
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\<string\>}: 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.
|
157
ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/cli.js
generated
vendored
157
ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/cli.js
generated
vendored
@ -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);
|
||||
}
|
||||
}
|
17
ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.d.ts
generated
vendored
17
ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.d.ts
generated
vendored
@ -1,17 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
export declare const compileCode: (javascriptCode: string) => Buffer;
|
||||
export declare const compileElectronCode: (javascriptCode: string) => Promise<Buffer>;
|
||||
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<string>;
|
||||
export declare const runBytecodeFile: (filename: string) => any;
|
||||
export declare function addLoaderFile(fileToLoad: string, loaderFilename?: string): void;
|
||||
export declare function loaderCode(targetPath: string): string;
|
||||
export {};
|
343
ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.js
generated
vendored
343
ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.js
generated
vendored
@ -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<Buffer>} - 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<string>} 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;
|
66
ZEreshkigal-AllinOneMod/node_modules/bytenode/package.json
generated
vendored
66
ZEreshkigal-AllinOneMod/node_modules/bytenode/package.json
generated
vendored
@ -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"
|
||||
}
|
32
ZEreshkigal-AllinOneMod/package.js
Normal file
32
ZEreshkigal-AllinOneMod/package.js
Normal file
@ -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();
|
Binary file not shown.
@ -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"
|
||||
}
|
@ -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) {
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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")
|
||||
|
||||
}
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user