2.2.0 upload
This commit is contained in:
commit
94b4e61228
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
ZEreshkigal-AllinOneMod-1.10.0.zip
|
||||||
|
ZEreshkigal-AllinOneMod/obfuscating.bat
|
||||||
|
ZEreshkigal-AllinOneMod/package.js
|
BIN
Documentation_AIO.docx
Normal file
BIN
Documentation_AIO.docx
Normal file
Binary file not shown.
32
LICENSE
Normal file
32
LICENSE
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
Copyright (c) 2020 Ereshkigal. All rights reserved.
|
||||||
|
|
||||||
|
Developed by: SPT-Aki
|
||||||
|
Ereshkigal
|
||||||
|
www.sp-tarkov.com
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation files
|
||||||
|
(the "Software"), to deal with 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:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimers.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimers in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
* Neither the names of Ereshkigal, SPT-Aki nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this Software without specific prior written permission.
|
||||||
|
|
||||||
|
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
|
||||||
|
CONTRIBUTORS 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 WITH
|
||||||
|
THE SOFTWARE.
|
49
README.md
Normal file
49
README.md
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
### This mod is designated for SPT-Aki R4 only, dont use it for lower versions.
|
||||||
|
## What this mod do ?
|
||||||
|
This mod is merging these following mods into one mod that you can configure:
|
||||||
|
|
||||||
|
* AllItemExamined
|
||||||
|
* NoItemWeight
|
||||||
|
* IncreasedAmmoStack
|
||||||
|
* Instant Hideout crafting
|
||||||
|
* Instant hideout construction
|
||||||
|
* Instant scav case
|
||||||
|
* Cheaper scav case
|
||||||
|
* EquipRigsWithArmor
|
||||||
|
* IncreasedMoneyStack
|
||||||
|
* AllQuestAvailable
|
||||||
|
* UnlimitedStamina
|
||||||
|
* Disable SkillFatigue
|
||||||
|
* Change maximum stamina
|
||||||
|
* Remove scav timer
|
||||||
|
* Change maps loot multipliers
|
||||||
|
* Change Therapist healing price rate
|
||||||
|
* Change flea market lvl
|
||||||
|
* Change skill progression rate
|
||||||
|
* All clothing free
|
||||||
|
* All clothing cross-side
|
||||||
|
* Extended raid time
|
||||||
|
* Remove inraid restrictions
|
||||||
|
* Change insurances times
|
||||||
|
|
||||||
|
and more i'm forgetting (check the config file for all the features)
|
||||||
|
|
||||||
|
This mod let you choose which of these mod goal you want to apply, in short you can:
|
||||||
|
|
||||||
|
* *Activate AllItemsExamined with IncreasedAmmoStack
|
||||||
|
* *Activate only NoItemWeight
|
||||||
|
* *Activate all the three mods
|
||||||
|
|
||||||
|
**Without conflicting each other.**
|
||||||
|
|
||||||
|
## Find informations and support about Ereshkigal's mods at:
|
||||||
|
https://www.guilded.gg/ereshkigalmods/
|
||||||
|
|
||||||
|
## Get updated on lastest updates about Ereshkigal's mods:
|
||||||
|
https://www.guilded.gg/ereshkigalmods/blog/Mods-announcements/
|
||||||
|
https://www.guilded.gg/ereshkigalmods/blog/Previews/
|
||||||
|
|
||||||
|
## Credits to:
|
||||||
|
* Ereshkigal
|
||||||
|
* SolidJuho
|
||||||
|
* GGaulin
|
BIN
ZEreshkigal-AllinOneMod/2readme.pdf
Normal file
BIN
ZEreshkigal-AllinOneMod/2readme.pdf
Normal file
Binary file not shown.
32
ZEreshkigal-AllinOneMod/LICENSE
Normal file
32
ZEreshkigal-AllinOneMod/LICENSE
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
Copyright (c) 2020 Ereshkigal. All rights reserved.
|
||||||
|
|
||||||
|
Developed by: SPT-Aki
|
||||||
|
Ereshkigal
|
||||||
|
www.sp-tarkov.com
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation files
|
||||||
|
(the "Software"), to deal with 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:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimers.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimers in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
* Neither the names of Ereshkigal, SPT-Aki nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this Software without specific prior written permission.
|
||||||
|
|
||||||
|
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
|
||||||
|
CONTRIBUTORS 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 WITH
|
||||||
|
THE SOFTWARE.
|
12
ZEreshkigal-AllinOneMod/README.md
Normal file
12
ZEreshkigal-AllinOneMod/README.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
## Find informations and support about Ereshkigal's mods at:
|
||||||
|
https://www.guilded.gg/ereshkigalmods/
|
||||||
|
|
||||||
|
## Get updated on lastest updates about Ereshkigal's mods:
|
||||||
|
https://www.guilded.gg/ereshkigalmods/blog/Mods-announcements/
|
||||||
|
https://www.guilded.gg/ereshkigalmods/blog/Previews/
|
||||||
|
|
||||||
|
## Credits to:
|
||||||
|
* Ereshkigal
|
||||||
|
* SolidJuho
|
||||||
|
* GGaulin
|
||||||
|
* jdpeckham
|
112
ZEreshkigal-AllinOneMod/config/config.json
Normal file
112
ZEreshkigal-AllinOneMod/config/config.json
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
{
|
||||||
|
"Explanation": {
|
||||||
|
"############## PLEASE READ THE README.PDF OF THE MOD BEFORE EDITING BELOW VALUES. ######################": "///"
|
||||||
|
},
|
||||||
|
"items": {
|
||||||
|
"AllExaminedItems": false,
|
||||||
|
"WeightOptions": false,
|
||||||
|
"WeightChanger": 0,
|
||||||
|
"MoreStack": false,
|
||||||
|
"EquipRigsWithArmors": false,
|
||||||
|
"ForceMoneyStack": false,
|
||||||
|
"RemoveSecureContainerFilters": false,
|
||||||
|
"RemoveBackpacksRestrictions": false,
|
||||||
|
"RemoveContainersRestrictions": false,
|
||||||
|
"InRaidModdable": false,
|
||||||
|
"IncreaseLootExp": false,
|
||||||
|
"IncreaseExamineExp": false,
|
||||||
|
"RemoveKeysUsageNumber": false,
|
||||||
|
"StackableBarters": false,
|
||||||
|
"RemoveAllGearPenalties": false,
|
||||||
|
"ChangeIndividualItemProperty": {
|
||||||
|
"activated": false,
|
||||||
|
"ItemList": {
|
||||||
|
"__REPLACEMEBYITEMID__": {
|
||||||
|
"SpawnChance": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hideout": {
|
||||||
|
"ChangeFuelConsumptionRate": false,
|
||||||
|
"FastHideoutConstruction": false,
|
||||||
|
"FastHideoutProduction": false,
|
||||||
|
"FastScavCase": false,
|
||||||
|
"ScavCasePriceReducer": false,
|
||||||
|
"RemoveConstructionsRequirements": false
|
||||||
|
},
|
||||||
|
"player": {
|
||||||
|
"RemoveScavTimer": false,
|
||||||
|
"ChangeSkillProgressionMultiplier": false,
|
||||||
|
"ChangeWeaponSkillMultiplier": false,
|
||||||
|
"DisableSkillFatigue": false,
|
||||||
|
"SkillMinEffectiveness": 0.2,
|
||||||
|
"SkillFatiguePerPoint": 0.2,
|
||||||
|
"SkillFreshEffectiveness": 1.3,
|
||||||
|
"SkillFreshPoints": 1,
|
||||||
|
"SkillPointsBeforeFatigue": 1,
|
||||||
|
"SkillFatigueReset": 300,
|
||||||
|
"ChangeMaxStamina": false,
|
||||||
|
"UnlimitedStamina": false,
|
||||||
|
"RemoveInRaidsRestrictions": false,
|
||||||
|
"DisableFallDamage": false,
|
||||||
|
"AllSkillsMaster": false,
|
||||||
|
"EnableSkillBotReload": false,
|
||||||
|
"EnableSkillBotSound": false
|
||||||
|
},
|
||||||
|
"traders": {
|
||||||
|
"AllQuestsAvailable": false,
|
||||||
|
"AllClothesFree": false,
|
||||||
|
"AllClotheForEverySide": false,
|
||||||
|
"ChangeFleaMarketLvl": false,
|
||||||
|
"InsuranceTime": {
|
||||||
|
"activated": false,
|
||||||
|
"Therapist": {
|
||||||
|
"activated": false,
|
||||||
|
"min": 0,
|
||||||
|
"max": 0
|
||||||
|
},
|
||||||
|
"Prapor": {
|
||||||
|
"activated": false,
|
||||||
|
"min": 0,
|
||||||
|
"max": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"MaxInsuranceStorageTime": false,
|
||||||
|
"AllTraders4Stars": false,
|
||||||
|
"Remove FIR condition on quests": false
|
||||||
|
},
|
||||||
|
"raids": {
|
||||||
|
"Change Map Loot Spawn Chances": false,
|
||||||
|
"Map Loot Spawn Chances Multipliers": {
|
||||||
|
"globalsMul": 1.3,
|
||||||
|
"bigmap": 1,
|
||||||
|
"factory4_day": 1,
|
||||||
|
"factory4_night": 1,
|
||||||
|
"interchange": 1,
|
||||||
|
"laboratory": 1,
|
||||||
|
"shoreline": 1,
|
||||||
|
"woods": 1,
|
||||||
|
"reserve": 1
|
||||||
|
},
|
||||||
|
"NoExtractsRestrictions": false,
|
||||||
|
"AllExtractionsAvailable": false,
|
||||||
|
"IncreasedBossChance": false,
|
||||||
|
"ExtendedRaid": false,
|
||||||
|
"RemoveLabKeycard": false,
|
||||||
|
"ExtractionsExtended": false
|
||||||
|
},
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
104
ZEreshkigal-AllinOneMod/config/errors.json
Normal file
104
ZEreshkigal-AllinOneMod/config/errors.json
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"items": {
|
||||||
|
"AllExaminedItems": "AllExaminedItems option is incorrect, it must be a bool as value (true or false). You actual value isn't one of these. Please check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"WeightOptions": "WeightOptions option is incorrect, it must be one the following options: \"Forced\",\"Perc\",\"Mult\" or false. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"WeightChanger": "WeightChanger option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"MoreStack": "MoreStack option is incorrect, it must be either false or a number in order to work. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"EquipRigsWithArmors": "EquipRigsWithArmors 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.",
|
||||||
|
"ForceMoneyStack": "ForceMoneyStack option is incorrect, it must be either false or a number in order to work. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"RemoveSecureContainerFilters": "RemoveSecureContainerFilters 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.",
|
||||||
|
"RemoveBackpacksRestrictions": "RemoveBackpacksRestrictions 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.",
|
||||||
|
"RemoveContainersRestrictions": "RemoveContainersRestrictions 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.",
|
||||||
|
"InRaidModdable": "InRaidModdable 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.",
|
||||||
|
"IncreaseLootExp": "IncreaseLootExp option is incorrect, it must be either false or a number in order to work. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"IncreaseExamineExp": "IncreaseExamineExp option is incorrect, it must be either false or a number in order to work. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"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.",
|
||||||
|
"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."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hideout": {
|
||||||
|
"ChangeFuelConsumptionRate": "ChangeFuelConsumptionRate option is incorrect, it must be either false or a number in order to work. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"FastHideoutConstruction": "FastHideoutConstruction 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.",
|
||||||
|
"FastHideoutProduction": "FastHideoutProduction 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.",
|
||||||
|
"FastScavCase": "FastScavCase 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.",
|
||||||
|
"ScavCasePriceReducer": "ScavCasePriceReducer 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.",
|
||||||
|
"RemoveConstructionsRequirements": "RemoveConstructionsRequirements 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."
|
||||||
|
},
|
||||||
|
"player": {
|
||||||
|
"RemoveScavTimer": "RemoveScavTimer 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.",
|
||||||
|
"ChangeSkillProgressionMultiplier": "ChangeSkillProgressionMultiplier option is incorrect, it must be either false or a number in order to work. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"ChangeWeaponSkillMultiplier": "ChangeWeaponSkillMultiplier option is incorrect, it must be either false or a number in order to work. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"DisableSkillFatigue": "DisableSkillFatigue option is incorrect, it must be the following values: Either true or \"Custom\". Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"SkillMinEffectiveness": "SkillMinEffectiveness option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"SkillFatiguePerPoint": "SkillFatiguePerPoint option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"SkillFreshEffectiveness": "SkillFreshEffectiveness option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"SkillFreshPoints": "SkillFreshPoints option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"SkillPointsBeforeFatigue": "SkillPointsBeforeFatigue option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"SkillFatigueReset": "SkillFatigueReset option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"ChangeMaxStamina": "ChangeMaxStamina option is incorrect, it must be either false or a number in order to work. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"UnlimitedStamina": "UnlimitedStamina 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.",
|
||||||
|
"RemoveInRaidsRestrictions": "RemoveInRaidsRestrictions 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.",
|
||||||
|
"AllSkillsMaster": "AllSkillsMaster 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.",
|
||||||
|
"EnableSkillBotReload": "EnableSkillBotReload 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.",
|
||||||
|
"EnableSkillBotSound": "EnableSkillBotSound 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.",
|
||||||
|
"DisableFallDamage": "DisableFallDamage 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."
|
||||||
|
},
|
||||||
|
"traders": {
|
||||||
|
"AllQuestsAvailable": "AllQuestsAvailable 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.",
|
||||||
|
"AllClothesFree": "AllClothesFree 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.",
|
||||||
|
"AllClotheForEverySide": "AllClotheForEverySide 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.",
|
||||||
|
"ChangeFleaMarketLvl": "ChangeFleaMarketLvl option is incorrect, it must be either false or a number in order to work. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"InsuranceTime": {
|
||||||
|
"activated": "InsuranceTime[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.",
|
||||||
|
"Therapist": {
|
||||||
|
"activated": "InsuranceTime[Therapist][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.",
|
||||||
|
"min": 0,
|
||||||
|
"max": 0
|
||||||
|
},
|
||||||
|
"Prapor": {
|
||||||
|
"activated": "InsuranceTime[Prapor][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.",
|
||||||
|
"min": 0,
|
||||||
|
"max": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"MaxInsuranceStorageTime": "WeightChanger option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"AllTraders4Stars": "AllTraders4Stars 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.",
|
||||||
|
"Remove FIR condition on quests": "Remove FIR condition on quests 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."
|
||||||
|
},
|
||||||
|
"raids": {
|
||||||
|
"Change Map Loot Spawn Chances": "Change Map Loot Spawn Chances 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.",
|
||||||
|
"Map Loot Spawn Chances Multipliers": {
|
||||||
|
"globalsMul": "globalsMul option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"bigmap": "bigmap option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"factory4_day": "factory4_day option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"factory4_night": "factory4_night option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"interchange": "interchange option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"laboratory": "laboratory option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"shoreline": "shoreline option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"woods": "woods option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value.",
|
||||||
|
"reserve": "reserve option is incorrect, it must be a number only. You can use - sign to make negatives numbers but nothing else. Check back readme.pdf to ensure you use the correct value."
|
||||||
|
},
|
||||||
|
"NoExtractsRestrictions": "NoExtractsRestrictions 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.",
|
||||||
|
"AllExtractionsAvailable": "AllExtractionsAvailable 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.",
|
||||||
|
"IncreasedBossChance": "IncreasedBossChance 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.",
|
||||||
|
"ExtendedRaid": "ExtendedRaid 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.",
|
||||||
|
"RemoveLabKeycard": "RemoveLabKeycard 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.",
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
BIN
ZEreshkigal-AllinOneMod/disclaimer.pdf
Normal file
BIN
ZEreshkigal-AllinOneMod/disclaimer.pdf
Normal file
Binary file not shown.
4
ZEreshkigal-AllinOneMod/loader.js
Normal file
4
ZEreshkigal-AllinOneMod/loader.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
require('bytenode');
|
||||||
|
require('./package.jsc');
|
||||||
|
|
15
ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode
generated
vendored
Normal file
15
ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#!/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
Normal file
17
ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
@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
Normal file
18
ZEreshkigal-AllinOneMod/node_modules/.bin/bytenode.ps1
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#!/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
Normal file
21
ZEreshkigal-AllinOneMod/node_modules/bytenode/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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
Normal file
270
ZEreshkigal-AllinOneMod/node_modules/bytenode/README.md
generated
vendored
Normal file
@ -0,0 +1,270 @@
|
|||||||
|
# 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
Normal file
157
ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/cli.js
generated
vendored
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
#!/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
Normal file
17
ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/// <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
Normal file
343
ZEreshkigal-AllinOneMod/node_modules/bytenode/lib/index.js
generated
vendored
Normal file
@ -0,0 +1,343 @@
|
|||||||
|
'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
Normal file
66
ZEreshkigal-AllinOneMod/node_modules/bytenode/package.json
generated
vendored
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
{
|
||||||
|
"_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"
|
||||||
|
}
|
BIN
ZEreshkigal-AllinOneMod/package.jsc
Normal file
BIN
ZEreshkigal-AllinOneMod/package.jsc
Normal file
Binary file not shown.
10
ZEreshkigal-AllinOneMod/package.json
Normal file
10
ZEreshkigal-AllinOneMod/package.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "AllinOneMod",
|
||||||
|
"author": "Ereshkigal",
|
||||||
|
"version": "2.2.0",
|
||||||
|
"license": "NCSA Open Source",
|
||||||
|
"dependencies": {
|
||||||
|
"CoreMod": "2.0.0"
|
||||||
|
},
|
||||||
|
"main": "loader.js"
|
||||||
|
}
|
202
ZEreshkigal-AllinOneMod/src/items.js
Normal file
202
ZEreshkigal-AllinOneMod/src/items.js
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
/*
|
||||||
|
エレシュキガル
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
class itemsModification {
|
||||||
|
|
||||||
|
static ApplyItemsModifications() {
|
||||||
|
const config = require("../config/config.json");
|
||||||
|
const database = DatabaseServer.tables;
|
||||||
|
const items = database.templates.items;
|
||||||
|
const CoreMod = require("../../CoreMod/src/Core.js")
|
||||||
|
const OtherModitication = require("./other.js");
|
||||||
|
|
||||||
|
for (const id in items) {
|
||||||
|
let base = items[id]
|
||||||
|
|
||||||
|
if (OtherModitication.IsThisIDaMod(id) === false) {
|
||||||
|
|
||||||
|
//Examine all items
|
||||||
|
if (config.items.AllExaminedItems === true) {
|
||||||
|
CoreMod.EditSimpleItemData(id, "ExaminedByDefault", true)
|
||||||
|
}
|
||||||
|
//Change the weight
|
||||||
|
|
||||||
|
switch (config.items.WeightOptions) {
|
||||||
|
case "Forced":
|
||||||
|
if (typeof config.items.WeightChanger === "number") {
|
||||||
|
//Exclude nodes, inventory and pockets from the weight changer
|
||||||
|
if (base._type !== "Node" && (base.parent !== "557596e64bdc2dc2118b4571" || base._parent !== "55d720f24bdc2d88028b456d")) {
|
||||||
|
CoreMod.EditSimpleItemData(id, "Weight", config.items.WeightChanger)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "Perc":
|
||||||
|
if (typeof config.items.WeightChanger === "number") {
|
||||||
|
//Exclude nodes, inventory and pockets from the weight changer
|
||||||
|
if (base._type !== "Node" && (base.parent !== "557596e64bdc2dc2118b4571" || base._parent !== "55d720f24bdc2d88028b456d")) {
|
||||||
|
CoreMod.EditSimpleItemData(id, "Weight", (base._props.Weight + ((config.items.WeightChanger / 100) * base._props.Weight)).toFixed(3))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "Mult":
|
||||||
|
if (typeof config.items.WeightChanger === "number") {
|
||||||
|
//Exclude nodes, inventory and pockets from the weight changer
|
||||||
|
if (base._type !== "Node" && (base.parent !== "557596e64bdc2dc2118b4571" || base._parent !== "55d720f24bdc2d88028b456d")) {
|
||||||
|
CoreMod.EditSimpleItemData(id, "Weight", (base._props.Weight * config.items.WeightChanger))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.items.RemoveAllGearPenalties === true) {
|
||||||
|
if (base._props.mousePenalty) {
|
||||||
|
CoreMod.EditSimpleItemData(id, "mousePenalty", 0)
|
||||||
|
}
|
||||||
|
if (base._props.weaponErgonomicPenalty) {
|
||||||
|
CoreMod.EditSimpleItemData(id, "weaponErgonomicPenalty", 0)
|
||||||
|
}
|
||||||
|
if (base._props.speedPenaltyPercent) {
|
||||||
|
CoreMod.EditSimpleItemData(id, "speedPenaltyPercent", 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.items.StackableBarters === true) {
|
||||||
|
switch (base._parent) {
|
||||||
|
case "57864ee62459775490116fc1": // Battery
|
||||||
|
CoreMod.EditSimpleItemData(id, "StackMaxSize", 5)
|
||||||
|
break;
|
||||||
|
case "57864ada245977548638de91": //Building materials
|
||||||
|
CoreMod.EditSimpleItemData(id, "StackMaxSize", 100)
|
||||||
|
break;
|
||||||
|
case "57864a66245977548f04a81f": //Electronics
|
||||||
|
CoreMod.EditSimpleItemData(id, "StackMaxSize", 150)
|
||||||
|
break;
|
||||||
|
case "57864c322459775490116fbf": //Household goods
|
||||||
|
CoreMod.EditSimpleItemData(id, "StackMaxSize", 50)
|
||||||
|
break;
|
||||||
|
case "57864a3d24597754843f8721": // Jewelry
|
||||||
|
CoreMod.EditSimpleItemData(id, "StackMaxSize", 25)
|
||||||
|
break;
|
||||||
|
case "57864c8c245977548867e7f1": //Medical supplies
|
||||||
|
CoreMod.EditSimpleItemData(id, "StackMaxSize", 65)
|
||||||
|
break;
|
||||||
|
case "57864e4c24597754843f8723": //Flammable
|
||||||
|
CoreMod.EditSimpleItemData(id, "StackMaxSize", 100)
|
||||||
|
break;
|
||||||
|
case "57864bb7245977548b3b66c2": //Tools
|
||||||
|
CoreMod.EditSimpleItemData(id, "StackMaxSize", 120)
|
||||||
|
break;
|
||||||
|
case "590c745b86f7743cc433c5f2": //Other
|
||||||
|
CoreMod.EditSimpleItemData(id, "StackMaxSize", 150)
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change ammo stacks
|
||||||
|
if (typeof config.items.MoreStack == "number") {
|
||||||
|
if (base._name.includes("patron") && !base._name.includes("40x46")) {
|
||||||
|
CoreMod.EditSimpleItemData(id, "StackMaxSize", config.items.MoreStack)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change money stacks
|
||||||
|
if (typeof config.items.ForceMoneyStack == "number" && base._parent === "543be5dd4bdc2deb348b4569") {
|
||||||
|
CoreMod.EditSimpleItemData(id, "StackMaxSize", config.items.ForceMoneyStack)
|
||||||
|
}
|
||||||
|
|
||||||
|
//Allow armored rigs with armors
|
||||||
|
if (config.items.EquipRigsWithArmors === true) {
|
||||||
|
CoreMod.EditSimpleItemData(id, "BlocksArmorVest", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Remove filters
|
||||||
|
if (config.items.RemoveSecureContainerFilters === true) {
|
||||||
|
if (base._parent === "5448bf274bdc2dfc2f8b456a") {
|
||||||
|
if (base._props.Grids[0]._props.filters !== undefined) {
|
||||||
|
base._props.Grids[0]._props.filters = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (config.items.RemoveBackpacksRestrictions === true) {
|
||||||
|
if (base._parent === "5448e53e4bdc2d60728b4567") {
|
||||||
|
if (base._props.Grids[0]._props.filters !== undefined) {
|
||||||
|
base._props.Grids[0]._props.filters = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (config.items.RemoveContainersRestrictions === true) {
|
||||||
|
if (base._parent === "5795f317245977243854e041") {
|
||||||
|
if (base._props.Grids[0]._props.filters !== undefined) {
|
||||||
|
base._props.Grids[0]._props.filters = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change items experience gain
|
||||||
|
if (typeof config.items.IncreaseLootExp == "number") {
|
||||||
|
if (base._props.LootExperience !== undefined) {
|
||||||
|
let calculation = Math.round((base._props.LootExperience + ((config.items.IncreaseLootExp / 100) * base._props.LootExperience)));
|
||||||
|
CoreMod.EditSimpleItemData(id, "LootExperience", calculation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (typeof config.items.IncreaseExamineExp == "number") {
|
||||||
|
if (base._props.ExamineExperience !== undefined) {
|
||||||
|
|
||||||
|
let calculation = Math.round((base._props.ExamineExperience + ((config.items.ExamineExperience / 100) * base._props.ExamineExperience)));
|
||||||
|
CoreMod.EditSimpleItemData(id, "ExamineExperience", calculation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Remove the keys usage
|
||||||
|
if (config.items.RemoveKeysUsageNumber === true) {
|
||||||
|
if (base._parent === "5c99f98d86f7745c314214b3" || base._parent === "5c164d2286f774194c5e69fa") {
|
||||||
|
base._props.MaximumNumberOfUsage = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change weapons parts moddability
|
||||||
|
if (config.items.InRaidModdable === true) {
|
||||||
|
if (base._props.RaidModdable) {
|
||||||
|
CoreMod.EditSimpleItemData(id, "RaidModdable", true);
|
||||||
|
if (base._props.ToolModdable) {
|
||||||
|
CoreMod.EditSimpleItemData(id, "ToolModdable", true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (base._props.Slots) {
|
||||||
|
for (let k in base._props.Slots) {
|
||||||
|
if (base._props.Slots[k]._required !== "false") {
|
||||||
|
base._props.Slots[k]._required = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} //End of the loot for items modifications
|
||||||
|
|
||||||
|
//Individual items proprety changes
|
||||||
|
if (config.items.ChangeIndividualItemProperty.activated === true) {
|
||||||
|
//Edit item properties
|
||||||
|
if (config.items.ChangeIndividualItemProperty.ItemList !== {}) {
|
||||||
|
for (let k in config.items.ChangeIndividualItemProperty.ItemList) {
|
||||||
|
if (k === "__REPLACEMEBYITEMID__") {
|
||||||
|
Logger.error("AllinOne Mod: " + k + " : IS NOT AN ITEMID")
|
||||||
|
} else {
|
||||||
|
for (let property in config.items.ChangeIndividualItemProperty.ItemList[k]) {
|
||||||
|
let value = config.items.ChangeIndividualItemProperty.ItemList[k][property]
|
||||||
|
Logger.log(value)
|
||||||
|
CoreMod.EditSimpleItemData(k, property, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = itemsModification;
|
61
ZEreshkigal-AllinOneMod/src/other.js
Normal file
61
ZEreshkigal-AllinOneMod/src/other.js
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
エレシュキガル
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const DontNukeMyModPlz = []
|
||||||
|
|
||||||
|
class OtherModifications {
|
||||||
|
|
||||||
|
static ApplyVariousModifications() {
|
||||||
|
const config = require("../config/config.json");
|
||||||
|
if (config.other.CompatibilityMods.CardGameMod === true) {
|
||||||
|
DontNukeMyModPlz.push("cgm_")
|
||||||
|
} else if (config.other.CompatibilityMods.TerragroupSpecialist === true) {
|
||||||
|
DontNukeMyModPlz.push("terragroupSpecialist")
|
||||||
|
} else if (config.other.CompatibilityMods["CoD MW - Mil-Sim: CTSFO I"] === true) {
|
||||||
|
DontNukeMyModPlz.push("ctsfo1")
|
||||||
|
} else if (config.other.CompatibilityMods["Additionnal Gear - Tan"]) {
|
||||||
|
DontNukeMyModPlz.push("AddGearTan")
|
||||||
|
} else if (config.other.CompatibilityMods["Additionnal Gear - Black"]) {
|
||||||
|
DontNukeMyModPlz.push("AddGearBlack")
|
||||||
|
} else if (config.other.CompatibilityMods["Additionnal Gear - Untar"]) {
|
||||||
|
DontNukeMyModPlz.push("AddGearUntar")
|
||||||
|
} else if (config.other.CompatibilityMods["Additionnal Clothing"]) {
|
||||||
|
DontNukeMyModPlz.push("AdditionalClothing")
|
||||||
|
} else if (config.other.CompatibilityMods["Andrudis Quest Maniac"]) {
|
||||||
|
DontNukeMyModPlz.push("Ammo_Proficiency")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static IsThisIDaMod(id) {
|
||||||
|
if (DontNukeMyModPlz.length > 0) {
|
||||||
|
for (const mod in DontNukeMyModPlz) {
|
||||||
|
if (id.includes(DontNukeMyModPlz[mod])) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static CustomWarning(prefix, text, suffix = "") {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = OtherModifications;
|
122
ZEreshkigal-AllinOneMod/src/player.js
Normal file
122
ZEreshkigal-AllinOneMod/src/player.js
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
/*
|
||||||
|
エレシュキガル
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
class PlayerModifications {
|
||||||
|
|
||||||
|
static ApplyPlayerModifications() {
|
||||||
|
const config = require("../config/config.json");
|
||||||
|
const database = DatabaseServer.tables;
|
||||||
|
const globals = database.globals.config;
|
||||||
|
|
||||||
|
//Remove scav timer
|
||||||
|
if (config.player.RemoveScavTimer === true) {
|
||||||
|
globals.SavagePlayCooldown = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change skills progression multiplier
|
||||||
|
if (config.player.ChangeSkillProgressionMultiplier !== false && typeof config.player.ChangeSkillProgressionMultiplier == "number") {
|
||||||
|
globals.SkillsSettings.SkillProgressRate = config.player.ChangeSkillProgressionMultiplier;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change weapons skill multiplier
|
||||||
|
if (config.player.ChangeWeaponSkillMultiplier !== false && typeof config.player.ChangeWeaponSkillMultiplier == "number") {
|
||||||
|
globals.SkillsSettings.WeaponSkillProgressRate = config.player.ChangeWeaponSkillMultiplier;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change fleamarket mini level
|
||||||
|
if (config.traders.ChangeFleaMarketLvl !== false && typeof config.traders.ChangeFleaMarketLvl == "number") {
|
||||||
|
globals.RagFair.minUserLevel = config.traders.ChangeFleaMarketLvl;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change in raids restrictions
|
||||||
|
if (config.player.RemoveInRaidsRestrictions === true) {
|
||||||
|
globals.RestrictionsInRaid = []
|
||||||
|
}
|
||||||
|
|
||||||
|
//Remove fall damages
|
||||||
|
if(config.player.DisableFallDamage === true){
|
||||||
|
globals.Health.Falling.SafeHeight = 200
|
||||||
|
globals.Health.Falling.DamagePerMeter = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change staminas (unlimited or no)
|
||||||
|
if (typeof config.player.ChangeMaxStamina == "number" && config.player.UnlimitedStamina === false) {
|
||||||
|
globals.Stamina.Capacity = config.player.ChangeMaxStamina
|
||||||
|
} else if (config.player.ChangeMaxStamina === false && config.player.UnlimitedStamina === true) {
|
||||||
|
globals.Stamina.Capacity = 500,
|
||||||
|
globals.Stamina.BaseRestorationRate = 500;
|
||||||
|
globals.Stamina.StaminaExhaustionCausesJiggle = false;
|
||||||
|
globals.Stamina.StaminaExhaustionStartsBreathSound = false;
|
||||||
|
globals.Stamina.StaminaExhaustionRocksCamera = false;
|
||||||
|
globals.Stamina.SprintDrainRate = 0;
|
||||||
|
globals.Stamina.JumpConsumption = 0;
|
||||||
|
globals.Stamina.AimDrainRate = 0;
|
||||||
|
globals.Stamina.SitToStandConsumption = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.player.DisableSkillFatigue === true) {
|
||||||
|
globals.SkillMinEffectiveness = 1;
|
||||||
|
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;
|
||||||
|
globals.SkillFreshPoints = config.player.SkillFreshPoints;
|
||||||
|
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")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function maxSkills(url, info, sessionID) {
|
||||||
|
const config = require("../config/config.json")
|
||||||
|
let pmcData = null
|
||||||
|
|
||||||
|
if (sessionID) {
|
||||||
|
pmcData = ProfileController.getPmcProfile(sessionID);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pmcData !== null) {
|
||||||
|
if (pmcData.Skills.Common.length > 0 && pmcData.Skills.Common !== undefined) {
|
||||||
|
for (let skills in pmcData.Skills.Common) {
|
||||||
|
let skill = pmcData.Skills.Common[skills]
|
||||||
|
switch (skill.Id) {
|
||||||
|
case "BotReload":
|
||||||
|
if (config.player.EnableSkillBotReload === true) {
|
||||||
|
skill.Progress = 5100
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "BotSound":
|
||||||
|
if (config.player.EnableSkillBotSound === true) {
|
||||||
|
skill.Progress = 5100
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
skill.Progress = 5100
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Logger.error("No skills for PMC to master, skipping")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return HttpResponse.nullResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.player.AllSkillsMaster === true) {
|
||||||
|
HttpRouter.onStaticRoute["/client/game/version/validate"]["aioMod"] = maxSkills.bind(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = PlayerModifications;
|
232
ZEreshkigal-AllinOneMod/src/raids.js
Normal file
232
ZEreshkigal-AllinOneMod/src/raids.js
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
/*
|
||||||
|
エレシュキガル
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
class RaidsModifications {
|
||||||
|
static ApplyRaidsModifications() {
|
||||||
|
const config = require("../config/config.json")
|
||||||
|
const database = DatabaseServer.tables;
|
||||||
|
const hideout = database.hideout
|
||||||
|
const locations = database.locations;
|
||||||
|
const OtherModitication = require("./other.js");
|
||||||
|
|
||||||
|
//Change hideout fuel consumption
|
||||||
|
if (config.hideout.ChangeFuelConsumptionRate !== false) {
|
||||||
|
if (typeof config.hideout.ChangeFuelConsumptionRate === "number") {
|
||||||
|
hideout.settings.generatorFuelFlowRate = config.hideout.ChangeFuelConsumptionRate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Enable hideout fast constructions
|
||||||
|
if (config.hideout.FastHideoutConstruction === true) {
|
||||||
|
|
||||||
|
for (const data in hideout.areas) {
|
||||||
|
let areaData = hideout.areas[data]
|
||||||
|
if (OtherModitication.IsThisIDaMod(areaData._id) === false) {
|
||||||
|
for (const i in areaData.stages) {
|
||||||
|
|
||||||
|
if (areaData.stages[i].constructionTime > 0) {
|
||||||
|
areaData.stages[i].constructionTime = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Enable fast hideout production
|
||||||
|
if (config.hideout.FastHideoutProduction === true) {
|
||||||
|
|
||||||
|
for (const data in hideout.production) {
|
||||||
|
let productionData = hideout.production[data];
|
||||||
|
if (OtherModitication.IsThisIDaMod(productionData._id) === false) {
|
||||||
|
if (productionData.continuous === false && productionData.productionTime >= 10) {
|
||||||
|
productionData.productionTime = 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//Scav cases modifications
|
||||||
|
if (config.hideout.FastScavCase === true) {
|
||||||
|
|
||||||
|
for (const scav in hideout.scavcase) {
|
||||||
|
let caseData = hideout.scavcase[scav];
|
||||||
|
if (OtherModitication.IsThisIDaMod(caseData._id) === false) {
|
||||||
|
if (caseData.ProductionTime >= 10) {
|
||||||
|
caseData.ProductionTime = 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (config.hideout.ScavCasePriceReducer === true) {
|
||||||
|
for (const scase in hideout.scavcase) {
|
||||||
|
let caseData = hideout.scavcase[scase];
|
||||||
|
if (OtherModitication.IsThisIDaMod(caseData._id) === false) {
|
||||||
|
if (caseData.Requirements[0].count >= 10 && (caseData.Requirements[0].templateId === "5449016a4bdc2d6f028b456f" || caseData.Requirements[0].templateId === "5696686a4bdc2da3298b456a" || caseData.Requirements[0].templateId === "569668774bdc2da2298b4568")) {
|
||||||
|
caseData.Requirements[0].count = 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Remove construction requirements
|
||||||
|
if(config.hideout.RemoveConstructionsRequirements === true){
|
||||||
|
for (const data in hideout.areas) {
|
||||||
|
let areaData = hideout.areas[data]
|
||||||
|
if (OtherModitication.IsThisIDaMod(areaData._id) === false) {
|
||||||
|
for (const i in areaData.stages) {
|
||||||
|
if (areaData.stages[i].requirements !== undefined) {
|
||||||
|
areaData.stages[i].requirements = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Remove labs entry keycard
|
||||||
|
if (config.raids.RemoveLabKeycard === true) {
|
||||||
|
locations["laboratory"].base.AccessKeys = []
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Changing maps loots spawn chances multiplier
|
||||||
|
if (config.raids["Change Map Loot Spawn Chances"] === true) {
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].globalsMul !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].globalsMul === "number") {
|
||||||
|
DatabaseServer.tables.globals.config.GlobalLootChanceModifier = config.raids["Map Loot Spawn Chances Multipliers"].globalsMul;
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].bigmap !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].bigmap === "number") {
|
||||||
|
locations["bigmap"].base.GlobalLootChanceModifier = config.raids["Map Loot Spawn Chances Multipliers"].bigmap;
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].factory4_day !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].factory4_day === "number") {
|
||||||
|
locations["factory4_day"].base.GlobalLootChanceModifier = config.raids["Map Loot Spawn Chances Multipliers"].factory4_day;
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].factory4_night !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].factory4_night === "number") {
|
||||||
|
locations["factory4_night"].base.GlobalLootChanceModifier = config.raids["Map Loot Spawn Chances Multipliers"].factory4_night;
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].interchange !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].interchange === "number") {
|
||||||
|
locations["interchange"].base.GlobalLootChanceModifier = config.raids["Map Loot Spawn Chances Multipliers"].interchange;
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].laboratory !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].laboratory === "number") {
|
||||||
|
locations["laboratory"].base.GlobalLootChanceModifier = config.raids["Map Loot Spawn Chances Multipliers"].laboratory;
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].shoreline !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].shoreline === "number") {
|
||||||
|
locations["shoreline"].base.GlobalLootChanceModifier = config.raids["Map Loot Spawn Chances Multipliers"].shoreline;
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].woods !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].woods === "number") {
|
||||||
|
locations["woods"].base.GlobalLootChanceModifier = config.raids["Map Loot Spawn Chances Multipliers"].woods;
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].reserve !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].reserve === "number") {
|
||||||
|
locations["rezervbase"].base.GlobalLootChanceModifier = config.raids["Map Loot Spawn Chances Multipliers"].reserve;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Remove extracts restrictions
|
||||||
|
if (config.raids.NoExtractsRestrictions === true) {
|
||||||
|
for (let i in locations) {
|
||||||
|
if (i !== "base") {
|
||||||
|
for (let x in locations[i].base.exits) {
|
||||||
|
if (locations[i].base.exits[x].Name !== "EXFIL_Train" && !locations[i].base.exits[x].Name.includes("lab") || locations[i].base.exits[x].Name === "lab_Vent") {
|
||||||
|
if (locations[i].base.exits[x].PassageRequirement !== "None") {
|
||||||
|
locations[i].base.exits[x].PassageRequirement = "None";
|
||||||
|
}
|
||||||
|
if (locations[i].base.exits[x].ExfiltrationType !== "Individual") {
|
||||||
|
locations[i].base.exits[x].ExfiltrationType = "Individual";
|
||||||
|
}
|
||||||
|
if (locations[i].base.exits[x].Id !== '') {
|
||||||
|
locations[i].base.exits[x].Id = '';
|
||||||
|
}
|
||||||
|
if (locations[i].base.exits[x].Count !== 0) {
|
||||||
|
locations[i].base.exits[x].Count = 0;
|
||||||
|
}
|
||||||
|
if (locations[i].base.exits[x].RequirementTip !== '') {
|
||||||
|
locations[i].base.exits[x].RequirementTip = '';
|
||||||
|
}
|
||||||
|
if (locations[i].base.exits[x].RequiredSlot) {
|
||||||
|
delete locations[i].base.exits[x].RequiredSlot;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Make all extractions available to extract
|
||||||
|
if (config.raids.AllExtractionsAvailable === true) {
|
||||||
|
for (let i in locations) {
|
||||||
|
if (i !== "base") {
|
||||||
|
for (let x in locations[i].base.exits) {
|
||||||
|
if (locations[i].base.exits[x].Name !== "EXFIL_Train") {
|
||||||
|
if (locations[i].base.exits[x].Chance !== 100) {
|
||||||
|
locations[i].base.exits[x].Chance = 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Make all bosses to 100% spawn
|
||||||
|
if (config.raids.IncreasedBossChance === true) {
|
||||||
|
Logger.info("AllinOne Mod: IncreasedBossChance activated");
|
||||||
|
for (let i in locations) {
|
||||||
|
if (i !== "base") {
|
||||||
|
if (locations[i].base.BossLocationSpawn !== []) {
|
||||||
|
for (let x in locations[i].base.BossLocationSpawn) {
|
||||||
|
locations[i].base.BossLocationSpawn[x].BossChance = 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Extend raids to 16 hours
|
||||||
|
if (config.raids.ExtendedRaid === true) {
|
||||||
|
Logger.info("AllinOne Mod: Extended Raid activated");
|
||||||
|
for (let map in locations) {
|
||||||
|
if (map !== "base") {
|
||||||
|
locations[map].base.exit_access_time = 999
|
||||||
|
locations[map].base.escape_time_limit = 999
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Make all extractions of the map available regardless of the infill
|
||||||
|
if (config.raids.ExtractionsExtended === true) {
|
||||||
|
for (let map in locations) {
|
||||||
|
switch (map) {
|
||||||
|
case "base":
|
||||||
|
break;
|
||||||
|
case "bigmap":
|
||||||
|
for (const extract in locations[map].base.exits) {
|
||||||
|
locations[map].base.exits[extract].EntryPoints = "Customs,Boiler Tanks"
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "interchange":
|
||||||
|
for (const extract in locations[map].base.exits) {
|
||||||
|
locations[map].base.exits[extract].EntryPoints = "MallSE,MallNW"
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "shoreline":
|
||||||
|
for (const extract in locations[map].base.exits) {
|
||||||
|
locations[map].base.exits[extract].EntryPoints = "Village,Riverside"
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "woods":
|
||||||
|
for (const extract in locations[map].base.exits) {
|
||||||
|
locations[map].base.exits[extract].EntryPoints = "House,Old Station"
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = RaidsModifications;
|
134
ZEreshkigal-AllinOneMod/src/traders.js
Normal file
134
ZEreshkigal-AllinOneMod/src/traders.js
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
/*
|
||||||
|
エレシュキガル
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
class TradersModifications {
|
||||||
|
static ApplyTradersModifications() {
|
||||||
|
const config = require("../config/config.json")
|
||||||
|
const database = DatabaseServer.tables;
|
||||||
|
const traders = database.traders;
|
||||||
|
const quests = database.templates.quests
|
||||||
|
const suits = database.templates.customization
|
||||||
|
const OtherModitication = require("./other.js");
|
||||||
|
|
||||||
|
//Enable all the quests
|
||||||
|
if (config.traders.AllQuestsAvailable === true) {
|
||||||
|
Logger.info("AllinOne Mod: AllQuestsAvailable activated");
|
||||||
|
|
||||||
|
for (let id in quests) {
|
||||||
|
if (OtherModitication.IsThisIDaMod(id) === false) {
|
||||||
|
let questData = quests[id]
|
||||||
|
|
||||||
|
questData.conditions.AvailableForStart = [{
|
||||||
|
"_parent": "Level",
|
||||||
|
"_props": {
|
||||||
|
"compareMethod": ">=",
|
||||||
|
"value": "1",
|
||||||
|
"index": 0,
|
||||||
|
"parentId": "",
|
||||||
|
"id": "AllInOne-Mod: AllQuestsAvailable"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.traders["Remove FIR condition on quests"]) {
|
||||||
|
for (const id in quests) {
|
||||||
|
let condition = quests[id].conditions.AvailableForFinish
|
||||||
|
for (const requirements in condition) {
|
||||||
|
let requirement = condition[requirements]
|
||||||
|
if (requirement._parent === "FindItem" || requirement._parent === "HandoverItem") {
|
||||||
|
if ('_props' in requirement && 'onlyFoundInRaid' in requirement._props) {
|
||||||
|
requirement._props.onlyFoundInRaid = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Enable all clothes available for both side
|
||||||
|
if (config.traders.AllClotheForEverySide === true) {
|
||||||
|
Logger.info("AllinOne Mod: AllClotheForEverySide activated");
|
||||||
|
|
||||||
|
for (let suit in suits) {
|
||||||
|
if (OtherModitication.IsThisIDaMod(suit) === false) {
|
||||||
|
let suitData = suits[suit]
|
||||||
|
suitData._props.Side = ["Savage", "Bear", "Usec"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Enable all clothes for free
|
||||||
|
if (config.traders.AllClothesFree === true) {
|
||||||
|
for (let trader in traders) {
|
||||||
|
if (OtherModitication.IsThisIDaMod(trader) === false) {
|
||||||
|
if (traders[trader].suits) {
|
||||||
|
|
||||||
|
for (let file in traders[trader].suits) {
|
||||||
|
let fileData = traders[trader].suits[file]
|
||||||
|
fileData.requirements.loyaltyLevel = 1;
|
||||||
|
fileData.requirements.profileLevel = 1;
|
||||||
|
fileData.requirements.standing = 0;
|
||||||
|
fileData.requirements.skillRequirements = [];
|
||||||
|
fileData.requirements.questRequirements = [];
|
||||||
|
fileData.requirements.itemRequirements = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change insurances return times
|
||||||
|
if (config.traders.InsuranceTime.activated === true) {
|
||||||
|
Logger.info("AllinOne Mod: InsuranceTime activated");
|
||||||
|
|
||||||
|
if (config.traders.InsuranceTime.Prapor.activated === true) {
|
||||||
|
Logger.info("AllinOne Mod: Prapor insurance changed");
|
||||||
|
traders["54cb50c76803fa8b248b4571"].base.insurance.min_return_hour = config.traders.InsuranceTime.Prapor.min
|
||||||
|
traders["54cb50c76803fa8b248b4571"].base.insurance.max_return_hour = config.traders.InsuranceTime.Prapor.max
|
||||||
|
}
|
||||||
|
if (config.traders.InsuranceTime.Therapist.activated === true) {
|
||||||
|
Logger.info("AllinOne Mod: Therapist insurance changed");
|
||||||
|
traders["54cb57776803fa99248b456e"].base.insurance.min_return_hour = config.traders.InsuranceTime.Therapist.min
|
||||||
|
traders["54cb57776803fa99248b456e"].base.insurance.max_return_hour = config.traders.InsuranceTime.Therapist.max
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change the maximum time for insurance to be in mails
|
||||||
|
if (config.traders.MaxInsuranceStorageTime !== false) {
|
||||||
|
traders["54cb50c76803fa8b248b4571"].base.insurance.max_storage_time = config.traders.MaxInsuranceStorageTime
|
||||||
|
traders["54cb57776803fa99248b456e"].base.insurance.max_storage_time = config.traders.MaxInsuranceStorageTime
|
||||||
|
}
|
||||||
|
|
||||||
|
function lvlUp(traderID, sessionID) {
|
||||||
|
let pmcData = ProfileController.getPmcProfile(sessionID);
|
||||||
|
let loyaltyLevels = DatabaseServer.tables.traders[traderID].base.loyalty.loyaltyLevels;
|
||||||
|
|
||||||
|
// level up player
|
||||||
|
pmcData.Info.Level = PlzRefactorMeHelper.calculateLevel(pmcData);
|
||||||
|
|
||||||
|
|
||||||
|
for (let level in loyaltyLevels) {
|
||||||
|
loyaltyLevels[level].minLevel = 1
|
||||||
|
loyaltyLevels[level].minSalesSum = 0
|
||||||
|
loyaltyLevels[level].minStanding = 0
|
||||||
|
pmcData.TraderStandings[traderID].currentLevel = 4;
|
||||||
|
DatabaseServer.tables.traders[traderID].base.loyalty.currentLevel = 4;
|
||||||
|
pmcData.TraderStandings[traderID].display = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Enable all traders 4 stars
|
||||||
|
if (config.traders.AllTraders4Stars === true) {
|
||||||
|
TraderController.lvlUp = lvlUp
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = TradersModifications;
|
344
ZEreshkigal-AllinOneMod/src/warnings.js
Normal file
344
ZEreshkigal-AllinOneMod/src/warnings.js
Normal file
@ -0,0 +1,344 @@
|
|||||||
|
/*
|
||||||
|
エレシュキガル
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
class Warnings {
|
||||||
|
static SendUserInformations() {
|
||||||
|
|
||||||
|
const config = require("../config/config.json");
|
||||||
|
const errors = require("../config/errors.json")
|
||||||
|
const OtherModitication = require("./other.js");
|
||||||
|
//Notice information
|
||||||
|
if (config.other.HideWarningMessage === false) {
|
||||||
|
Logger.log(`[AIO Mod INFORMATION]`, "white", "red");
|
||||||
|
Logger.log(`Please, take care of reading the readme.pdf of the mod before using it. It contains all configurations explanations.`, "white", "red");
|
||||||
|
Logger.log(`[AIO Mod INFORMATION]`, "white", "red");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof config.items.ChangeIndividualItemProperty.activated !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.ChangeIndividualItemProperty.activated)
|
||||||
|
}
|
||||||
|
if (typeof config.items.AllExaminedItems !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.AllExaminedItems)
|
||||||
|
}
|
||||||
|
if (typeof config.items.StackableBarters !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.StackableBarters)
|
||||||
|
}
|
||||||
|
if (typeof config.items.RemoveAllGearPenalties !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.RemoveAllGearPenalties)
|
||||||
|
}
|
||||||
|
if (typeof config.hideout.RemoveConstructionsRequirements !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.hideout.RemoveConstructionsRequirements)
|
||||||
|
}
|
||||||
|
if (typeof config.player.DisableFallDamage !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.player.DisableFallDamage)
|
||||||
|
}
|
||||||
|
if (typeof config.traders["Remove FIR condition on quests"] !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.traders["Remove FIR condition on quests"])
|
||||||
|
}
|
||||||
|
if (typeof config.raids.ExtractionsExtended !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids.ExtractionsExtended)
|
||||||
|
}
|
||||||
|
if (config.items.MoreStack !== false && typeof config.items.MoreStack !== "number") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.MoreStack)
|
||||||
|
}
|
||||||
|
if (config.items.WeightOptions !== "Forced" && config.items.WeightOptions !== "Perc" && config.items.WeightOptions !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.WeightOptions)
|
||||||
|
}
|
||||||
|
if (typeof config.items.EquipRigsWithArmors !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.EquipRigsWithArmors)
|
||||||
|
}
|
||||||
|
if (typeof config.items.ForceMoneyStack !== "number" && config.items.ForceMoneyStack !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.ForceMoneyStack)
|
||||||
|
}
|
||||||
|
if (typeof config.items.RemoveSecureContainerFilters !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.RemoveSecureContainerFilters)
|
||||||
|
}
|
||||||
|
if (typeof config.items.RemoveBackpacksRestrictions !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.RemoveBackpacksRestrictions)
|
||||||
|
}
|
||||||
|
if (typeof config.items.RemoveContainersRestrictions !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.RemoveContainersRestrictions)
|
||||||
|
}
|
||||||
|
if (typeof config.items.InRaidModdable !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.InRaidModdable)
|
||||||
|
}
|
||||||
|
if (config.items.IncreaseLootExp !== false && typeof config.items.IncreaseLootExp !== "number") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.IncreaseLootExp)
|
||||||
|
}
|
||||||
|
if (config.items.IncreaseExamineExp !== false && typeof config.items.IncreaseExamineExp !== "number") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.IncreaseExamineExp)
|
||||||
|
}
|
||||||
|
if (typeof config.raids.RemoveLabKeycard !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids.RemoveLabKeycard)
|
||||||
|
}
|
||||||
|
if (typeof config.traders.AllTraders4Stars !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.traders.AllTraders4Stars)
|
||||||
|
}
|
||||||
|
if (typeof config.player.AllSkillsMaster !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.player.AllSkillsMaster)
|
||||||
|
}
|
||||||
|
if (typeof config.traders.InsuranceTime.activated !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.traders.InsuranceTime.activated)
|
||||||
|
}
|
||||||
|
if (typeof config.raids.ExtendedRaid !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids.ExtendedRaid)
|
||||||
|
}
|
||||||
|
if (typeof config.raids.IncreasedBossChance !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids.IncreasedBossChance)
|
||||||
|
}
|
||||||
|
if (typeof config.raids.AllExtractionsAvailable !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids.AllExtractionsAvailable)
|
||||||
|
}
|
||||||
|
if (typeof config.raids.NoExtractsRestrictions !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids.NoExtractsRestrictions)
|
||||||
|
}
|
||||||
|
if (typeof config.raids["Change Map Loot Spawn Chances"] !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids["Change Map Loot Spawn Chances"])
|
||||||
|
}
|
||||||
|
if (typeof config.raids["Map Loot Spawn Chances Multipliers"].reserve !== "number" && config.raids["Map Loot Spawn Chances Multipliers"].reserve !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids["Map Loot Spawn Chances Multipliers"].reserve)
|
||||||
|
}
|
||||||
|
if (typeof config.raids["Map Loot Spawn Chances Multipliers"].woods !== "number" && config.raids["Map Loot Spawn Chances Multipliers"].woods !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids["Map Loot Spawn Chances Multipliers"].woods)
|
||||||
|
}
|
||||||
|
if (typeof config.raids["Map Loot Spawn Chances Multipliers"].shoreline !== "number" && config.raids["Map Loot Spawn Chances Multipliers"].shoreline !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids["Map Loot Spawn Chances Multipliers"].shoreline)
|
||||||
|
}
|
||||||
|
if (typeof config.raids["Map Loot Spawn Chances Multipliers"].laboratory !== "number" && config.raids["Map Loot Spawn Chances Multipliers"].laboratory !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids["Map Loot Spawn Chances Multipliers"].laboratory)
|
||||||
|
}
|
||||||
|
if (typeof config.raids["Map Loot Spawn Chances Multipliers"].interchange !== "number" && config.raids["Map Loot Spawn Chances Multipliers"].interchange !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids["Map Loot Spawn Chances Multipliers"].interchange)
|
||||||
|
}
|
||||||
|
if (typeof config.raids["Map Loot Spawn Chances Multipliers"].factory4_night !== "number" && config.raids["Map Loot Spawn Chances Multipliers"].factory4_night !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids["Map Loot Spawn Chances Multipliers"].factory4_night)
|
||||||
|
}
|
||||||
|
if (typeof config.raids["Map Loot Spawn Chances Multipliers"].factory4_day !== "number" && config.raids["Map Loot Spawn Chances Multipliers"].factory4_day !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids["Map Loot Spawn Chances Multipliers"].factory4_day)
|
||||||
|
}
|
||||||
|
if (typeof config.raids["Map Loot Spawn Chances Multipliers"].bigmap !== "number" && config.raids["Map Loot Spawn Chances Multipliers"].bigmap !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids["Map Loot Spawn Chances Multipliers"].bigmap)
|
||||||
|
}
|
||||||
|
if (typeof config.raids["Map Loot Spawn Chances Multipliers"].globalsMul !== "number" && config.raids["Map Loot Spawn Chances Multipliers"].globalsMul !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.raids["Map Loot Spawn Chances Multipliers"].globalsMul)
|
||||||
|
}
|
||||||
|
if (typeof config.player.RemoveInRaidsRestrictions !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.player.RemoveInRaidsRestrictions)
|
||||||
|
}
|
||||||
|
if (typeof config.player.UnlimitedStamina !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.player.UnlimitedStamina)
|
||||||
|
}
|
||||||
|
if (config.player.ChangeMaxStamina !== false && typeof config.player.ChangeMaxStamina !== "number") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.player.ChangeMaxStamina)
|
||||||
|
}
|
||||||
|
if (config.player.DisableSkillFatigue !== "Custom" && config.player.DisableSkillFatigue !== false && config.player.DisableSkillFatigue !== true) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.player.DisableSkillFatigue)
|
||||||
|
}
|
||||||
|
if (config.traders.ChangeFleaMarketLvl !== false && typeof config.traders.ChangeFleaMarketLvl !== "number") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.traders.ChangeFleaMarketLvl)
|
||||||
|
}
|
||||||
|
if (config.player.ChangeWeaponSkillMultiplier !== false && typeof config.player.ChangeWeaponSkillMultiplier !== "number") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.player.ChangeWeaponSkillMultiplier)
|
||||||
|
}
|
||||||
|
if (config.player.ChangeSkillProgressionMultiplier !== false && typeof config.player.ChangeSkillProgressionMultiplier !== "number") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.player.ChangeSkillProgressionMultiplier)
|
||||||
|
}
|
||||||
|
if (typeof config.player.RemoveScavTimer !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.player.RemoveScavTimer)
|
||||||
|
}
|
||||||
|
if (typeof config.traders.AllClothesFree !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.traders.AllClothesFree)
|
||||||
|
}
|
||||||
|
if (typeof config.traders.AllClotheForEverySide !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.traders.AllClotheForEverySide)
|
||||||
|
}
|
||||||
|
if (typeof config.traders.AllQuestsAvailable !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.traders.AllQuestsAvailable)
|
||||||
|
}
|
||||||
|
if (typeof config.hideout.ScavCasePriceReducer !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.hideout.ScavCasePriceReducer)
|
||||||
|
}
|
||||||
|
if (typeof config.hideout.FastScavCase !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.hideout.FastScavCase)
|
||||||
|
}
|
||||||
|
if (typeof config.hideout.FastHideoutProduction !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.hideout.FastHideoutProduction)
|
||||||
|
}
|
||||||
|
if (typeof config.hideout.FastHideoutConstruction !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.hideout.FastHideoutConstruction)
|
||||||
|
}
|
||||||
|
if (typeof config.hideout.ChangeFuelConsumptionRate !== "number" && config.hideout.ChangeFuelConsumptionRate !== false) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.hideout.ChangeFuelConsumptionRate)
|
||||||
|
}
|
||||||
|
if (typeof config.items.ChangeIndividualItemProperty.activated !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.ChangeIndividualItemProperty.activated)
|
||||||
|
}
|
||||||
|
if (typeof config.items.RemoveKeysUsageNumber !== "boolean") {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.items.RemoveKeysUsageNumber)
|
||||||
|
}
|
||||||
|
if (config.player.DisableSkillFatigue !== "Custom" && config.player.DisableSkillFatigue !== false && config.player.DisableSkillFatigue !== true) {
|
||||||
|
OtherModitication.CustomWarning("AIO Mod", errors.player.DisableSkillFatigue)
|
||||||
|
}
|
||||||
|
/////// Activation notices
|
||||||
|
if (config.items.RemoveKeysUsageNumber === true) {
|
||||||
|
Logger.info("AllinOne Mod: RemoveKeysUsageNumber activated");
|
||||||
|
}
|
||||||
|
if (config.hideout.FastScavCase === true) {
|
||||||
|
Logger.info("AllinOne Mod: Changing ScavCase time");
|
||||||
|
}
|
||||||
|
if (config.hideout.FastHideoutConstruction === true) {
|
||||||
|
Logger.info("AllinOne Mod: Changing Hideout construction time");
|
||||||
|
}
|
||||||
|
if (config.hideout.FastHideoutProduction === true) {
|
||||||
|
Logger.info("AllinOne Mod: Changing Hideout production time");
|
||||||
|
}
|
||||||
|
if (config.hideout.ScavCasePriceReducer === true) {
|
||||||
|
Logger.info("AllinOne Mod: Changing ScavCase prices");
|
||||||
|
}
|
||||||
|
if (config.traders.AllQuestsAvailable === true) {
|
||||||
|
Logger.info("AllinOne Mod: AllQuestsAvailable activated");
|
||||||
|
}
|
||||||
|
if (config.traders.AllClotheForEverySide === true) {
|
||||||
|
Logger.info("AllinOne Mod: AllClotheForEverySide activated");
|
||||||
|
}
|
||||||
|
if (config.traders.AllClothesFree === true) {
|
||||||
|
Logger.info("AllinOne Mod: AllClothesFree activated");
|
||||||
|
}
|
||||||
|
if (config.player.RemoveScavTimer === true) {
|
||||||
|
Logger.info("AllinOne Mod: RemoveScavTimer activated");
|
||||||
|
}
|
||||||
|
if (config.player.ChangeSkillProgressionMultiplier !== false && typeof config.player.ChangeSkillProgressionMultiplier == "number") {
|
||||||
|
Logger.info("AllinOne Mod: ChangeSkillProgressionMultiplier activated");
|
||||||
|
}
|
||||||
|
if (config.player.ChangeWeaponSkillMultiplier !== false && typeof config.player.ChangeWeaponSkillMultiplier == "number") {
|
||||||
|
Logger.info("AllinOne Mod: ChangeWeaponSkillMultiplier activated");
|
||||||
|
}
|
||||||
|
if (config.traders.ChangeFleaMarketLvl !== false && typeof config.traders.ChangeFleaMarketLvl == "number") {
|
||||||
|
Logger.info("AllinOne Mod: ChangeFleaMarketLvl activated");
|
||||||
|
}
|
||||||
|
if (config.player.DisableSkillFatigue === true) {
|
||||||
|
Logger.info("AllinOne Mod: DisableSkillFatigue activated");
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
if (typeof config.player.ChangeMaxStamina == "number" && config.player.UnlimitedStamina === false) {
|
||||||
|
Logger.info("AllinOne Mod: ChangeMaxStamina activated");
|
||||||
|
}
|
||||||
|
if (config.player.ChangeMaxStamina === false && config.player.UnlimitedStamina === true) {
|
||||||
|
Logger.info("AllinOne Mod: UnlimitedStamina activated");
|
||||||
|
}
|
||||||
|
if (config.player.RemoveInRaidsRestrictions === true) {
|
||||||
|
Logger.info("AllinOne Mod: RemoveInRaidsRestrictions activated");
|
||||||
|
}
|
||||||
|
if (config.raids.RemoveLabKeycard === true) {
|
||||||
|
Logger.info("AllinOne Mod: RemoveLabKeycard activated");
|
||||||
|
}
|
||||||
|
if (config.raids["Change Map Loot Spawn Chances"] === true) {
|
||||||
|
Logger.info("AllinOne Mod: ChangeLootMultipiers activated");
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].globalsMul !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].globalsMul === "number" && config.raids["Change Map Loot Spawn Chances"] === true) {
|
||||||
|
Logger.info("AllinOne Mod: Globals multiplier changed");
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].bigmap !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].bigmap === "number" && config.raids["Change Map Loot Spawn Chances"] === true) {
|
||||||
|
Logger.info("AllinOne Mod: Bigmap multiplier changed");
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].factory4_day !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].factory4_day === "number" && config.raids["Change Map Loot Spawn Chances"] === true) {
|
||||||
|
Logger.info("AllinOne Mod: Factory4_day multiplier changed");
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].factory4_night !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].factory4_night === "number" && config.raids["Change Map Loot Spawn Chances"] === true) {
|
||||||
|
Logger.info("AllinOne Mod: Factory4_night multiplier changed");
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].interchange !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].interchange === "number" && config.raids["Change Map Loot Spawn Chances"] === true) {
|
||||||
|
Logger.info("AllinOne Mod: Interchange multiplier changed");
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].laboratory !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].laboratory === "number" && config.raids["Change Map Loot Spawn Chances"] === true) {
|
||||||
|
Logger.info("AllinOne Mod: Laboratory multiplier changed");
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].shoreline !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].shoreline === "number" && config.raids["Change Map Loot Spawn Chances"] === true) {
|
||||||
|
Logger.info("AllinOne Mod: Shoreline multiplier changed");
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].woods !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].woods === "number" && config.raids["Change Map Loot Spawn Chances"] === true) {
|
||||||
|
Logger.info("AllinOne Mod: Woods multiplier changed");
|
||||||
|
}
|
||||||
|
if (config.raids["Map Loot Spawn Chances Multipliers"].reserve !== false && typeof config.raids["Map Loot Spawn Chances Multipliers"].reserve === "number" && config.raids["Change Map Loot Spawn Chances"] === true) {
|
||||||
|
Logger.info("AllinOne Mod: ReserveBase multiplier changed");
|
||||||
|
}
|
||||||
|
if (config.raids.NoExtractsRestrictions === true) {
|
||||||
|
Logger.info("AllinOne Mod: NoExtractsRestrictions activated");
|
||||||
|
}
|
||||||
|
if (config.raids.AllExtractionsAvailable === true) {
|
||||||
|
Logger.info("AllinOne Mod: AllExtractionsAvailable activated");
|
||||||
|
}
|
||||||
|
if (config.raids.ExtendedRaid === true) {
|
||||||
|
Logger.info("AllinOne Mod: Extended Raid activated");
|
||||||
|
}
|
||||||
|
if (config.items.WeightOptions === "Forced") {
|
||||||
|
Logger.info("AllInOne Mod: All Items Weight Forced to " + config.items.WeightChanger + " kg");
|
||||||
|
}
|
||||||
|
if (typeof config.items.WeightChanger !== "number") {
|
||||||
|
Logger.info("WeightChanger variable is incorrect, please read carefully the description");
|
||||||
|
}
|
||||||
|
if (config.items.WeightOptions === "Perc" && config.items.WeightChanger > 0) {
|
||||||
|
Logger.info("AllInOne Mod: All Items Weight Increased by " + config.items.WeightChanger + "%");
|
||||||
|
}
|
||||||
|
if (config.items.WeightOptions === "Perc" && config.items.WeightChanger < 0) {
|
||||||
|
Logger.info("AllInOne Mod: All Items Weight Decreased by " + config.items.WeightChanger + "%");
|
||||||
|
}
|
||||||
|
if (typeof config.items.MoreStack == "number") {
|
||||||
|
Logger.info("AllInOne Mod: All Ammo Stack Sizes Increased to " + config.items.MoreStack);
|
||||||
|
}
|
||||||
|
if (config.items.EquipRigsWithArmors === true) {
|
||||||
|
Logger.info("AllInOne Mod: Equip Rigs and Armors Allowed");
|
||||||
|
}
|
||||||
|
if (config.items.ForceMoneyStack !== false && typeof config.items.ForceMoneyStack == "number") {
|
||||||
|
Logger.info("AllInOne Mod: All Money Stack Sizes Increased to " + config.items.ForceMoneyStack);
|
||||||
|
}
|
||||||
|
if (config.items.RemoveSecureContainerFilters === true) {
|
||||||
|
Logger.info("AllInOne Mod: Secure Containers Restrictions Removed");
|
||||||
|
}
|
||||||
|
if (config.items.RemoveBackpacksRestrictions === true) {
|
||||||
|
Logger.info("AllInOne Mod: RemoveBackpacksRestrictions activated");
|
||||||
|
}
|
||||||
|
if (config.items.RemoveContainersRestrictions === true) {
|
||||||
|
Logger.info("AllInOne Mod: RemoveContainersRestrictions activated");
|
||||||
|
}
|
||||||
|
if (config.items.AllExaminedItems === true) {
|
||||||
|
Logger.info("AllInOne Mod: All Items Examined");
|
||||||
|
}
|
||||||
|
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.RemoveAllGearPenalties === true) {
|
||||||
|
Logger.info("AllInOne Mod: RemoveAllGearPenalties activated")
|
||||||
|
}
|
||||||
|
if (config.hideout.RemoveConstructionsRequirements === true) {
|
||||||
|
Logger.info("AllInOne Mod: RemoveConstructionsRequirements activated")
|
||||||
|
}
|
||||||
|
if (config.player.DisableFallDamage === true) {
|
||||||
|
Logger.info("AllInOne Mod: DisableFallDamage activated")
|
||||||
|
}
|
||||||
|
if (config.traders["Remove FIR condition on quests"] === true) {
|
||||||
|
Logger.info("AllInOne Mod: Remove FIR condition on quests activated")
|
||||||
|
}
|
||||||
|
if (config.raids.ExtractionsExtended === true) {
|
||||||
|
Logger.info("AllInOne Mod: ExtractionsExtended activated")
|
||||||
|
}
|
||||||
|
if (config.player.DisableSkillFatigue === true) {
|
||||||
|
Logger.info("AllinOne Mod: DisableSkillFatigue activated");
|
||||||
|
}
|
||||||
|
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}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Warnings;
|
Loading…
x
Reference in New Issue
Block a user