forked from CWX/ALT-Mods
Compare commits
3 Commits
master
...
first-buil
Author | SHA1 | Date | |
---|---|---|---|
39d494b196 | |||
79384d4f92 | |||
323f06891a |
10
.gitignore
vendored
10
.gitignore
vendored
@ -10,6 +10,7 @@ obj/
|
|||||||
.idea
|
.idea
|
||||||
slnx.sqlite
|
slnx.sqlite
|
||||||
slnx-journal.sqlite
|
slnx-journal.sqlite
|
||||||
|
Built/
|
||||||
|
|
||||||
## nodejs
|
## nodejs
|
||||||
node_modules
|
node_modules
|
||||||
@ -20,11 +21,8 @@ package-lock.json
|
|||||||
desktop.ini
|
desktop.ini
|
||||||
|
|
||||||
## ALT-Mods
|
## ALT-Mods
|
||||||
Faupi-HideoutMod/Project/bin
|
|
||||||
Faupi-HideoutMod/Project/obj
|
|
||||||
|
|
||||||
Faupi-MunitionsExpert/MunitionsExpert/bin
|
bepis69-ExpandedArmorDetails/ExpandedArmorDetails/bin
|
||||||
Faupi-MunitionsExpert/MunitionsExpert/obj
|
bepis69-ExpandedArmorDetails/ExpandedArmorDetails/obj
|
||||||
|
|
||||||
KcY-SeeItemValue/itemValue/bin
|
Folder.DotSettings.user
|
||||||
KcY-SeeItemValue/itemValue/obj
|
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
# AllinOne Mod by Ereshkigal
|
|
||||||
|
|
||||||
## 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 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.**
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Please, check 2readme.pdf for more
|
|
||||||
|
|
||||||
## Credits to:
|
|
||||||
* Ereshkigal
|
|
||||||
* SolidJuho
|
|
||||||
* GGaulin
|
|
||||||
* jdpeckham
|
|
||||||
* bepis
|
|
||||||
* CWX
|
|
||||||
* Valens
|
|
Binary file not shown.
@ -1,95 +0,0 @@
|
|||||||
Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License
|
|
||||||
|
|
||||||
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
|
|
||||||
|
|
||||||
Section 1 – Definitions.
|
|
||||||
|
|
||||||
Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
|
|
||||||
Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
|
||||||
Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
|
|
||||||
Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
|
|
||||||
Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
|
|
||||||
Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
|
|
||||||
Licensor means the individual(s) or entity(ies) granting rights under this Public License.
|
|
||||||
NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
|
|
||||||
Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
|
|
||||||
Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
|
|
||||||
You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
|
|
||||||
|
|
||||||
Section 2 – Scope.
|
|
||||||
|
|
||||||
License grant.
|
|
||||||
Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
|
|
||||||
reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and
|
|
||||||
produce and reproduce, but not Share, Adapted Material for NonCommercial purposes only.
|
|
||||||
Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
|
|
||||||
Term. The term of this Public License is specified in Section 6(a).
|
|
||||||
Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
|
|
||||||
Downstream recipients.
|
|
||||||
Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
|
|
||||||
No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
|
|
||||||
No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
|
|
||||||
|
|
||||||
Other rights.
|
|
||||||
Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
|
|
||||||
Patent and trademark rights are not licensed under this Public License.
|
|
||||||
To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes.
|
|
||||||
|
|
||||||
Section 3 – License Conditions.
|
|
||||||
|
|
||||||
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
|
|
||||||
|
|
||||||
Attribution.
|
|
||||||
|
|
||||||
If You Share the Licensed Material, You must:
|
|
||||||
retain the following if it is supplied by the Licensor with the Licensed Material:
|
|
||||||
identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
|
|
||||||
a copyright notice;
|
|
||||||
a notice that refers to this Public License;
|
|
||||||
a notice that refers to the disclaimer of warranties;
|
|
||||||
a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
|
|
||||||
indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
|
|
||||||
indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
|
|
||||||
For the avoidance of doubt, You do not have permission under this Public License to Share Adapted Material.
|
|
||||||
You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
|
|
||||||
If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
|
|
||||||
|
|
||||||
Section 4 – Sui Generis Database Rights.
|
|
||||||
|
|
||||||
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
|
|
||||||
|
|
||||||
for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only and provided You do not Share Adapted Material;
|
|
||||||
if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
|
|
||||||
You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
|
|
||||||
|
|
||||||
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
|
|
||||||
|
|
||||||
Section 5 – Disclaimer of Warranties and Limitation of Liability.
|
|
||||||
|
|
||||||
Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
|
|
||||||
To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
|
|
||||||
|
|
||||||
The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
|
|
||||||
|
|
||||||
Section 6 – Term and Termination.
|
|
||||||
|
|
||||||
This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
|
|
||||||
|
|
||||||
Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
|
|
||||||
automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
|
|
||||||
upon express reinstatement by the Licensor.
|
|
||||||
For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
|
|
||||||
For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
|
|
||||||
Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
|
|
||||||
|
|
||||||
Section 7 – Other Terms and Conditions.
|
|
||||||
|
|
||||||
The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
|
|
||||||
Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
|
|
||||||
|
|
||||||
Section 8 – Interpretation.
|
|
||||||
|
|
||||||
For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
|
|
||||||
To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
|
|
||||||
No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
|
|
||||||
Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
|
|
@ -1,64 +0,0 @@
|
|||||||
|
|
||||||
This project was created to automate most parts of building and setting up an environment.
|
|
||||||
|
|
||||||
## **NodeJS 14.15.3:**
|
|
||||||
|
|
||||||
The first step would be to install nodejs on your pc, the version you NEED is **14.15.3**
|
|
||||||
|
|
||||||
That version is the one that has been used to test the mod templates and build scripts.
|
|
||||||
|
|
||||||
It can be downloaded from here: https://nodejs.org/download/release/v14.15.3/
|
|
||||||
|
|
||||||
A system reboot may be needed after install.
|
|
||||||
|
|
||||||
## **IDE:**
|
|
||||||
|
|
||||||
The second step is having an IDE ready. For the currect purpose we've setup a VSCodium workspace file.
|
|
||||||
|
|
||||||
You CAN use Visual Studio Code if you so desire, just keep in mind that our dev tests on the mod files was done using VSCodium.
|
|
||||||
|
|
||||||
You can get VSCodium here: https://vscodium.com/#install
|
|
||||||
|
|
||||||
## **Workspace:**
|
|
||||||
|
|
||||||
Once you have NodeJS and VSCodium ready, open the mod.code-workspace file with VSCodium (File->Open Worspace from File...).
|
|
||||||
|
|
||||||
Once the project loads into VSCodium you will be recommended to install the ESLint plugin. This is HIGHLY recommended.
|
|
||||||
|
|
||||||
## **Environment Setup:**
|
|
||||||
|
|
||||||
There is a task that will automatically setup your environment to use typescript.
|
|
||||||
|
|
||||||
To run it, you just need to go to:
|
|
||||||
|
|
||||||
> Terminal->Run Task...->Show All Tasks...->npm: install
|
|
||||||
|
|
||||||
After running this task, your environment will be ready to start coding.
|
|
||||||
|
|
||||||
DO NOT remove the node_modules folder, this is an auto generated directory that has the required dependencies to be able to use typescript and more.
|
|
||||||
|
|
||||||
## **IMPORTANT:**
|
|
||||||
|
|
||||||
Before starting to work on your mod, we suggest you read about Dependency Injection and Inversion of Control as this is the adopted architecture SPT-AKI has adopted.
|
|
||||||
|
|
||||||
It will be difficult to understand some of the problems you may be having if you dont understand the basics of it.
|
|
||||||
|
|
||||||
A guide explaining all the essentials will be available on the hub on release for you to read about.
|
|
||||||
|
|
||||||
## **Coding:**
|
|
||||||
|
|
||||||
All your work should be centered around the mod.ts file as an entry point.
|
|
||||||
You can ONLY change the following properties from the package.json file: `"name"`, `"version"`, `"license"`: `"MIT"`, `"author"`, `"akiVersion"`.
|
|
||||||
|
|
||||||
If you have never used typescript before, you can read about it here: https://www.typescriptlang.org/docs/
|
|
||||||
|
|
||||||
## **Distributing your mod:**
|
|
||||||
|
|
||||||
The project has been set up with an automatic task that will copy and zip ALL required files for your mod to work on SPT-AKI.
|
|
||||||
To run this task you just need to go to:
|
|
||||||
|
|
||||||
> Terminal->Run Task...->Show All Tasks...->npm: build:zip
|
|
||||||
|
|
||||||
The output will be a mod.zip file that will appear on the root of the project.
|
|
||||||
|
|
||||||
Always verify that all files were included into the zip file.
|
|
@ -1,151 +0,0 @@
|
|||||||
{
|
|
||||||
"items": {
|
|
||||||
"allExaminedItems": false,
|
|
||||||
"weightChanges": false,
|
|
||||||
"moreStack": false,
|
|
||||||
"equipRigsWithArmors": false,
|
|
||||||
"forceMoneyStack": false,
|
|
||||||
"removeSecureContainerFilters": false,
|
|
||||||
"removeBackpacksRestrictions": false,
|
|
||||||
"removeContainersRestrictions": false,
|
|
||||||
"inRaidModdable": false,
|
|
||||||
"increaseLootExp": false,
|
|
||||||
"increaseExamineExp": false,
|
|
||||||
"removeKeyUsageNumber": false,
|
|
||||||
"stackableBarters": {
|
|
||||||
"activated": false,
|
|
||||||
"battery": 1,
|
|
||||||
"buildingMaterials": 1,
|
|
||||||
"electronics": 1,
|
|
||||||
"householdGoods": 1,
|
|
||||||
"jewelry": 1,
|
|
||||||
"medicalSupplies": 1,
|
|
||||||
"lubricant": 1,
|
|
||||||
"tools": 1,
|
|
||||||
"other": 1
|
|
||||||
},
|
|
||||||
"weaponMalfunctions": {
|
|
||||||
"overheat": false,
|
|
||||||
"jam": false,
|
|
||||||
"slide": false,
|
|
||||||
"misfire": false,
|
|
||||||
"feed": false
|
|
||||||
},
|
|
||||||
"weaponDurabilities": {
|
|
||||||
"minimumSpawnDurability": false,
|
|
||||||
"maximumSpawnDurability": false
|
|
||||||
},
|
|
||||||
"removeAllGearPenalties": false,
|
|
||||||
"removeItemDurabilityBurn": false,
|
|
||||||
"removeBulletWeaponDurabilityDamage": false,
|
|
||||||
"removeWeaponPresetRestriction": false,
|
|
||||||
"changeIndividualItemProperty": {
|
|
||||||
"activated": false,
|
|
||||||
"itemList": {
|
|
||||||
"__REPLACEMEBYITEMID__": {
|
|
||||||
"spawnChance": 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hideout": {
|
|
||||||
"changeFuelConsumptionRate": false,
|
|
||||||
"fastHideoutConstruction": false,
|
|
||||||
"fastHideoutProduction": false,
|
|
||||||
"fastScavCase": false,
|
|
||||||
"scavCasePriceReducer": false,
|
|
||||||
"removeConstructionRequirements": 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,
|
|
||||||
"removeInRaidRestrictions": false,
|
|
||||||
"disableFallDamage": false,
|
|
||||||
"allSkillsMaster": false,
|
|
||||||
"enableSkillBotReload": false,
|
|
||||||
"enableSkillBotSound": false,
|
|
||||||
"removeScavKarma": false,
|
|
||||||
"energyDrainRate": false,
|
|
||||||
"energyDrainTime": false,
|
|
||||||
"hydrationDrainRate": false,
|
|
||||||
"hydrationDrainTime": false,
|
|
||||||
"regenerationLoopTime": false,
|
|
||||||
"energyRestoration": false,
|
|
||||||
"hydrationRestoration": false
|
|
||||||
},
|
|
||||||
"traders": {
|
|
||||||
"allQuestsAvailable": false,
|
|
||||||
"allClothesFree": false,
|
|
||||||
"allClothesForEverySide": false,
|
|
||||||
"changeFleaMarketLvl": false,
|
|
||||||
"insuranceTime": {
|
|
||||||
"activated": false,
|
|
||||||
"therapist": {
|
|
||||||
"activated": false,
|
|
||||||
"min": 0,
|
|
||||||
"max": 0
|
|
||||||
},
|
|
||||||
"prapor": {
|
|
||||||
"activated": false,
|
|
||||||
"min": 0,
|
|
||||||
"max": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"traderChanges": {
|
|
||||||
"allTraders4Stars": false,
|
|
||||||
"unlockAllItemsAtLL1": false,
|
|
||||||
"removeItemsFromQuestLocks": false
|
|
||||||
},
|
|
||||||
"maxInsuranceStorageTime": false,
|
|
||||||
"preventFenceMastering": false,
|
|
||||||
"removeFIRConditionOnQuests": false
|
|
||||||
},
|
|
||||||
"raids": {
|
|
||||||
"noExtractRestrictions": false,
|
|
||||||
"allExtractionsAvailable": false,
|
|
||||||
"increasedBossChance": false,
|
|
||||||
"extendedRaid": false,
|
|
||||||
"removeLabsKeycard": false,
|
|
||||||
"extractionsExtended": false,
|
|
||||||
"insuranceOnAllMaps": false
|
|
||||||
},
|
|
||||||
"fixes": {
|
|
||||||
"finsChokeMeHarder": true,
|
|
||||||
"chompsRaiderSpawnFix": true,
|
|
||||||
"justNUsEvenMoreOpenZones": true
|
|
||||||
},
|
|
||||||
"other": {
|
|
||||||
"compatibilityMods": {
|
|
||||||
"terragroupSpecialist": false,
|
|
||||||
"coDMWMilSimCTSFOI": false,
|
|
||||||
"additionnalGearTan": false,
|
|
||||||
"additionnalGearBlack": false,
|
|
||||||
"additionnalGearUntar": false,
|
|
||||||
"additionnalClothing": false,
|
|
||||||
"andrudisQuestManiac": false
|
|
||||||
},
|
|
||||||
"preWipeEvents": {
|
|
||||||
"raidersOnAllMaps": false,
|
|
||||||
"killaOnFactory": false,
|
|
||||||
"allBossesOnReserve": false,
|
|
||||||
"allTradersSellCheapItems": false,
|
|
||||||
"makeObdolbosPowerful": false,
|
|
||||||
"gluhkarOnLabs": false
|
|
||||||
},
|
|
||||||
"inGameEvents": {
|
|
||||||
"heatWave": false
|
|
||||||
},
|
|
||||||
"hideWarningMessage": false,
|
|
||||||
"showModLogs": true
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
@ -1,64 +0,0 @@
|
|||||||
|
|
||||||
This project was created to automate most parts of building and setting up an environment.
|
|
||||||
|
|
||||||
## **NodeJS 14.15.3:**
|
|
||||||
|
|
||||||
The first step would be to install nodejs on your pc, the version you NEED is **14.15.3**
|
|
||||||
|
|
||||||
That version is the one that has been used to test the mod templates and build scripts.
|
|
||||||
|
|
||||||
It can be downloaded from here: https://nodejs.org/download/release/v14.15.3/
|
|
||||||
|
|
||||||
A system reboot may be needed after install.
|
|
||||||
|
|
||||||
## **IDE:**
|
|
||||||
|
|
||||||
The second step is having an IDE ready. For the currect purpose we've setup a VSCodium workspace file.
|
|
||||||
|
|
||||||
You CAN use Visual Studio Code if you so desire, just keep in mind that our dev tests on the mod files was done using VSCodium.
|
|
||||||
|
|
||||||
You can get VSCodium here: https://vscodium.com/#install
|
|
||||||
|
|
||||||
## **Workspace:**
|
|
||||||
|
|
||||||
Once you have NodeJS and VSCodium ready, open the mod.code-workspace file with VSCodium (File->Open Worspace from File...).
|
|
||||||
|
|
||||||
Once the project loads into VSCodium you will be recommended to install the ESLint plugin. This is HIGHLY recommended.
|
|
||||||
|
|
||||||
## **Environment Setup:**
|
|
||||||
|
|
||||||
There is a task that will automatically setup your environment to use typescript.
|
|
||||||
|
|
||||||
To run it, you just need to go to:
|
|
||||||
|
|
||||||
> Terminal->Run Task...->Show All Tasks...->npm: install
|
|
||||||
|
|
||||||
After running this task, your environment will be ready to start coding.
|
|
||||||
|
|
||||||
DO NOT remove the node_modules folder, this is an auto generated directory that has the required dependencies to be able to use typescript and more.
|
|
||||||
|
|
||||||
## **IMPORTANT:**
|
|
||||||
|
|
||||||
Before starting to work on your mod, we suggest you read about Dependency Injection and Inversion of Control as this is the adopted architecture SPT-AKI has adopted.
|
|
||||||
|
|
||||||
It will be difficult to understand some of the problems you may be having if you dont understand the basics of it.
|
|
||||||
|
|
||||||
A guide explaining all the essentials will be available on the hub on release for you to read about.
|
|
||||||
|
|
||||||
## **Coding:**
|
|
||||||
|
|
||||||
All your work should be centered around the mod.ts file as an entry point.
|
|
||||||
You can ONLY change the following properties from the package.json file: `"name"`, `"version"`, `"license"`: `"MIT"`, `"author"`, `"akiVersion"`.
|
|
||||||
|
|
||||||
If you have never used typescript before, you can read about it here: https://www.typescriptlang.org/docs/
|
|
||||||
|
|
||||||
## **Distributing your mod:**
|
|
||||||
|
|
||||||
The project has been set up with an automatic task that will copy and zip ALL required files for your mod to work on SPT-AKI.
|
|
||||||
To run this task you just need to go to:
|
|
||||||
|
|
||||||
> Terminal->Run Task...->Show All Tasks...->npm: build:zip
|
|
||||||
|
|
||||||
The output will be a mod.zip file that will appear on the root of the project.
|
|
||||||
|
|
||||||
Always verify that all files were included into the zip file.
|
|
@ -1,151 +0,0 @@
|
|||||||
{
|
|
||||||
"items": {
|
|
||||||
"allExaminedItems": false,
|
|
||||||
"weightChanges": false,
|
|
||||||
"moreStack": false,
|
|
||||||
"equipRigsWithArmors": false,
|
|
||||||
"forceMoneyStack": false,
|
|
||||||
"removeSecureContainerFilters": false,
|
|
||||||
"removeBackpacksRestrictions": false,
|
|
||||||
"removeContainersRestrictions": false,
|
|
||||||
"inRaidModdable": false,
|
|
||||||
"increaseLootExp": false,
|
|
||||||
"increaseExamineExp": false,
|
|
||||||
"removeKeyUsageNumber": false,
|
|
||||||
"stackableBarters": {
|
|
||||||
"activated": false,
|
|
||||||
"battery": 1,
|
|
||||||
"buildingMaterials": 1,
|
|
||||||
"electronics": 1,
|
|
||||||
"householdGoods": 1,
|
|
||||||
"jewelry": 1,
|
|
||||||
"medicalSupplies": 1,
|
|
||||||
"lubricant": 1,
|
|
||||||
"tools": 1,
|
|
||||||
"other": 1
|
|
||||||
},
|
|
||||||
"weaponMalfunctions": {
|
|
||||||
"overheat": false,
|
|
||||||
"jam": false,
|
|
||||||
"slide": false,
|
|
||||||
"misfire": false,
|
|
||||||
"feed": false
|
|
||||||
},
|
|
||||||
"weaponDurabilities": {
|
|
||||||
"minimumSpawnDurability": false,
|
|
||||||
"maximumSpawnDurability": false
|
|
||||||
},
|
|
||||||
"removeAllGearPenalties": false,
|
|
||||||
"removeItemDurabilityBurn": false,
|
|
||||||
"removeBulletWeaponDurabilityDamage": false,
|
|
||||||
"removeWeaponPresetRestriction": false,
|
|
||||||
"changeIndividualItemProperty": {
|
|
||||||
"activated": false,
|
|
||||||
"itemList": {
|
|
||||||
"__REPLACEMEBYITEMID__": {
|
|
||||||
"spawnChance": 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hideout": {
|
|
||||||
"changeFuelConsumptionRate": false,
|
|
||||||
"fastHideoutConstruction": false,
|
|
||||||
"fastHideoutProduction": false,
|
|
||||||
"fastScavCase": false,
|
|
||||||
"scavCasePriceReducer": false,
|
|
||||||
"removeConstructionRequirements": 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,
|
|
||||||
"removeInRaidRestrictions": false,
|
|
||||||
"disableFallDamage": false,
|
|
||||||
"allSkillsMaster": false,
|
|
||||||
"enableSkillBotReload": false,
|
|
||||||
"enableSkillBotSound": false,
|
|
||||||
"removeScavKarma": false,
|
|
||||||
"energyDrainRate": false,
|
|
||||||
"energyDrainTime": false,
|
|
||||||
"hydrationDrainRate": false,
|
|
||||||
"hydrationDrainTime": false,
|
|
||||||
"regenerationLoopTime": false,
|
|
||||||
"energyRestoration": false,
|
|
||||||
"hydrationRestoration": false
|
|
||||||
},
|
|
||||||
"traders": {
|
|
||||||
"allQuestsAvailable": false,
|
|
||||||
"allClothesFree": false,
|
|
||||||
"allClothesForEverySide": false,
|
|
||||||
"changeFleaMarketLvl": false,
|
|
||||||
"insuranceTime": {
|
|
||||||
"activated": false,
|
|
||||||
"therapist": {
|
|
||||||
"activated": false,
|
|
||||||
"min": 0,
|
|
||||||
"max": 0
|
|
||||||
},
|
|
||||||
"prapor": {
|
|
||||||
"activated": false,
|
|
||||||
"min": 0,
|
|
||||||
"max": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"traderChanges": {
|
|
||||||
"allTraders4Stars": false,
|
|
||||||
"unlockAllItemsAtLL1": false,
|
|
||||||
"removeItemsFromQuestLocks": false
|
|
||||||
},
|
|
||||||
"maxInsuranceStorageTime": false,
|
|
||||||
"preventFenceMastering": false,
|
|
||||||
"removeFIRConditionOnQuests": false
|
|
||||||
},
|
|
||||||
"raids": {
|
|
||||||
"noExtractRestrictions": false,
|
|
||||||
"allExtractionsAvailable": false,
|
|
||||||
"increasedBossChance": false,
|
|
||||||
"extendedRaid": false,
|
|
||||||
"removeLabsKeycard": false,
|
|
||||||
"extractionsExtended": false,
|
|
||||||
"insuranceOnAllMaps": false
|
|
||||||
},
|
|
||||||
"fixes": {
|
|
||||||
"finsChokeMeHarder": true,
|
|
||||||
"chompsRaiderSpawnFix": true,
|
|
||||||
"justNUsEvenMoreOpenZones": true
|
|
||||||
},
|
|
||||||
"other": {
|
|
||||||
"compatibilityMods": {
|
|
||||||
"terragroupSpecialist": false,
|
|
||||||
"coDMWMilSimCTSFOI": false,
|
|
||||||
"additionnalGearTan": false,
|
|
||||||
"additionnalGearBlack": false,
|
|
||||||
"additionnalGearUntar": false,
|
|
||||||
"additionnalClothing": false,
|
|
||||||
"andrudisQuestManiac": false
|
|
||||||
},
|
|
||||||
"preWipeEvents": {
|
|
||||||
"raidersOnAllMaps": false,
|
|
||||||
"killaOnFactory": false,
|
|
||||||
"allBossesOnReserve": false,
|
|
||||||
"allTradersSellCheapItems": false,
|
|
||||||
"makeObdolbosPowerful": false,
|
|
||||||
"gluhkarOnLabs": false
|
|
||||||
},
|
|
||||||
"inGameEvents": {
|
|
||||||
"heatWave": false
|
|
||||||
},
|
|
||||||
"hideWarningMessage": false,
|
|
||||||
"showModLogs": true
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,122 +0,0 @@
|
|||||||
{
|
|
||||||
"items": {
|
|
||||||
"default": "{OPTION NAME} option is incorrect, {option to enable} or {option to disable}, check the readme.pdf for more info.",
|
|
||||||
"allExaminedItems": "AllExaminedItems option is incorrect, it must be true to true to activate or false to disable, check the readme.pdf for more info.",
|
|
||||||
"weightChanges": "WeightChanger option is incorrect, it must be a number to be correct and will only work as a multiplier above 0, if you selected a number below 0, Defaulting to 0. check the readme.pdf for more info.",
|
|
||||||
"moreStack": "MoreStack option is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"equipRigsWithArmors": "EquipRigsWithArmors option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"forceMoneyStack": "ForceMoneyStack option is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"removeSecureContainerFilters": "RemoveSecureContainerFilters option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"removeBackpacksRestrictions": "RemoveBackpacksRestrictions option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"removeContainersRestrictions": "RemoveContainersRestrictions option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"inRaidModdable": "InRaidModdable option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"increaseLootExp": "IncreaseLootExp option is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"increaseExamineExp": "IncreaseExamineExp option is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"removeKeyUsageNumber": "RemoveKeyUsageNumber option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"stackableBarters": "StackableBarters option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"removeAllGearPenalties": "RemoveAllGearPenalties option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"removeItemDurabilityBurn": "RemoveItemDurabilityBurn option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"removeBulletWeaponDurabilityDamage": "RemoveBulletWeaponDurabilityDamage option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"removeWeaponPresetRestriction": "RemoveWeaponPresetRestriction option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"changeIndividualItemProperty": {
|
|
||||||
"activated": "ChangeIndividualItemProperty[activated] option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info."
|
|
||||||
},
|
|
||||||
"weaponMalfunctions": {
|
|
||||||
"overheat": "Malfunction: Overheat option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info",
|
|
||||||
"jam": "Malfunction: Jam option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info",
|
|
||||||
"slide": "Malfunction: Slide option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info",
|
|
||||||
"misfire": "Malfunction: Misfire option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info",
|
|
||||||
"feed": "Malfunction: Feed option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info"
|
|
||||||
},
|
|
||||||
"weaponDurabilities": {
|
|
||||||
"minimumSpawnDurability": "Weapon durabilities: Minimum spawn durability value is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"maximumSpawnDurability": "Weapon durabilities: Maximum spawn durability value is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hideout": {
|
|
||||||
"changeFuelConsumptionRate": "ChangeFuelConsumptionRate option is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"fastHideoutConstruction": "FastHideoutConstruction option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"fastHideoutProduction": "FastHideoutProduction option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"fastScavCase": "FastScavCase option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"scavCasePriceReducer": "ScavCasePriceReducer option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"removeConstructionsRequirements": "RemoveConstructionsRequirements option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info."
|
|
||||||
},
|
|
||||||
"player": {
|
|
||||||
"removeScavTimer": "RemoveScavTimer option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"changeSkillProgressionMultiplier": "ChangeSkillProgressionMultiplier option is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"changeWeaponSkillMultiplier": "ChangeWeaponSkillMultiplier option is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"disableSkillFatigue": "DisableSkillFatigue option is incorrect, it must be either true or \"Custom\" to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"skillMinEffectiveness": "SkillMinEffectiveness option is incorrect, it must be a number to activate. check the readme.pdf for more info.",
|
|
||||||
"skillFatiguePerPoint": "SkillFatiguePerPoint option is incorrect, it must be a number to activate. check the readme.pdf for more info.",
|
|
||||||
"skillFreshEffectiveness": "SkillFreshEffectiveness option is incorrect, it must be a number to activate. check the readme.pdf for more info.",
|
|
||||||
"skillFreshPoints": "SkillFreshPoints option is incorrect, it must be a number to activate. check the readme.pdf for more info.",
|
|
||||||
"skillPointsBeforeFatigue": "SkillPointsBeforeFatigue option is incorrect, it must be a number to activate. check the readme.pdf for more info.",
|
|
||||||
"skillFatigueReset": "SkillFatigueReset option is incorrect, it must be a number to activate. check the readme.pdf for more info.",
|
|
||||||
"changeMaxStamina": "ChangeMaxStamina option is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"unlimitedStamina": "UnlimitedStamina option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"removeInRaidsRestrictions": "RemoveInRaidsRestrictions option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"allSkillsMaster": "AllSkillsMaster option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"removeScavKarma": "AllSkillsMaster option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"enableSkillBotReload": "EnableSkillBotReload option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"enableSkillBotSound": "EnableSkillBotSound option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"disableFallDamage": "DisableFallDamage option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"energyDrainRate": "EnergyDrainRate option is incorrect, it must be a boolean in order to work (false or number). check the readme.pdf for more info.",
|
|
||||||
"energyDrainTime": "EnergyDrainTime option is incorrect, it must be a boolean in order to work (false or number). check the readme.pdf for more info.",
|
|
||||||
"hydrationDrainRate": "hydrationDrainRate option is incorrect, it must be a boolean in order to work (false or number). check the readme.pdf for more info.",
|
|
||||||
"hydrationDrainTime": "hydrationDrainTime option is incorrect, it must be a boolean in order to work (false or number). check the readme.pdf for more info.",
|
|
||||||
"regenerationLoopTime": "RegenerationLoopTime option is incorrect, it must be a number to activate or false to disable, check the readme.pdf for more info.",
|
|
||||||
"energyRestoration": "EnergyRestoration option is incorrect, it must be a number to activate or false to disable, check the readme.pdf for more info.",
|
|
||||||
"hydrationRestoration": "HydrationRestoration option is incorrect, it must be a number to activate or false to disable, check the readme.pdf for more info."
|
|
||||||
},
|
|
||||||
"traders": {
|
|
||||||
"allQuestsAvailable": "AllQuestsAvailable option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"allClothesFree": "AllClothesFree option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"allClothesForEverySide": "AllClotheForEverySide option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"changeFleaMarketLvl": "ChangeFleaMarketLvl option is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"insuranceTime": {
|
|
||||||
"activated": "InsuranceTime[activated] option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"therapist": {
|
|
||||||
"activated": "InsuranceTime[Therapist][activated] option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info."
|
|
||||||
},
|
|
||||||
"prapor": {
|
|
||||||
"activated": "InsuranceTime[Prapor][activated] option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"traderChanges": {
|
|
||||||
"allTraders4Stars": "AllTraders4Stars option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"unlockAllItemsAtLL1": "UnlockAllItemsAtLL1 option is incorrect, it must be true to activate or false to disable. Check the readme.pdf for more info.",
|
|
||||||
"removeItemsFromQuestLocks": "RemoveItemsFromQuestLocks option is incorrect, it must be true to activate or false to disable. Check the readme.pdf for more info.",
|
|
||||||
"all4StarAndLL1": "AllTraders4Stars & UnlockAllItemsAtLL1 are active, disable one of them!"
|
|
||||||
},
|
|
||||||
"maxInsuranceStorageTime": "WeightChanger option is incorrect, it must be a number to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"PreventFenceMastering": "PreventFenceMastering option is incorrect, it must be true to activate or false to disable. Check the readme.pdf for more info.",
|
|
||||||
"removeFIRConditionOnQuests": "Remove FIR condition on quests option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info."
|
|
||||||
},
|
|
||||||
"raids": {
|
|
||||||
"noExtractRestrictions": "NoExtractsRestrictions option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"allExtractionsAvailable": "AllExtractionsAvailable option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"increasedBossChance": "IncreasedBossChance option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"extendedRaid": "ExtendedRaid option is incorrect, it must be false or a number in order to work. check the readme.pdf for more info.",
|
|
||||||
"removeLabsKeycard": "RemoveLabKeycard option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"extractionsExtended": "ExtractionsExtended option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"insuranceOnAllMaps": "InsuranceOnAllMaps option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info."
|
|
||||||
},
|
|
||||||
"other": {
|
|
||||||
"preWipeEvents": {
|
|
||||||
"raidersOnAllMaps": "Raiders on all maps option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"killaOnFactory":"Killa on factory option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"allBossesOnReserve": "All bosses on reserve option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"allTradersSellCheapItems": "All bosses on reserve option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"makeObdolbosPowerful": "Make Obdolbos Powerfull option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info.",
|
|
||||||
"gluhkarOnLabs": "Gluhkar on labs option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info."
|
|
||||||
},
|
|
||||||
"inGameEvents": {
|
|
||||||
"heatWave": "heatWave option is incorrect, it must be true to activate or false to disable. check the readme.pdf for more info."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fixes": {
|
|
||||||
"finsChokeMeHarder": "Fins-ChokeMeHarder option is incorrect, it must be true to activate or false to disable, check the readme.pdf for more info.",
|
|
||||||
"chompsRaiderSpawnFix": "Chomps-RaiderSpawnFix option is incorrect, it must be true to activate or false to disable, check the readme.pdf for more info.",
|
|
||||||
"justNUsEvenMoreOpenZones": "JustNUs-EvenMoreOpenzones option is incorrect, it must be true to activate or false to disable, check the readme.pdf for more info."
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,197 +0,0 @@
|
|||||||
export interface StackableBarters
|
|
||||||
{
|
|
||||||
activated: boolean;
|
|
||||||
battery: number;
|
|
||||||
buildingMaterials: number;
|
|
||||||
electronics: number;
|
|
||||||
householdGoods: number;
|
|
||||||
jewelry: number;
|
|
||||||
medicalSupplies: number;
|
|
||||||
lubricant: number;
|
|
||||||
tools: number;
|
|
||||||
other: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface WeaponMalfunctions
|
|
||||||
{
|
|
||||||
overheat: boolean;
|
|
||||||
jam: boolean;
|
|
||||||
slide: boolean;
|
|
||||||
misfire: boolean;
|
|
||||||
feed: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface WeaponDurabilities
|
|
||||||
{
|
|
||||||
minimumSpawnDurability: boolean | number;
|
|
||||||
maximumSpawnDurability: boolean | number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Items
|
|
||||||
{
|
|
||||||
allExaminedItems: boolean;
|
|
||||||
weightChanges: boolean | number;
|
|
||||||
moreStack: boolean | number;
|
|
||||||
equipRigsWithArmors: boolean;
|
|
||||||
forceMoneyStack: boolean | number;
|
|
||||||
removeSecureContainerFilters: boolean;
|
|
||||||
removeBackpacksRestrictions: boolean;
|
|
||||||
removeContainersRestrictions: boolean;
|
|
||||||
inRaidModdable: boolean;
|
|
||||||
increaseLootExp: boolean | number;
|
|
||||||
increaseExamineExp: boolean | number;
|
|
||||||
removeKeyUsageNumber: boolean;
|
|
||||||
stackableBarters: StackableBarters;
|
|
||||||
weaponMalfunctions: WeaponMalfunctions;
|
|
||||||
weaponDurabilities: WeaponDurabilities;
|
|
||||||
removeAllGearPenalties: boolean;
|
|
||||||
removeItemDurabilityBurn: boolean;
|
|
||||||
removeBulletWeaponDurabilityDamage: boolean;
|
|
||||||
removeWeaponPresetRestriction: boolean;
|
|
||||||
changeIndividualItemProperty: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Hideout
|
|
||||||
{
|
|
||||||
changeFuelConsumptionRate: boolean | number;
|
|
||||||
fastHideoutConstruction: boolean;
|
|
||||||
fastHideoutProduction: boolean;
|
|
||||||
fastScavCase: boolean;
|
|
||||||
scavCasePriceReducer: boolean;
|
|
||||||
removeConstructionRequirements: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Player
|
|
||||||
{
|
|
||||||
removeScavTimer: boolean;
|
|
||||||
changeSkillProgressionMultiplier: boolean | number;
|
|
||||||
changeWeaponSkillMultiplier: boolean | number;
|
|
||||||
disableSkillFatigue: boolean | string;
|
|
||||||
skillMinEffectiveness: number;
|
|
||||||
skillFatiguePerPoint: number;
|
|
||||||
skillFreshEffectiveness: number;
|
|
||||||
skillFreshPoints: number;
|
|
||||||
skillPointsBeforeFatigue: number;
|
|
||||||
skillFatigueReset: number;
|
|
||||||
changeMaxStamina: boolean | number;
|
|
||||||
unlimitedStamina: boolean;
|
|
||||||
removeInRaidsRestrictions: boolean;
|
|
||||||
disableFallDamage: boolean;
|
|
||||||
allSkillsMaster: boolean;
|
|
||||||
enableSkillBotReload: boolean;
|
|
||||||
enableSkillBotSound: boolean;
|
|
||||||
removeScavKarma: boolean;
|
|
||||||
energyDrainRate: boolean | number;
|
|
||||||
energyDrainTime: boolean | number;
|
|
||||||
hydrationDrainRate: boolean | number;
|
|
||||||
hydrationDrainTime: boolean | number;
|
|
||||||
regenerationLoopTime: boolean | number;
|
|
||||||
energyRestoration: boolean | number;
|
|
||||||
hydrationRestoration: boolean | number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Therapist
|
|
||||||
{
|
|
||||||
activated: boolean;
|
|
||||||
min: number;
|
|
||||||
max: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Prapor
|
|
||||||
{
|
|
||||||
activated: boolean;
|
|
||||||
min: number;
|
|
||||||
max: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface InsuranceTime
|
|
||||||
{
|
|
||||||
activated: boolean;
|
|
||||||
therapist: Therapist;
|
|
||||||
prapor: Prapor;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface TraderChanges
|
|
||||||
{
|
|
||||||
allTraders4Stars: boolean;
|
|
||||||
unlockAllItemsAtLL1: boolean;
|
|
||||||
removeItemsFromQuestLocks: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Traders
|
|
||||||
{
|
|
||||||
allQuestsAvailable: boolean;
|
|
||||||
allClothesFree: boolean;
|
|
||||||
allClothesForEverySide: boolean;
|
|
||||||
changeFleaMarketLvl: boolean | number;
|
|
||||||
insuranceTime: InsuranceTime;
|
|
||||||
traderChanges: TraderChanges;
|
|
||||||
maxInsuranceStorageTime: boolean | number;
|
|
||||||
preventFenceMastering: boolean;
|
|
||||||
removeFIRConditionOnQuests: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Raids
|
|
||||||
{
|
|
||||||
noExtractRestrictions: boolean;
|
|
||||||
allExtractionsAvailable: boolean;
|
|
||||||
increasedBossChance: boolean;
|
|
||||||
extendedRaid: boolean | number;
|
|
||||||
removeLabsKeycard: boolean;
|
|
||||||
extractionsExtended: boolean;
|
|
||||||
insuranceOnAllMaps: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Fixes
|
|
||||||
{
|
|
||||||
finsChokeMeHarder: boolean;
|
|
||||||
chompsRaiderSpawnFix: boolean;
|
|
||||||
justNUsEvenMoreOpenZones: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface CompatibilityMods
|
|
||||||
{
|
|
||||||
terragroupSpecialist: boolean;
|
|
||||||
coDMWMilSimCTSFOI: boolean;
|
|
||||||
additionnalGearTan: boolean;
|
|
||||||
additionnalGearBlack: boolean;
|
|
||||||
additionnalGearUntar: boolean;
|
|
||||||
additionnalClothing: boolean;
|
|
||||||
andrudisQuestManiac: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface PreWipeEvents
|
|
||||||
{
|
|
||||||
raidersOnAllMaps: boolean;
|
|
||||||
killaOnFactory: boolean;
|
|
||||||
allBossesOnReserve: boolean;
|
|
||||||
allTradersSellCheapItems: boolean;
|
|
||||||
makeObdolbosPowerful: boolean;
|
|
||||||
gluhkarOnLabs: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface InGameEvents
|
|
||||||
{
|
|
||||||
heatWave: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Other
|
|
||||||
{
|
|
||||||
compatibilityMods: CompatibilityMods;
|
|
||||||
preWipeEvents: PreWipeEvents;
|
|
||||||
inGameEvents: InGameEvents;
|
|
||||||
hideWarningMessage: boolean;
|
|
||||||
showModLogs: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IConfig
|
|
||||||
{
|
|
||||||
items: Items;
|
|
||||||
hideout: Hideout;
|
|
||||||
player: Player;
|
|
||||||
traders: Traders;
|
|
||||||
raids: Raids;
|
|
||||||
fixes: Fixes;
|
|
||||||
other: Other;
|
|
||||||
}
|
|
||||||
|
|
@ -1,172 +0,0 @@
|
|||||||
export interface ChangeIndividualItemProperty
|
|
||||||
{
|
|
||||||
activated: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface WeaponMalfunctions
|
|
||||||
{
|
|
||||||
overheat: string;
|
|
||||||
jam: string;
|
|
||||||
slide: string;
|
|
||||||
misfire: string;
|
|
||||||
feed: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface WeaponDurabilities
|
|
||||||
{
|
|
||||||
minimumSpawnDurability: string;
|
|
||||||
maximumSpawnDurability: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Items
|
|
||||||
{
|
|
||||||
default: string;//
|
|
||||||
allExaminedItems: string;
|
|
||||||
weightChanges: string;
|
|
||||||
moreStack: string;
|
|
||||||
equipRigsWithArmors: string;
|
|
||||||
forceMoneyStack: string;
|
|
||||||
removeSecureContainerFilters: string;
|
|
||||||
removeBackpacksRestrictions: string;
|
|
||||||
removeContainersRestrictions: string;
|
|
||||||
inRaidModdable: string;
|
|
||||||
increaseLootExp: string;
|
|
||||||
increaseExamineExp: string;
|
|
||||||
removeKeyUsageNumber: string;
|
|
||||||
stackableBarters: string;
|
|
||||||
removeAllGearPenalties: string;
|
|
||||||
removeItemDurabilityBurn: string;
|
|
||||||
removeBulletWeaponDurabilityDamage: string;
|
|
||||||
removeWeaponPresetRestriction: string;
|
|
||||||
changeIndividualItemProperty: ChangeIndividualItemProperty;
|
|
||||||
weaponMalfunctions: WeaponMalfunctions;
|
|
||||||
weaponDurabilities: WeaponDurabilities;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Hideout
|
|
||||||
{
|
|
||||||
changeFuelConsumptionRate: string;
|
|
||||||
fastHideoutConstruction: string;
|
|
||||||
fastHideoutProduction: string;
|
|
||||||
fastScavCase: string;
|
|
||||||
scavCasePriceReducer: string;
|
|
||||||
removeConstructionRequirements: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Player
|
|
||||||
{
|
|
||||||
removeScavTimer: string;
|
|
||||||
changeSkillProgressionMultiplier: string;
|
|
||||||
changeWeaponSkillMultiplier: string;
|
|
||||||
disableSkillFatigue: string;
|
|
||||||
skillMinEffectiveness: string;
|
|
||||||
skillFatiguePerPoint: string;
|
|
||||||
skillFreshEffectiveness: string;
|
|
||||||
skillFreshPoints: string;
|
|
||||||
skillPointsBeforeFatigue: string;
|
|
||||||
skillFatigueReset: string;
|
|
||||||
changeMaxStamina: string;
|
|
||||||
unlimitedStamina: string;
|
|
||||||
removeInRaidsRestrictions: string;
|
|
||||||
allSkillsMaster: string;
|
|
||||||
removeScavKarma: string;
|
|
||||||
enableSkillBotReload: string;
|
|
||||||
enableSkillBotSound: string;
|
|
||||||
disableFallDamage: string;
|
|
||||||
energyDrainRate: string;
|
|
||||||
energyDrainTime: string;
|
|
||||||
hydrationDrainRate: string;
|
|
||||||
hydrationDrainTime: string;
|
|
||||||
regenerationLoopTime: string;
|
|
||||||
energyRestoration: string;
|
|
||||||
hydrationRestoration: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Therapist
|
|
||||||
{
|
|
||||||
activated: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Prapor
|
|
||||||
{
|
|
||||||
activated: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface InsuranceTime
|
|
||||||
{
|
|
||||||
activated: string;
|
|
||||||
therapist: Therapist;
|
|
||||||
prapor: Prapor;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface TraderChanges
|
|
||||||
{
|
|
||||||
allTraders4Stars: string;
|
|
||||||
unlockAllItemsAtLL1: string;
|
|
||||||
removeItemsFromQuestLocks: string;
|
|
||||||
all4StarAndLL1: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Traders
|
|
||||||
{
|
|
||||||
allQuestsAvailable: string;
|
|
||||||
allClothesFree: string;
|
|
||||||
allClothesForEverySide: string;
|
|
||||||
changeFleaMarketLvl: string;
|
|
||||||
insuranceTime: InsuranceTime;
|
|
||||||
traderChanges: TraderChanges;
|
|
||||||
maxInsuranceStorageTime: string;
|
|
||||||
preventFenceMastering: string;
|
|
||||||
removeFIRConditionOnQuests: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Raids
|
|
||||||
{
|
|
||||||
noExtractRestrictions: string;
|
|
||||||
allExtractionsAvailable: string;
|
|
||||||
increasedBossChance: string;
|
|
||||||
extendedRaid: string;
|
|
||||||
removeLabsKeycard: string;
|
|
||||||
extractionsExtended: string;
|
|
||||||
insuranceOnAllMaps: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface PreWipeEvents
|
|
||||||
{
|
|
||||||
raidersOnAllMaps: string;
|
|
||||||
killaOnFactory: string;
|
|
||||||
allBossesOnReserve: string;
|
|
||||||
allTradersSellCheapItems: string;
|
|
||||||
makeObdolbosPowerful: string;
|
|
||||||
gluhkarOnLabs: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Other
|
|
||||||
{
|
|
||||||
preWipeEvents: PreWipeEvents;
|
|
||||||
inGameEvents: InGameEvents;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface InGameEvents
|
|
||||||
{
|
|
||||||
heatWave: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Fixes
|
|
||||||
{
|
|
||||||
finsChokeMeHarder: string;
|
|
||||||
chompsRaiderSpawnFix: string;
|
|
||||||
justNUsEvenMoreOpenZones: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ILocale
|
|
||||||
{
|
|
||||||
items: Items;
|
|
||||||
hideout: Hideout;
|
|
||||||
player: Player;
|
|
||||||
traders: Traders;
|
|
||||||
raids: Raids;
|
|
||||||
other: Other;
|
|
||||||
fixes: Fixes;
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "AllinOneMod",
|
|
||||||
"version": "3.0.0",
|
|
||||||
"main": "src/mod.js",
|
|
||||||
"license": "CC-BY-NC-ND 4.0",
|
|
||||||
"author": "Ereshkigal",
|
|
||||||
"akiVersion": "3.0.0",
|
|
||||||
"updated by": "CWX, Valens",
|
|
||||||
"scripts": {
|
|
||||||
"setup:environment": "npm i",
|
|
||||||
"build:unzipped": "copyfiles -e \"./node_modules/**/*.*\" -e \"./dist/**/*.*\" -e \"./package-lock.json\" -e \"./tsconfig.json\" -e \"./README.txt\" -e \"./mod.code-workspace\" ./**/*.* ./dist",
|
|
||||||
"zip:files": "cd dist/ && bestzip ../mod.zip *",
|
|
||||||
"build:zip": "npm run clean:environment && npm run build:unzipped && npm run zip:files",
|
|
||||||
"clean:environment": "node -e \"require('fs').rm('mod.zip', ()=>{})\" && node -e \"require('fs').rmdir('./dist/',{recursive:true},()=>{})\""
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/node": "^14.15.3",
|
|
||||||
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
|
||||||
"@typescript-eslint/parser": "^4.33.0",
|
|
||||||
"copyfiles": "2.4.1",
|
|
||||||
"eslint": "7.26.0",
|
|
||||||
"tsyringe": "4.6.0",
|
|
||||||
"typescript": "4.6.4",
|
|
||||||
"bestzip": "2.2.1"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "AllinOneMod",
|
|
||||||
"author": "Ereshkigal",
|
|
||||||
"version": "3.0.0",
|
|
||||||
"akiVersion": "3.0.0",
|
|
||||||
"license": "CC-BY-NC-ND 4.0",
|
|
||||||
"main": "./src/mod.js",
|
|
||||||
"updated by": "CWX, Valens"
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
import { injectable } from "tsyringe";
|
|
||||||
import { IConfig } from "../models/IConfig";
|
|
||||||
import { ILocale } from "../models/ILocale";
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
export class AIOConfigHandler
|
|
||||||
{
|
|
||||||
private config: IConfig;
|
|
||||||
private locales: ILocale;
|
|
||||||
|
|
||||||
constructor()
|
|
||||||
{
|
|
||||||
this.config = require("../config/config.json");
|
|
||||||
this.locales = require("../locale/locale.json")
|
|
||||||
}
|
|
||||||
|
|
||||||
public getConfig(): IConfig
|
|
||||||
{
|
|
||||||
return this.config;
|
|
||||||
}
|
|
||||||
|
|
||||||
public getLocales(): ILocale
|
|
||||||
{
|
|
||||||
return this.locales;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,866 +0,0 @@
|
|||||||
import { inject, injectable } from "tsyringe";
|
|
||||||
import type { ILogger } from "@spt-aki/models/spt/utils/ILogger";
|
|
||||||
import { AIOConfigHandler } from "./AIOConfigHandler";
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
export class Notifications
|
|
||||||
{
|
|
||||||
constructor(
|
|
||||||
@inject("WinstonLogger") private logger: ILogger,
|
|
||||||
@inject("AIOConfigHandler") private configHandler: AIOConfigHandler
|
|
||||||
)
|
|
||||||
{}
|
|
||||||
|
|
||||||
public sendNotifications(): void
|
|
||||||
{
|
|
||||||
|
|
||||||
const config = this.configHandler.getConfig();
|
|
||||||
const locale = this.configHandler.getLocales();
|
|
||||||
|
|
||||||
if (!config.other.hideWarningMessage)
|
|
||||||
{
|
|
||||||
this.logger.info("[AIO Mod INFORMATION]");
|
|
||||||
this.logger.info("Please read the README.PDF carefully as this has all the information you need.");
|
|
||||||
this.logger.info("[AIO Mod INFORMATION]");
|
|
||||||
}
|
|
||||||
|
|
||||||
//Items:
|
|
||||||
// All Examined Items:
|
|
||||||
if (config.items.allExaminedItems)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: AllExaminedItems activated.");
|
|
||||||
if (typeof config.items.allExaminedItems !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.allExaminedItems);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Weight Changes:
|
|
||||||
if (config.items.weightChanges !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: WeightChanges activated.");
|
|
||||||
if (typeof config.items.weightChanges !== "boolean" && config.items.weightChanges <= 0)
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.weightChanges);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// More Stack:
|
|
||||||
if (config.items.moreStack !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: moreStack activated.");
|
|
||||||
if (typeof config.items.moreStack !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.moreStack);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Equip Rigs With Armors:
|
|
||||||
if (config.items.equipRigsWithArmors)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: equipRigsWithArmors activated.");
|
|
||||||
if (typeof config.items.equipRigsWithArmors !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.equipRigsWithArmors);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Force Money Stack:
|
|
||||||
if (config.items.forceMoneyStack !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: forceMoneyStack activated.");
|
|
||||||
if (typeof config.items.forceMoneyStack !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.forceMoneyStack);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove Secure Container Filters:
|
|
||||||
if (config.items.removeSecureContainerFilters)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeSecureContainerFilters activated.");
|
|
||||||
if (typeof config.items.removeSecureContainerFilters !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.removeSecureContainerFilters);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove Backpack Restrictions:
|
|
||||||
if (config.items.removeBackpacksRestrictions)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeBackpacksRestrictions activated.");
|
|
||||||
if (typeof config.items.removeBackpacksRestrictions !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.removeBackpacksRestrictions);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove Secure Container Filters:
|
|
||||||
if (config.items.removeContainersRestrictions)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeContainersRestrictions activated.");
|
|
||||||
if (typeof config.items.removeContainersRestrictions !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.removeContainersRestrictions);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// In Raid Moddable
|
|
||||||
if (config.items.inRaidModdable)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: inRaidModdable activated.");
|
|
||||||
if (typeof config.items.inRaidModdable !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.inRaidModdable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Increase Loot Exp
|
|
||||||
if (config.items.increaseLootExp !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: increaseLootExp activated.");
|
|
||||||
if (typeof config.items.increaseLootExp !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.increaseLootExp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Increase Examine Exp
|
|
||||||
if (config.items.increaseExamineExp !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: increaseExamineExp activated.");
|
|
||||||
if (typeof config.items.increaseExamineExp !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.increaseExamineExp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove Key Usage Number
|
|
||||||
if (config.items.removeKeyUsageNumber)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeKeyUsageNumber activated.");
|
|
||||||
if (typeof config.items.removeKeyUsageNumber !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.removeKeyUsageNumber);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stackable Barters
|
|
||||||
if (config.items.stackableBarters.activated)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: stackableBarters activated.");
|
|
||||||
if (typeof config.items.stackableBarters.activated !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.stackableBarters);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Weapon Malf - Overheat
|
|
||||||
if (config.items.weaponMalfunctions.overheat)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: weaponMalfunctions.overheat activated.");
|
|
||||||
if (typeof config.items.weaponMalfunctions.overheat !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.weaponMalfunctions.overheat);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Weapon Malf - jam
|
|
||||||
if (config.items.weaponMalfunctions.jam)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: weaponMalfunctions.jam activated.");
|
|
||||||
if (typeof config.items.weaponMalfunctions.jam !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.weaponMalfunctions.jam);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Weapon Malf - slide
|
|
||||||
if (config.items.weaponMalfunctions.slide)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: weaponMalfunctions.slide activated.");
|
|
||||||
if (typeof config.items.weaponMalfunctions.slide !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.weaponMalfunctions.slide);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Weapon Malf - misfire
|
|
||||||
if (config.items.weaponMalfunctions.misfire)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: weaponMalfunctions.misfire activated.");
|
|
||||||
if (typeof config.items.weaponMalfunctions.misfire !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.weaponMalfunctions.misfire);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Weapon Malf - misfire
|
|
||||||
if (config.items.weaponMalfunctions.feed)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: weaponMalfunctions.feed activated.");
|
|
||||||
if (typeof config.items.weaponMalfunctions.feed !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.weaponMalfunctions.feed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Weapon Dura - Min
|
|
||||||
if (config.items.weaponDurabilities.minimumSpawnDurability !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: weaponsDurabilities.minimumSpawnDurability activated.");
|
|
||||||
if (typeof config.items.weaponDurabilities.minimumSpawnDurability !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.weaponDurabilities.minimumSpawnDurability);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Weapon Dura - Max
|
|
||||||
if (config.items.weaponDurabilities.maximumSpawnDurability !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: weaponsDurabilities.maximumSpawnDurability activated.");
|
|
||||||
if (typeof config.items.weaponDurabilities.maximumSpawnDurability !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.weaponDurabilities.maximumSpawnDurability);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove All Gear Penalties
|
|
||||||
if (config.items.removeAllGearPenalties)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeAllGearPenalties activated.");
|
|
||||||
if (typeof config.items.removeAllGearPenalties !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.removeAllGearPenalties);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove Item Durability Burn
|
|
||||||
if (config.items.removeItemDurabilityBurn)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeItemDurabilityBurn activated.");
|
|
||||||
if (typeof config.items.removeItemDurabilityBurn !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.removeItemDurabilityBurn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove Bullet Weapon Durability Damage
|
|
||||||
if (config.items.removeBulletWeaponDurabilityDamage)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeBulletWeaponDurabilityDamage activated.");
|
|
||||||
if (typeof config.items.removeBulletWeaponDurabilityDamage !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.removeBulletWeaponDurabilityDamage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove Weapon Preset Restriction
|
|
||||||
if (config.items.removeWeaponPresetRestriction)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeWeaponPresetRestriction activated.");
|
|
||||||
if (typeof config.items.removeWeaponPresetRestriction !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.removeWeaponPresetRestriction);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change Indicidual Item Property
|
|
||||||
if (config.items.changeIndividualItemProperty.activated)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: changeIndividualItemProperty activated.");
|
|
||||||
if (typeof config.items.changeIndividualItemProperty.activated !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.items.changeIndividualItemProperty.activated);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hideout:
|
|
||||||
// Change Fuel Consumption Rate
|
|
||||||
if (config.hideout.changeFuelConsumptionRate !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: changeFuelConsumptionRate activated.");
|
|
||||||
if (typeof config.items.weaponDurabilities.maximumSpawnDurability !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.hideout.changeFuelConsumptionRate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fast Hideout Construction
|
|
||||||
if (config.hideout.fastHideoutConstruction)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: fastHideoutConstruction activated.");
|
|
||||||
if (typeof config.hideout.fastHideoutConstruction !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.hideout.fastHideoutConstruction);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fast Hideout Construction
|
|
||||||
if (config.hideout.fastHideoutProduction)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: fastHideoutProduction activated.");
|
|
||||||
if (typeof config.hideout.fastHideoutProduction !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.hideout.fastHideoutProduction);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fast Scav Case
|
|
||||||
if (config.hideout.fastScavCase)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: fastScavCase activated.");
|
|
||||||
if (typeof config.hideout.fastScavCase !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.hideout.fastScavCase);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Scav Case Price Reducer
|
|
||||||
if (config.hideout.scavCasePriceReducer)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: scavCasePriceReducer activated.");
|
|
||||||
if (typeof config.hideout.scavCasePriceReducer !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.hideout.scavCasePriceReducer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove Construction Requirements
|
|
||||||
if (config.hideout.removeConstructionRequirements)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeConstructionRequirements activated.");
|
|
||||||
if (typeof config.hideout.removeConstructionRequirements !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.hideout.removeConstructionRequirements);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Player:
|
|
||||||
// Remove Scav Timer
|
|
||||||
if (config.player.removeScavTimer)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeScavTimer activated.");
|
|
||||||
if (typeof config.player.removeScavTimer !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.removeScavTimer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change Skill Progression Multiplier
|
|
||||||
if (config.player.changeSkillProgressionMultiplier !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: changeSkillProgressionMultiplier activated.");
|
|
||||||
if (typeof config.player.changeSkillProgressionMultiplier !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.changeSkillProgressionMultiplier);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change Weapon Skill Multiplier
|
|
||||||
if (config.player.changeWeaponSkillMultiplier !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: changeWeaponSkillMultiplier activated.");
|
|
||||||
if (typeof config.player.changeWeaponSkillMultiplier !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.changeWeaponSkillMultiplier);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Disable Skill Fatigue
|
|
||||||
if (config.player.disableSkillFatigue !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: disableSkillFatigue activated.");
|
|
||||||
if (typeof config.player.disableSkillFatigue !== "boolean" && (<string> config.player.disableSkillFatigue).toLowerCase() !== "custom")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.disableSkillFatigue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// skillFatiguePerPoint
|
|
||||||
if (typeof config.player.skillFatiguePerPoint !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.skillFatiguePerPoint)
|
|
||||||
}
|
|
||||||
|
|
||||||
// skillFreshEffectiveness
|
|
||||||
if (typeof config.player.skillFreshEffectiveness !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.skillFreshEffectiveness)
|
|
||||||
}
|
|
||||||
|
|
||||||
// skillFreshPoints
|
|
||||||
if (typeof config.player.skillFreshPoints !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.skillFreshPoints)
|
|
||||||
}
|
|
||||||
|
|
||||||
// skillPointsBeforeFatigue
|
|
||||||
if (typeof config.player.skillPointsBeforeFatigue !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.skillPointsBeforeFatigue)
|
|
||||||
}
|
|
||||||
|
|
||||||
// skillFatigueReset
|
|
||||||
if (typeof config.player.skillFatigueReset !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.skillFatigueReset)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change Max Stamina
|
|
||||||
if (config.player.changeMaxStamina !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: changeMaxStamina activated.");
|
|
||||||
if (typeof config.player.changeMaxStamina !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.changeMaxStamina);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unlimited Stamina
|
|
||||||
if (config.player.unlimitedStamina)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: unlimitedStamina activated.");
|
|
||||||
if (typeof config.player.unlimitedStamina !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.unlimitedStamina);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove In Raid Restrictions
|
|
||||||
if (config.player.removeInRaidsRestrictions)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeInRaidsRestrictions activated.");
|
|
||||||
if (typeof config.player.removeInRaidsRestrictions !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.removeInRaidsRestrictions);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Diable Fall Damage
|
|
||||||
if (config.player.disableFallDamage)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: disableFallDamage activated.");
|
|
||||||
if (typeof config.player.disableFallDamage !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.disableFallDamage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// All Skills Master
|
|
||||||
if (config.player.allSkillsMaster)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: allSkillsMaster activated.");
|
|
||||||
if (typeof config.player.allSkillsMaster !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.allSkillsMaster);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Enable Skill BotReload
|
|
||||||
if (config.player.enableSkillBotReload)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: enableSkillBotReload activated.");
|
|
||||||
if (typeof config.player.enableSkillBotReload !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.enableSkillBotReload);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Enable Skill BotSound
|
|
||||||
if (config.player.enableSkillBotSound)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: enableSkillBotSound activated.");
|
|
||||||
if (typeof config.player.enableSkillBotSound !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.enableSkillBotSound);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove Scav Karma
|
|
||||||
if (config.player.removeScavKarma)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeScavKarma activated.");
|
|
||||||
if (typeof config.player.removeScavKarma !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.removeScavKarma);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Energy Drain Rate
|
|
||||||
if (config.player.energyDrainRate !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: energyDrainRate activated.");
|
|
||||||
if (typeof config.player.energyDrainRate !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.energyDrainRate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Energy Drain Time
|
|
||||||
if (config.player.energyDrainTime !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: energyDrainTime activated.");
|
|
||||||
if (typeof config.player.energyDrainTime !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.energyDrainTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hydratation Drain Rate
|
|
||||||
if (config.player.hydrationDrainRate !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: hydratationDrainRate activated.");
|
|
||||||
if (typeof config.player.hydrationDrainRate !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.hydrationDrainRate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hydratation Drain Time
|
|
||||||
if (config.player.hydrationDrainTime !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: hydratationDrainTime activated.");
|
|
||||||
if (typeof config.player.hydrationDrainTime !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.hydrationDrainTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Regeneration Loop Time
|
|
||||||
if (config.player.regenerationLoopTime !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: regenerationLoopTime activated.");
|
|
||||||
if (typeof config.player.regenerationLoopTime !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.regenerationLoopTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Energy Restoration
|
|
||||||
if (config.player.energyRestoration !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: energyRestoration activated.");
|
|
||||||
if (typeof config.player.energyRestoration !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.energyRestoration);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hydration Restoration
|
|
||||||
if (config.player.hydrationRestoration !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: hydrationRestoration activated.");
|
|
||||||
if (typeof config.player.hydrationRestoration !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.player.hydrationRestoration);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Traders:
|
|
||||||
// All Quests Available
|
|
||||||
if (config.traders.allQuestsAvailable)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeScavKarma activated.");
|
|
||||||
if (typeof config.traders.allQuestsAvailable !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.allQuestsAvailable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// All Clothes Free
|
|
||||||
if (config.traders.allClothesFree)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: allClothesFree activated.");
|
|
||||||
if (typeof config.traders.allClothesFree !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.allClothesFree);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// All Clothes For Every Side
|
|
||||||
if (config.traders.allClothesForEverySide)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: allClothesForEverySide activated.");
|
|
||||||
if (typeof config.traders.allClothesForEverySide !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.allClothesForEverySide);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change Flea Market Level
|
|
||||||
if (config.traders.changeFleaMarketLvl !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: changeFleaMarketLvl activated.");
|
|
||||||
if (typeof config.traders.changeFleaMarketLvl !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.changeFleaMarketLvl);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Insurance Time Activated
|
|
||||||
if (config.traders.insuranceTime.activated)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: insuranceTime activated.")
|
|
||||||
if (typeof config.traders.insuranceTime.activated !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.insuranceTime.activated);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Insurance Time - Therapist
|
|
||||||
if (config.traders.insuranceTime.therapist.activated)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: InsuranceTime.Therapist activated.")
|
|
||||||
if (typeof config.traders.insuranceTime.therapist.activated !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.insuranceTime.therapist.activated);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Insurance Time - Prapor
|
|
||||||
if (config.traders.insuranceTime.prapor.activated)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: InsuranceTime.Prapor activated.")
|
|
||||||
if (typeof config.traders.insuranceTime.prapor.activated !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.insuranceTime.prapor.activated);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// All Traders 4 Star - Unlock All Items At LL1
|
|
||||||
if (config.traders.traderChanges.unlockAllItemsAtLL1 && config.traders.traderChanges.allTraders4Stars)
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.traderChanges.all4StarAndLL1);
|
|
||||||
}
|
|
||||||
else if (config.traders.traderChanges.allTraders4Stars)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: allTraders4Stars activated.")
|
|
||||||
if (typeof config.traders.traderChanges.allTraders4Stars !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.traderChanges.allTraders4Stars);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (config.traders.traderChanges.unlockAllItemsAtLL1)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: unlockAllItemsAtLL1 activated.")
|
|
||||||
if (typeof config.traders.traderChanges.unlockAllItemsAtLL1 !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.traderChanges.unlockAllItemsAtLL1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove Items From Quest Locks
|
|
||||||
if (config.traders.traderChanges.removeItemsFromQuestLocks)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeItemsFromQuestLocks activated.")
|
|
||||||
if (typeof config.traders.traderChanges.removeItemsFromQuestLocks !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.traderChanges.removeItemsFromQuestLocks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Max Insurance Storage Time
|
|
||||||
if (config.traders.maxInsuranceStorageTime)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: maxInsuranceStorageTime activated.")
|
|
||||||
if (typeof config.traders.maxInsuranceStorageTime !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.maxInsuranceStorageTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Max Insurance Storage Time
|
|
||||||
if (config.traders.preventFenceMastering)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: preventFenceMastering activated.")
|
|
||||||
if (typeof config.traders.preventFenceMastering !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.preventFenceMastering);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove FIR Condition On Quests
|
|
||||||
if (config.traders.removeFIRConditionOnQuests)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeFIRConditionOnQuests activated.")
|
|
||||||
if (typeof config.traders.removeFIRConditionOnQuests !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.traders.removeFIRConditionOnQuests);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Raids:
|
|
||||||
// No Extract Restrictions
|
|
||||||
if (config.raids.noExtractRestrictions)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: noExtractRestrictions activated.")
|
|
||||||
if (typeof config.raids.noExtractRestrictions !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.raids.noExtractRestrictions);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// All Extractions Avaliable
|
|
||||||
if (config.raids.allExtractionsAvailable)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: allExtractionsAvailable activated.")
|
|
||||||
if (typeof config.raids.allExtractionsAvailable !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.raids.allExtractionsAvailable);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Increased Boss Chances
|
|
||||||
if (config.raids.increasedBossChance)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: increasedBossChance activated.")
|
|
||||||
if (typeof config.raids.increasedBossChance !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.raids.increasedBossChance);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Extended Raid
|
|
||||||
if (config.raids.extendedRaid !== false)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: changeFleaMarketLvl activated.");
|
|
||||||
if (typeof config.raids.extendedRaid !== "number")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.raids.extendedRaid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove Labs Keycard
|
|
||||||
if (config.raids.removeLabsKeycard)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: removeLabsKeycard activated.")
|
|
||||||
if (typeof config.raids.removeLabsKeycard !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.raids.removeLabsKeycard);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Extractions Extended
|
|
||||||
if (config.raids.extractionsExtended)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: extractionsExtended activated.")
|
|
||||||
if (typeof config.raids.extractionsExtended !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.raids.extractionsExtended);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Insurance On All Maps
|
|
||||||
if (config.raids.insuranceOnAllMaps)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: insuranceOnAllMaps activated.")
|
|
||||||
if (typeof config.raids.insuranceOnAllMaps !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.raids.insuranceOnAllMaps);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fixes:
|
|
||||||
// Fins Choke Me Harder
|
|
||||||
if (config.fixes.finsChokeMeHarder)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: finsChokeMeHarder activated.")
|
|
||||||
if (typeof config.fixes.finsChokeMeHarder !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.fixes.finsChokeMeHarder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Chomps Raider Spawn Fix
|
|
||||||
if (config.fixes.chompsRaiderSpawnFix)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: chompsRaiderSpawnFix activated.")
|
|
||||||
if (typeof config.fixes.chompsRaiderSpawnFix !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.fixes.chompsRaiderSpawnFix);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// justNUs Even More Open Zones
|
|
||||||
if (config.fixes.justNUsEvenMoreOpenZones)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: justNUsEvenMoreOpenZones activated.")
|
|
||||||
if (typeof config.fixes.justNUsEvenMoreOpenZones !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.fixes.justNUsEvenMoreOpenZones);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Other:
|
|
||||||
// Pre Wipe Events:
|
|
||||||
if (config.other.preWipeEvents.raidersOnAllMaps)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: raidersOnAllMaps activated.")
|
|
||||||
if (typeof config.other.preWipeEvents.raidersOnAllMaps !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.other.preWipeEvents.raidersOnAllMaps);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Killa On Factory:
|
|
||||||
if (config.other.preWipeEvents.killaOnFactory)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: killaOnFactory activated.")
|
|
||||||
if (typeof config.other.preWipeEvents.killaOnFactory !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.other.preWipeEvents.killaOnFactory);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// All Bosses On Reserve:
|
|
||||||
if (config.other.preWipeEvents.allBossesOnReserve)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: allBossesOnReserve activated.")
|
|
||||||
if (typeof config.other.preWipeEvents.allBossesOnReserve !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.other.preWipeEvents.allBossesOnReserve);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// All Traders Sell Cheap Items
|
|
||||||
if (config.other.preWipeEvents.allTradersSellCheapItems)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: allTradersSellCheapItems activated.")
|
|
||||||
if (typeof config.other.preWipeEvents.allTradersSellCheapItems !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.other.preWipeEvents.allTradersSellCheapItems);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make Obdolbos Powerful
|
|
||||||
if (config.other.preWipeEvents.makeObdolbosPowerful)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: makeObdolbosPowerful activated.")
|
|
||||||
if (typeof config.other.preWipeEvents.makeObdolbosPowerful !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.other.preWipeEvents.makeObdolbosPowerful);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Gluhkar On Labs
|
|
||||||
if (config.other.preWipeEvents.gluhkarOnLabs)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: gluhkarOnLabs activated.")
|
|
||||||
if (typeof config.other.preWipeEvents.gluhkarOnLabs !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.other.preWipeEvents.gluhkarOnLabs);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Heat Wave
|
|
||||||
if (config.other.inGameEvents.heatWave)
|
|
||||||
{
|
|
||||||
this.logger.info("AllInOne Mod: heatWave activated.")
|
|
||||||
if (typeof config.other.inGameEvents.heatWave !== "boolean")
|
|
||||||
{
|
|
||||||
this.logger.warning(locale.other.inGameEvents.heatWave);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,78 +0,0 @@
|
|||||||
import { inject, injectable } from "tsyringe";
|
|
||||||
import type { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
|
||||||
import { AIOConfigHandler } from "./AIOConfigHandler";
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
export class Fixes
|
|
||||||
{
|
|
||||||
constructor(
|
|
||||||
@inject("AIOConfigHandler") private configHandler: AIOConfigHandler,
|
|
||||||
@inject("DatabaseServer") private database: DatabaseServer
|
|
||||||
)
|
|
||||||
{}
|
|
||||||
|
|
||||||
public applyChanges(): void
|
|
||||||
{
|
|
||||||
const items = this.database.getTables().templates.items;
|
|
||||||
|
|
||||||
const maps = {
|
|
||||||
"bigmap": "ZoneBrige,ZoneCrossRoad,ZoneDormitory,ZoneGasStation,ZoneFactoryCenter,ZoneFactorySide,ZoneOldAZS,ZoneSnipeBrige,ZoneSnipeTower,ZoneSnipeFactory,ZoneBlockPost,ZoneBlockPostSniper,ZoneBlockPostSniper3,ZoneBlockPost,ZoneTankSquare,ZoneWade,ZoneCustoms,ZoneScavBase",
|
|
||||||
"laboratory": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
|
|
||||||
"rezervbase": "ZoneRailStrorage,ZonePTOR1,ZonePTOR2,ZoneBarrack,ZoneBunkerStorage,ZoneSubStorage,ZoneSubCommand",
|
|
||||||
"woods": "ZoneRedHouse,ZoneWoodCutter,ZoneHouse,ZoneBigRocks,ZoneRoad,ZoneMiniHouse,ZoneScavBase2,ZoneBrokenVill,ZoneClearVill,ZoneHighRocks",
|
|
||||||
"shoreline": "ZoneSanatorium1,ZoneSanatorium2,ZonePassFar,ZonePassClose,ZoneTunnel,ZoneStartVillage,ZoneBunker,ZoneGreenHouses,ZoneIsland,ZoneGasStation,ZoneMeteoStation,ZonePowerStation,ZoneBusStation,ZoneRailWays,ZonePort,ZoneForestTruck,ZoneForestSpawn,ZoneForestGasStation",
|
|
||||||
"lighthouse": "Zone_TreatmentContainers,Zone_LongRoad,Zone_Blockpost,Zone_TreatmentBeach,Zone_Hellicopter,Zone_RoofContainers,Zone_Village,Zone_OldHouse,Zone_RoofRocks,Zone_DestroyedHouse,Zone_Chalet,Zone_SniperPeak,Zone_RoofBeach,Zone_Containers,Zone_TreatmentRocks,Zone_Rocks"
|
|
||||||
}
|
|
||||||
const labsBosses = this.database.getTables().locations.laboratory.base.BossLocationSpawn;
|
|
||||||
const reserveBosses = this.database.getTables().locations.rezervbase.base.BossLocationSpawn;
|
|
||||||
|
|
||||||
// Fin's Choke Me Harder
|
|
||||||
if (this.configHandler.getConfig().fixes.finsChokeMeHarder)
|
|
||||||
{
|
|
||||||
for (const id in items)
|
|
||||||
{
|
|
||||||
if (items[id]._props && items[id]._props.ShotgunDispersion)
|
|
||||||
{
|
|
||||||
items[id]._props.shotgunDispersion = items[id]._props.ShotgunDispersion;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Chomps Raider Spawn Fix
|
|
||||||
if (this.configHandler.getConfig().fixes.chompsRaiderSpawnFix)
|
|
||||||
{
|
|
||||||
const spawn1 = labsBosses.find(x => x.TriggerId === "autoId_00008_EXFIL");
|
|
||||||
if (spawn1)
|
|
||||||
{
|
|
||||||
spawn1.TriggerId = "00404";
|
|
||||||
}
|
|
||||||
|
|
||||||
const spawn2 = labsBosses.find(x => x.TriggerId === "autoId_00010_EXFIL");
|
|
||||||
if (spawn2)
|
|
||||||
{
|
|
||||||
spawn2.TriggerId = "00409";
|
|
||||||
}
|
|
||||||
|
|
||||||
const spawn3 = reserveBosses.find(x => x.TriggerId === "00457");
|
|
||||||
if (spawn3)
|
|
||||||
{
|
|
||||||
spawn3.TriggerId = "autoId_00632_EXFIL";
|
|
||||||
}
|
|
||||||
|
|
||||||
const spawn4 = reserveBosses.find(x => x.TriggerId === "00452");
|
|
||||||
if (spawn4)
|
|
||||||
{
|
|
||||||
spawn4.TriggerId = "autoId_00000_D2_LEVER";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// JustNU's EvenMoreOpenZones
|
|
||||||
if (this.configHandler.getConfig().fixes.justNUsEvenMoreOpenZones)
|
|
||||||
{
|
|
||||||
for (const location in maps)
|
|
||||||
{
|
|
||||||
this.database.getTables().locations[location].base.OpenZones = maps[location];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,417 +0,0 @@
|
|||||||
import type { ILogger } from "@spt-aki/models/spt/utils/ILogger";
|
|
||||||
import type { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
|
||||||
import { Other } from "./other";
|
|
||||||
import { inject, injectable } from "tsyringe";
|
|
||||||
import { AIOConfigHandler } from "./AIOConfigHandler";
|
|
||||||
import { BaseClasses } from "@spt-aki/models/enums/BaseClasses";
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
export class Items
|
|
||||||
{
|
|
||||||
constructor(
|
|
||||||
@inject("WinstonLogger") private logger: ILogger,
|
|
||||||
@inject("AIOConfigHandler") private configHandler: AIOConfigHandler,
|
|
||||||
@inject("DatabaseServer") private database: DatabaseServer,
|
|
||||||
@inject("AIOOther") private other: Other
|
|
||||||
)
|
|
||||||
{}
|
|
||||||
|
|
||||||
public applyChanges(): void
|
|
||||||
{
|
|
||||||
const items = this.database.getTables().templates.items;
|
|
||||||
|
|
||||||
for (const id in items)
|
|
||||||
{
|
|
||||||
const base = items[id];
|
|
||||||
|
|
||||||
if (!this.other.isThisIDaMod([id]))
|
|
||||||
{
|
|
||||||
//Examine all items
|
|
||||||
if (this.configHandler.getConfig().items.allExaminedItems)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "ExaminedByDefault", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Weight Change, only Multiple possible
|
|
||||||
if (typeof this.configHandler.getConfig().items.weightChanges !== "boolean" && typeof this.configHandler.getConfig().items.weightChanges === "number" && this.configHandler.getConfig().items.weightChanges <= 0)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "Weight", (base._props.Weight * <number> this.configHandler.getConfig().items.weightChanges));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.removeAllGearPenalties)
|
|
||||||
{
|
|
||||||
if (base._props.mousePenalty)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "mousePenalty", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (base._props.weaponErgonomicPenalty)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "weaponErgonomicPenalty", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (base._props.speedPenaltyPercent)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "speedPenaltyPercent", 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.removeItemDurabilityBurn && base._props.DurabilityBurnModificator)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "DurabilityBurnModificator", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.removeBulletWeaponDurabilityDamage && base._props.Deterioration)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "Deterioration", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.removeWeaponPresetRestriction && !base._props.CanRequireOnRagfair && items[items[base._parent]._parent]._id === "5422acb9af1c889c16000029")
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "CanRequireOnRagfair", "true");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.stackableBarters.activated)
|
|
||||||
{
|
|
||||||
switch (base._parent)
|
|
||||||
{
|
|
||||||
case BaseClasses.BATTERY:
|
|
||||||
if (this.configHandler.getConfig().items.stackableBarters.battery > 1)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "StackMaxSize", this.configHandler.getConfig().items.stackableBarters.battery);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BaseClasses.BUILDING_MATERIAL:
|
|
||||||
if (this.configHandler.getConfig().items.stackableBarters.buildingMaterials > 1)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "StackMaxSize", this.configHandler.getConfig().items.stackableBarters.buildingMaterials);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BaseClasses.ELECTRONICS:
|
|
||||||
if (this.configHandler.getConfig().items.stackableBarters.electronics > 1)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "StackMaxSize", this.configHandler.getConfig().items.stackableBarters.electronics);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BaseClasses.HOUSEHOLD_GOODS:
|
|
||||||
if (this.configHandler.getConfig().items.stackableBarters.householdGoods > 1)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "StackMaxSize", this.configHandler.getConfig().items.stackableBarters.householdGoods);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BaseClasses.JEWELRY:
|
|
||||||
if (this.configHandler.getConfig().items.stackableBarters.jewelry > 1)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "StackMaxSize", this.configHandler.getConfig().items.stackableBarters.jewelry);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BaseClasses.MEDICAL_SUPPLIES:
|
|
||||||
if (this.configHandler.getConfig().items.stackableBarters.medicalSupplies > 1)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "StackMaxSize", this.configHandler.getConfig().items.stackableBarters.medicalSupplies);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BaseClasses.LUBRICANT:
|
|
||||||
if (this.configHandler.getConfig().items.stackableBarters.lubricant > 1)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "StackMaxSize", this.configHandler.getConfig().items.stackableBarters.lubricant);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BaseClasses.TOOL:
|
|
||||||
if (this.configHandler.getConfig().items.stackableBarters.tools > 1)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "StackMaxSize", this.configHandler.getConfig().items.stackableBarters.tools);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case BaseClasses.OTHER:
|
|
||||||
if (this.configHandler.getConfig().items.stackableBarters.other > 1)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "StackMaxSize", this.configHandler.getConfig().items.stackableBarters.other);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Change ammo stacks
|
|
||||||
if (typeof this.configHandler.getConfig().items.moreStack == "number")
|
|
||||||
{
|
|
||||||
if (base._name.includes("patron") && !base._name.includes("40x46"))
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "StackMaxSize", this.configHandler.getConfig().items.moreStack);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Change money stacks
|
|
||||||
if (typeof this.configHandler.getConfig().items.forceMoneyStack == "number" && base._parent === BaseClasses.MONEY)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "StackMaxSize", this.configHandler.getConfig().items.forceMoneyStack);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Allow armored rigs with armors
|
|
||||||
if (this.configHandler.getConfig().items.equipRigsWithArmors)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "BlocksArmorVest", false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Remove filters
|
|
||||||
if (this.configHandler.getConfig().items.removeSecureContainerFilters && base._parent === BaseClasses.MOD_CONTAINER && base._props.Grids[0]._props.filters.length > 0)
|
|
||||||
{
|
|
||||||
base._props.Grids[0]._props.filters = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.removeBackpacksRestrictions && base._parent === BaseClasses.BACKPACK && base._props.Grids[0]._props.filters.length > 0)
|
|
||||||
{
|
|
||||||
base._props.Grids[0]._props.filters = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.removeContainersRestrictions && base._parent === BaseClasses.SIMPLE_CONTAINER && base._props.Grids[0]._props.filters.length > 0)
|
|
||||||
{
|
|
||||||
base._props.Grids[0]._props.filters = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
//Change items experience gain
|
|
||||||
if (typeof this.configHandler.getConfig().items.increaseLootExp == "number" && base._props.LootExperience !== undefined)
|
|
||||||
{
|
|
||||||
const calculation = Math.round((base._props.LootExperience + ((<number> this.configHandler.getConfig().items.increaseLootExp / 100) * base._props.LootExperience)));
|
|
||||||
this.editSimpleItemData(id, "LootExperience", calculation);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof this.configHandler.getConfig().items.increaseExamineExp == "number" && base._props.ExamineExperience !== undefined)
|
|
||||||
{
|
|
||||||
const calculation = Math.round((base._props.ExamineExperience + ((<number> this.configHandler.getConfig().items.increaseExamineExp / 100) * base._props.ExamineExperience)));
|
|
||||||
this.editSimpleItemData(id, "ExamineExperience", calculation);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.removeKeyUsageNumber && base._parent === BaseClasses.KEY_MECHANICAL || base._parent === BaseClasses.KEYCARD)
|
|
||||||
{
|
|
||||||
base._props.MaximumNumberOfUsage = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Change weapons parts moddability
|
|
||||||
if (this.configHandler.getConfig().items.inRaidModdable)
|
|
||||||
{
|
|
||||||
if (base._props.RaidModdable)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "RaidModdable", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (base._props.ToolModdable)
|
|
||||||
{
|
|
||||||
this.editSimpleItemData(id, "ToolModdable", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (base._props.Slots)
|
|
||||||
{
|
|
||||||
for (const k in base._props.Slots)
|
|
||||||
{
|
|
||||||
if (!base._props.Slots[k]._required)
|
|
||||||
{
|
|
||||||
base._props.Slots[k]._required = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Weapons malfunctions
|
|
||||||
if (this.configHandler.getConfig().items.weaponMalfunctions.overheat && base._props.AllowOverheat)
|
|
||||||
{
|
|
||||||
base._props.AllowOverheat = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.weaponMalfunctions.jam && base._props.AllowJam)
|
|
||||||
{
|
|
||||||
base._props.AllowJam = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.weaponMalfunctions.feed && base._props.AllowFeed)
|
|
||||||
{
|
|
||||||
base._props.AllowFeed = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.weaponMalfunctions.misfire && base._props.AllowMisfire)
|
|
||||||
{
|
|
||||||
base._props.AllowMisfire = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().items.weaponMalfunctions.slide && base._props.AllowSlide)
|
|
||||||
{
|
|
||||||
base._props.AllowSlide = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Weapons durabilities min-max
|
|
||||||
if (this.configHandler.getConfig().items.weaponDurabilities.minimumSpawnDurability != false && typeof this.configHandler.getConfig().items.weaponDurabilities.minimumSpawnDurability === "number" && base._props.durabSpawnMin)
|
|
||||||
{
|
|
||||||
base._props.durabSpawnMin = <number> this.configHandler.getConfig().items.weaponDurabilities.minimumSpawnDurability;
|
|
||||||
}
|
|
||||||
if (this.configHandler.getConfig().items.weaponDurabilities.maximumSpawnDurability != false && typeof this.configHandler.getConfig().items.weaponDurabilities.maximumSpawnDurability === "number" && base._props.durabSpawnMax)
|
|
||||||
{
|
|
||||||
base._props.durabSpawnMax = <number> this.configHandler.getConfig().items.weaponDurabilities.maximumSpawnDurability;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().other.preWipeEvents.makeObdolbosPowerful)
|
|
||||||
{
|
|
||||||
const obdolbosBuff = [
|
|
||||||
{
|
|
||||||
"BuffType": "StaminaRate",
|
|
||||||
"Chance": 1,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": 0.5,
|
|
||||||
"AbsoluteValue": true,
|
|
||||||
"SkillName": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "SkillRate",
|
|
||||||
"Chance": 1,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": 10,
|
|
||||||
"AbsoluteValue": true,
|
|
||||||
"SkillName": "Endurance"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "SkillRate",
|
|
||||||
"Chance": 1,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": 10,
|
|
||||||
"AbsoluteValue": true,
|
|
||||||
"SkillName": "Strength"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "SkillRate",
|
|
||||||
"Chance": 1,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": 20,
|
|
||||||
"AbsoluteValue": true,
|
|
||||||
"SkillName": "StressResistance"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "SkillRate",
|
|
||||||
"Chance": 1,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": 20,
|
|
||||||
"AbsoluteValue": true,
|
|
||||||
"SkillName": "Charisma"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "SkillRate",
|
|
||||||
"Chance": 1,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": -20,
|
|
||||||
"AbsoluteValue": true,
|
|
||||||
"SkillName": "Memory"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "SkillRate",
|
|
||||||
"Chance": 1,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": -20,
|
|
||||||
"AbsoluteValue": true,
|
|
||||||
"SkillName": "Intellect"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "SkillRate",
|
|
||||||
"Chance": 1,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": -20,
|
|
||||||
"AbsoluteValue": true,
|
|
||||||
"SkillName": "Attention"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "Pain",
|
|
||||||
"Chance": 0.25,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": 0,
|
|
||||||
"AbsoluteValue": false,
|
|
||||||
"SkillName": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "StomachBloodloss",
|
|
||||||
"Chance": 0.25,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": 0,
|
|
||||||
"AbsoluteValue": false,
|
|
||||||
"SkillName": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "HydrationRate",
|
|
||||||
"Chance": 0.25,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": -0.05,
|
|
||||||
"AbsoluteValue": true,
|
|
||||||
"SkillName": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "EnergyRate",
|
|
||||||
"Chance": 0.25,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": -0.05,
|
|
||||||
"AbsoluteValue": true,
|
|
||||||
"SkillName": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "DamageModifier",
|
|
||||||
"Chance": 0.25,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": 0.2,
|
|
||||||
"AbsoluteValue": false,
|
|
||||||
"SkillName": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BuffType": "QuantumTunnelling",
|
|
||||||
"Chance": 0.25,
|
|
||||||
"Delay": 1,
|
|
||||||
"Duration": 1800,
|
|
||||||
"Value": 0,
|
|
||||||
"AbsoluteValue": false,
|
|
||||||
"SkillName": ""
|
|
||||||
}]
|
|
||||||
|
|
||||||
this.database.getTables().globals.config.Health.Effects.Stimulator.Buffs.Buffs_Obdolbos = obdolbosBuff;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//Individual items proprety changes
|
|
||||||
if (this.configHandler.getConfig().items.changeIndividualItemProperty.activated)
|
|
||||||
{
|
|
||||||
//Edit item properties
|
|
||||||
if (this.configHandler.getConfig().items.changeIndividualItemProperty.ItemList !== {})
|
|
||||||
{
|
|
||||||
for (const k in this.configHandler.getConfig().items.changeIndividualItemProperty.ItemList)
|
|
||||||
{
|
|
||||||
if (k === "__REPLACEMEBYITEMID__")
|
|
||||||
{
|
|
||||||
this.logger.error("AllinOne Mod: " + k + " : IS NOT AN ITEMID");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (const property in this.configHandler.getConfig().items.changeIndividualItemProperty.ItemList[k])
|
|
||||||
{
|
|
||||||
const value = this.configHandler.getConfig().items.changeIndividualItemProperty.ItemList[k][property];
|
|
||||||
this.editSimpleItemData(k, property, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private editSimpleItemData(id: string, data: string, value: any): void
|
|
||||||
{
|
|
||||||
const items = this.database.getTables().templates.items;
|
|
||||||
items[id]._props[data] = value;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,87 +0,0 @@
|
|||||||
import { DependencyContainer, Lifecycle } from "tsyringe";
|
|
||||||
import type { StaticRouterModService } from "@spt-aki/services/mod/staticRouter/StaticRouterModService";
|
|
||||||
import type { IMod } from "@spt-aki/models/external/mod";
|
|
||||||
import type { ILogger } from "@spt-aki/models/spt/utils/ILogger";
|
|
||||||
import { Other } from "./other";
|
|
||||||
import { Items } from "./items";
|
|
||||||
import { Raids } from "./raids";
|
|
||||||
import { Traders } from "./traders";
|
|
||||||
import { Player } from "./player";
|
|
||||||
import { Notifications } from "./Notifications";
|
|
||||||
import { Fixes } from "./fixes";
|
|
||||||
import { AIOConfigHandler } from "./AIOConfigHandler";
|
|
||||||
|
|
||||||
class AIOMod implements IMod
|
|
||||||
{
|
|
||||||
private logger: ILogger;
|
|
||||||
private pkg;
|
|
||||||
|
|
||||||
public load(container: DependencyContainer): void
|
|
||||||
{
|
|
||||||
container.register<AIOConfigHandler>("AIOConfigHandler", AIOConfigHandler, {lifecycle:Lifecycle.Singleton});
|
|
||||||
container.register<Other>("AIOOther", Other, {lifecycle:Lifecycle.Singleton});
|
|
||||||
container.register<Fixes>("AIOFixes", Fixes);
|
|
||||||
container.register<Raids>("AIORaids", Raids);
|
|
||||||
container.register<Items>("AIOItems", Items);
|
|
||||||
container.register<Traders>("AIOTraders", Traders);
|
|
||||||
container.register<Player>("AIOPlayer", Player);
|
|
||||||
container.register<Notifications>("AIONotifications", Notifications);
|
|
||||||
const staticRoute = container.resolve<StaticRouterModService>("StaticRouterModService");
|
|
||||||
this.logger = container.resolve<ILogger>("WinstonLogger");
|
|
||||||
|
|
||||||
if (container.resolve<AIOConfigHandler>("AIOConfigHandler").getConfig().player.allSkillsMaster)
|
|
||||||
{
|
|
||||||
staticRoute.registerStaticRouter(
|
|
||||||
"AIOModGameVersion",
|
|
||||||
[
|
|
||||||
{
|
|
||||||
url: "/client/game/version/validate",
|
|
||||||
action: (url: string, info: any, sessionID: string, output: string): any =>
|
|
||||||
{
|
|
||||||
this.logger.info(sessionID);
|
|
||||||
return container.resolve<Player>("AIOPlayer").maxSkills(sessionID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"aki"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (container.resolve<AIOConfigHandler>("AIOConfigHandler").getConfig().other.preWipeEvents.raidersOnAllMaps)
|
|
||||||
{
|
|
||||||
staticRoute.registerStaticRouter(
|
|
||||||
"AIOModBotGen",
|
|
||||||
[
|
|
||||||
{
|
|
||||||
url: "/client/game/bot/generate",
|
|
||||||
action: (url: string, info: any, sessionID: string, output: string): any =>
|
|
||||||
{
|
|
||||||
return container.resolve<Other>("AIOOther").spawnRaidersEverywhere(info);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"aki"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
this.pkg = require("../package.json");
|
|
||||||
this.logger.info(`Loading: ${this.pkg.name} ${this.pkg.version}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
public delayedLoad(container: DependencyContainer): void
|
|
||||||
{
|
|
||||||
container.resolve<Other>("AIOOther").applyChanges();
|
|
||||||
container.resolve<Fixes>("AIOFixes").applyChanges();
|
|
||||||
container.resolve<Raids>("AIORaids").applyChanges();
|
|
||||||
container.resolve<Items>("AIOItems").applyChanges();
|
|
||||||
container.resolve<Traders>("AIOTraders").applyChanges();
|
|
||||||
container.resolve<Player>("AIOPlayer").applyChanges();
|
|
||||||
|
|
||||||
if (container.resolve<AIOConfigHandler>("AIOConfigHandler").getConfig().other.showModLogs)
|
|
||||||
{
|
|
||||||
container.resolve<Notifications>("AIONotifications").sendNotifications()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = { mod: new AIOMod() };
|
|
@ -1,101 +0,0 @@
|
|||||||
import type { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"
|
|
||||||
import type { BotController } from "@spt-aki/controllers/BotController"
|
|
||||||
import type { IBotBase } from "@spt-aki/models/eft/common/tables/IBotBase";
|
|
||||||
import type { IGetBodyResponseData } from "@spt-aki/models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { AIOConfigHandler } from "./AIOConfigHandler";
|
|
||||||
import { inject, injectable } from "tsyringe";
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
export class Other
|
|
||||||
{
|
|
||||||
private dontNuke = [];
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
@inject("AIOConfigHandler") private configHandler: AIOConfigHandler,
|
|
||||||
@inject("HttpResponseUtil") private httpResponse: HttpResponseUtil,
|
|
||||||
@inject("BotController") private botController: BotController
|
|
||||||
)
|
|
||||||
{}
|
|
||||||
|
|
||||||
public applyChanges(): void
|
|
||||||
{
|
|
||||||
if (this.configHandler.getConfig().other.compatibilityMods.terragroupSpecialist)
|
|
||||||
{
|
|
||||||
this.dontNuke.push("terragroupSpecialist")
|
|
||||||
}
|
|
||||||
else if (this.configHandler.getConfig().other.compatibilityMods.coDMWMilSimCTSFOI)
|
|
||||||
{
|
|
||||||
this.dontNuke.push("ctsfo1")
|
|
||||||
}
|
|
||||||
else if (this.configHandler.getConfig().other.compatibilityMods.additionnalGearTan)
|
|
||||||
{
|
|
||||||
this.dontNuke.push("AddGearTan")
|
|
||||||
}
|
|
||||||
else if (this.configHandler.getConfig().other.compatibilityMods.additionnalGearBlack)
|
|
||||||
{
|
|
||||||
this.dontNuke.push("AddGearBlack")
|
|
||||||
}
|
|
||||||
else if (this.configHandler.getConfig().other.compatibilityMods.additionnalGearUntar)
|
|
||||||
{
|
|
||||||
this.dontNuke.push("AddGearUntar")
|
|
||||||
}
|
|
||||||
else if (this.configHandler.getConfig().other.compatibilityMods.additionnalClothing)
|
|
||||||
{
|
|
||||||
this.dontNuke.push("AdditionalClothing")
|
|
||||||
}
|
|
||||||
else if (this.configHandler.getConfig().other.compatibilityMods.andrudisQuestManiac)
|
|
||||||
{
|
|
||||||
this.dontNuke.push("Ammo_Proficiency")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public isThisIDaMod(id: string[]): boolean
|
|
||||||
{
|
|
||||||
if (this.dontNuke.length > 0)
|
|
||||||
{
|
|
||||||
for (const mod in this.dontNuke)
|
|
||||||
{
|
|
||||||
if (id.includes(this.dontNuke[mod]))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public spawnRaidersEverywhere(info: any): IGetBodyResponseData<IBotBase[]>
|
|
||||||
{
|
|
||||||
for (const type in info.conditions)
|
|
||||||
{
|
|
||||||
const roles = info.conditions[type]
|
|
||||||
roles.Role = "pmcBot"
|
|
||||||
roles.Difficulty = "impossible"
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.httpResponse.getBody(this.botController.generate(info));
|
|
||||||
}
|
|
||||||
|
|
||||||
public createBossWave(role: string, chance: number, followers: string, escortAmount: number, zones: string): any
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"BossName": role,
|
|
||||||
"BossChance": chance,
|
|
||||||
"BossZone": zones,
|
|
||||||
"BossPlayer": false,
|
|
||||||
"BossDifficult": "normal",
|
|
||||||
"BossEscortType": followers,
|
|
||||||
"BossEscortDifficult": "normal",
|
|
||||||
"BossEscortAmount": escortAmount,
|
|
||||||
"Time": -1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,199 +0,0 @@
|
|||||||
import { inject, injectable } from "tsyringe";
|
|
||||||
import type { ProfileHelper } from "@spt-aki/helpers/ProfileHelper";
|
|
||||||
import type { IPmcData } from "@spt-aki//models/eft/common/IPmcData";
|
|
||||||
import type { ILogger } from "@spt-aki/models/spt/utils/ILogger";
|
|
||||||
import type { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
|
||||||
import type { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil";
|
|
||||||
import { AIOConfigHandler } from "./AIOConfigHandler";
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
export class Player
|
|
||||||
{
|
|
||||||
constructor(
|
|
||||||
@inject("WinstonLogger") private logger: ILogger,
|
|
||||||
@inject("AIOConfigHandler") private configHandler: AIOConfigHandler,
|
|
||||||
@inject("DatabaseServer") private database: DatabaseServer,
|
|
||||||
@inject("HttpResponseUtil") private httpResponse: HttpResponseUtil,
|
|
||||||
@inject("ProfileHelper") private profileHelper: ProfileHelper
|
|
||||||
)
|
|
||||||
{}
|
|
||||||
|
|
||||||
public applyChanges(): void
|
|
||||||
{
|
|
||||||
const globals = this.database.getTables().globals.config;
|
|
||||||
|
|
||||||
|
|
||||||
//Hydratation Drain rate
|
|
||||||
if (typeof this.configHandler.getConfig().player.hydrationDrainRate === "number")
|
|
||||||
{
|
|
||||||
globals.Health.Effects.Existence.HydrationDamage = <number> this.configHandler.getConfig().player.hydrationDrainRate;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Hydratation Drain Time
|
|
||||||
if (typeof this.configHandler.getConfig().player.hydrationDrainTime === "number")
|
|
||||||
{
|
|
||||||
globals.Health.Effects.Existence.HydrationLoopTime = <number> this.configHandler.getConfig().player.hydrationDrainTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Energy Drain Rate
|
|
||||||
if (typeof this.configHandler.getConfig().player.energyDrainRate === "number")
|
|
||||||
{
|
|
||||||
globals.Health.Effects.Existence.EnergyDamage = <number> this.configHandler.getConfig().player.energyDrainRate;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Energy Drain Time
|
|
||||||
if (typeof this.configHandler.getConfig().player.energyDrainTime === "number")
|
|
||||||
{
|
|
||||||
globals.Health.Effects.Existence.EnergyLoopTime = <number> this.configHandler.getConfig().player.energyDrainTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
//RegenerationLoopTime
|
|
||||||
if (typeof this.configHandler.getConfig().player.regenerationLoopTime === "number")
|
|
||||||
{
|
|
||||||
globals.Health.Effects.Regeneration.LoopTime = <number> this.configHandler.getConfig().player.regenerationLoopTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Energy recovery in hideout
|
|
||||||
if (typeof this.configHandler.getConfig().player.energyRestoration === "number")
|
|
||||||
{
|
|
||||||
globals.Health.Effects.Regeneration.Energy = <number> this.configHandler.getConfig().player.energyRestoration;
|
|
||||||
}
|
|
||||||
//Hydration recovery in hideout
|
|
||||||
if (typeof this.configHandler.getConfig().player.hydrationRestoration === "number")
|
|
||||||
{
|
|
||||||
globals.Health.Effects.Regeneration.Hydration = <number> this.configHandler.getConfig().player.hydrationRestoration;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Remove scav timer
|
|
||||||
if (this.configHandler.getConfig().player.removeScavTimer)
|
|
||||||
{
|
|
||||||
globals.SavagePlayCooldown = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Change skills progression multiplier
|
|
||||||
if (this.configHandler.getConfig().player.changeSkillProgressionMultiplier !== false && typeof this.configHandler.getConfig().player.changeSkillProgressionMultiplier == "number")
|
|
||||||
{
|
|
||||||
globals.SkillsSettings.SkillProgressRate = <number> this.configHandler.getConfig().player.changeSkillProgressionMultiplier;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Change weapons skill multiplier
|
|
||||||
if (this.configHandler.getConfig().player.changeWeaponSkillMultiplier !== false && typeof this.configHandler.getConfig().player.changeWeaponSkillMultiplier == "number")
|
|
||||||
{
|
|
||||||
globals.SkillsSettings.WeaponSkillProgressRate = <number> this.configHandler.getConfig().player.changeWeaponSkillMultiplier;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Change fleamarket mini level
|
|
||||||
if (this.configHandler.getConfig().traders.changeFleaMarketLvl !== false && typeof this.configHandler.getConfig().traders.changeFleaMarketLvl == "number")
|
|
||||||
{
|
|
||||||
globals.RagFair.minUserLevel = <number> this.configHandler.getConfig().traders.changeFleaMarketLvl;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Change in raids restrictions
|
|
||||||
if (this.configHandler.getConfig().player.removeInRaidsRestrictions)
|
|
||||||
{
|
|
||||||
globals.RestrictionsInRaid = []
|
|
||||||
}
|
|
||||||
|
|
||||||
//Remove fall damages
|
|
||||||
if (this.configHandler.getConfig().player.disableFallDamage)
|
|
||||||
{
|
|
||||||
globals.Health.Falling.SafeHeight = 200
|
|
||||||
globals.Health.Falling.DamagePerMeter = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
//Change staminas (unlimited or no)
|
|
||||||
if (typeof this.configHandler.getConfig().player.changeMaxStamina == "number" && !this.configHandler.getConfig().player.unlimitedStamina)
|
|
||||||
{
|
|
||||||
globals.Stamina.Capacity = <number> this.configHandler.getConfig().player.changeMaxStamina
|
|
||||||
}
|
|
||||||
else if (!this.configHandler.getConfig().player.changeMaxStamina && this.configHandler.getConfig().player.unlimitedStamina)
|
|
||||||
{
|
|
||||||
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 (this.configHandler.getConfig().player.disableSkillFatigue === true)
|
|
||||||
{
|
|
||||||
globals.SkillMinEffectiveness = 1;
|
|
||||||
globals.SkillFatiguePerPoint = 0;
|
|
||||||
globals.SkillFreshEffectiveness = 1.0;
|
|
||||||
}
|
|
||||||
else if (this.configHandler.getConfig().player.disableSkillFatigue === "Custom")
|
|
||||||
{
|
|
||||||
globals.SkillMinEffectiveness = this.configHandler.getConfig().player.skillMinEffectiveness;
|
|
||||||
globals.SkillFatiguePerPoint = this.configHandler.getConfig().player.skillFatiguePerPoint;
|
|
||||||
globals.SkillFreshEffectiveness = this.configHandler.getConfig().player.skillFreshEffectiveness;
|
|
||||||
globals.SkillFreshPoints = this.configHandler.getConfig().player.skillFreshPoints;
|
|
||||||
globals.SkillPointsBeforeFatigue = this.configHandler.getConfig().player.skillPointsBeforeFatigue;
|
|
||||||
globals.SkillFatigueReset = this.configHandler.getConfig().player.skillFatigueReset;
|
|
||||||
}
|
|
||||||
|
|
||||||
//PreventScavKarma
|
|
||||||
if (this.configHandler.getConfig().player.removeScavKarma == true)
|
|
||||||
{
|
|
||||||
const types = this.database.getTables().bots.types
|
|
||||||
for (const bots in types)
|
|
||||||
{
|
|
||||||
if (types[bots].experience.standingForKill < 0 && types[bots].experience.standingForKill > 0)
|
|
||||||
{
|
|
||||||
types[bots].experience.standingForKill = 0
|
|
||||||
}
|
|
||||||
if (types[bots].experience.aggressorBonus < 0 && types[bots].experience.aggressorBonus > 0)
|
|
||||||
{
|
|
||||||
types[bots].experience.aggressorBonus = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public maxSkills(sessionID: string): any
|
|
||||||
{
|
|
||||||
let pmcData: IPmcData = null
|
|
||||||
|
|
||||||
if (sessionID)
|
|
||||||
{
|
|
||||||
pmcData = this.profileHelper.getPmcProfile(sessionID);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pmcData !== null)
|
|
||||||
{
|
|
||||||
if (pmcData.Skills.Common.length > 0)
|
|
||||||
{
|
|
||||||
for (const skills in pmcData.Skills.Common)
|
|
||||||
{
|
|
||||||
const skill = pmcData.Skills.Common[skills];
|
|
||||||
switch (skill.Id)
|
|
||||||
{
|
|
||||||
case "BotReload":
|
|
||||||
if (this.configHandler.getConfig().player.enableSkillBotReload === true)
|
|
||||||
{
|
|
||||||
skill.Progress = 5100;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "BotSound":
|
|
||||||
if (this.configHandler.getConfig().player.enableSkillBotSound === true)
|
|
||||||
{
|
|
||||||
skill.Progress = 5100;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
skill.Progress = 5100;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.logger.error("No skills for PMC to master, skipping");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return this.httpResponse.nullResponse();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,335 +0,0 @@
|
|||||||
import { inject, injectable } from "tsyringe";
|
|
||||||
import type { BossLocationSpawn } from "@spt-aki/models/eft/common/ILocationBase";
|
|
||||||
import type { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
|
||||||
import { AIOConfigHandler } from "./AIOConfigHandler";
|
|
||||||
import { Other } from "./other";
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
export class Raids
|
|
||||||
{
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
@inject("AIOConfigHandler") private configHandler: AIOConfigHandler,
|
|
||||||
@inject("DatabaseServer") private database: DatabaseServer,
|
|
||||||
@inject("AIOOther") private other: Other
|
|
||||||
)
|
|
||||||
{}
|
|
||||||
|
|
||||||
public applyChanges(): void
|
|
||||||
{
|
|
||||||
const hideout = this.database.getTables().hideout;
|
|
||||||
const locations = this.database.getTables().locations;
|
|
||||||
|
|
||||||
//Change hideout fuel consumption
|
|
||||||
if (this.configHandler.getConfig().hideout.changeFuelConsumptionRate !== false && typeof this.configHandler.getConfig().hideout.changeFuelConsumptionRate === "number")
|
|
||||||
{
|
|
||||||
hideout.settings.generatorFuelFlowRate = <number> this.configHandler.getConfig().hideout.changeFuelConsumptionRate;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Enable hideout fast constructions
|
|
||||||
if (this.configHandler.getConfig().hideout.fastHideoutConstruction)
|
|
||||||
{
|
|
||||||
for (const data in hideout.areas)
|
|
||||||
{
|
|
||||||
const areaData = hideout.areas[data];
|
|
||||||
|
|
||||||
if (this.other.isThisIDaMod([areaData._id]) === false)
|
|
||||||
{
|
|
||||||
for (const i in areaData.stages)
|
|
||||||
{
|
|
||||||
if (areaData.stages[i].constructionTime > 0)
|
|
||||||
{
|
|
||||||
areaData.stages[i].constructionTime = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Enable fast hideout production
|
|
||||||
if (this.configHandler.getConfig().hideout.fastHideoutProduction === true)
|
|
||||||
{
|
|
||||||
for (const data in hideout.production)
|
|
||||||
{
|
|
||||||
const productionData = hideout.production[data];
|
|
||||||
|
|
||||||
if (this.other.isThisIDaMod([productionData._id]) === false)
|
|
||||||
{
|
|
||||||
if (!productionData.continuous && productionData.productionTime > 10)
|
|
||||||
{
|
|
||||||
productionData.productionTime = 10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Scav cases modifications
|
|
||||||
if (this.configHandler.getConfig().hideout.fastScavCase === true)
|
|
||||||
{
|
|
||||||
for (const scav in hideout.scavcase)
|
|
||||||
{
|
|
||||||
const caseData = hideout.scavcase[scav];
|
|
||||||
|
|
||||||
if (this.other.isThisIDaMod([caseData._id]) === false)
|
|
||||||
{
|
|
||||||
if (caseData.ProductionTime > 10)
|
|
||||||
{
|
|
||||||
caseData.ProductionTime = 10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.configHandler.getConfig().hideout.scavCasePriceReducer === true)
|
|
||||||
{
|
|
||||||
for (const scase in hideout.scavcase)
|
|
||||||
{
|
|
||||||
const caseData = hideout.scavcase[scase];
|
|
||||||
|
|
||||||
if (this.other.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 (this.configHandler.getConfig().hideout.removeConstructionRequirements)
|
|
||||||
{
|
|
||||||
for (const data in hideout.areas)
|
|
||||||
{
|
|
||||||
const areaData = hideout.areas[data];
|
|
||||||
|
|
||||||
if (this.other.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 (this.configHandler.getConfig().raids.removeLabsKeycard)
|
|
||||||
{
|
|
||||||
locations.laboratory.base.AccessKeys = []
|
|
||||||
}
|
|
||||||
|
|
||||||
//Remove extracts restrictions
|
|
||||||
if (this.configHandler.getConfig().raids.noExtractRestrictions)
|
|
||||||
{
|
|
||||||
for (const i in locations)
|
|
||||||
{
|
|
||||||
if (i !== "base")
|
|
||||||
{
|
|
||||||
for (const 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 (this.configHandler.getConfig().raids.allExtractionsAvailable)
|
|
||||||
{
|
|
||||||
for (const i in locations)
|
|
||||||
{
|
|
||||||
if (i !== "base")
|
|
||||||
{
|
|
||||||
for (const 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 maps have functional insurance
|
|
||||||
if (this.configHandler.getConfig().raids.insuranceOnAllMaps)
|
|
||||||
{
|
|
||||||
for (const i in locations)
|
|
||||||
{
|
|
||||||
if (i !== "base")
|
|
||||||
{
|
|
||||||
locations[i].base.Insurance = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Make all bosses to 100% spawn
|
|
||||||
if (this.configHandler.getConfig().raids.increasedBossChance)
|
|
||||||
{
|
|
||||||
for (const i in locations)
|
|
||||||
{
|
|
||||||
if (i !== "base")
|
|
||||||
{
|
|
||||||
if (locations[i].base.BossLocationSpawn !== [])
|
|
||||||
{
|
|
||||||
for (const x in locations[i].base.BossLocationSpawn)
|
|
||||||
{
|
|
||||||
locations[i].base.BossLocationSpawn[x].BossChance = 100;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().other.preWipeEvents.killaOnFactory)
|
|
||||||
{
|
|
||||||
const killaWave = this.other.createBossWave("bossKilla", 100, "followerBully", 0, locations.factory4_day.base.OpenZones);
|
|
||||||
locations.factory4_day.base.BossLocationSpawn.push(killaWave);
|
|
||||||
locations.factory4_night.base.BossLocationSpawn.push(killaWave);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().other.preWipeEvents.allBossesOnReserve)
|
|
||||||
{
|
|
||||||
let bossWave = this.other.createBossWave("bossKilla", 100, "followerBully", 0, locations.rezervbase.base.OpenZones);
|
|
||||||
locations.rezervbase.base.BossLocationSpawn.push(bossWave);
|
|
||||||
bossWave = this.other.createBossWave("bossBully", 100, "followerBully", 4, locations.rezervbase.base.OpenZones);
|
|
||||||
locations.rezervbase.base.BossLocationSpawn.push(bossWave);
|
|
||||||
bossWave = this.other.createBossWave("bossKojaniy", 100, "followerKojaniy", 2, locations.rezervbase.base.OpenZones);
|
|
||||||
locations.rezervbase.base.BossLocationSpawn.push(bossWave);
|
|
||||||
bossWave = this.other.createBossWave("bossSanitar", 100, "followerSanitar", 2, locations.rezervbase.base.OpenZones);
|
|
||||||
locations.rezervbase.base.BossLocationSpawn.push(bossWave);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().other.preWipeEvents.gluhkarOnLabs)
|
|
||||||
{
|
|
||||||
const glugluWave: BossLocationSpawn = {
|
|
||||||
"BossName": "bossGluhar",
|
|
||||||
"BossChance": 43,
|
|
||||||
"BossZone": "ZoneRailStrorage,ZoneRailStrorage,ZoneRailStrorage,ZonePTOR1,ZonePTOR2,ZoneBarrack,ZoneBarrack,ZoneBarrack,ZoneSubStorage",
|
|
||||||
"BossPlayer": false,
|
|
||||||
"BossDifficult": "normal",
|
|
||||||
"BossEscortType": "followerGluharAssault",
|
|
||||||
"BossEscortDifficult": "normal",
|
|
||||||
"BossEscortAmount": "0",
|
|
||||||
"Time": -1,
|
|
||||||
"TriggerId": "",
|
|
||||||
"TriggerName": "",
|
|
||||||
"Supports": [
|
|
||||||
{
|
|
||||||
"BossEscortType": "followerGluharAssault",
|
|
||||||
"BossEscortDifficult": [
|
|
||||||
"normal"
|
|
||||||
],
|
|
||||||
"BossEscortAmount": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BossEscortType": "followerGluharSecurity",
|
|
||||||
"BossEscortDifficult": [
|
|
||||||
"normal"
|
|
||||||
],
|
|
||||||
"BossEscortAmount": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"BossEscortType": "followerGluharScout",
|
|
||||||
"BossEscortDifficult": [
|
|
||||||
"normal"
|
|
||||||
],
|
|
||||||
"BossEscortAmount": "2"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
glugluWave.BossZone = locations.laboratory.base.OpenZones;
|
|
||||||
locations.laboratory.base.BossLocationSpawn.push(glugluWave);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Extend raids to defined number
|
|
||||||
if (this.configHandler.getConfig().raids.extendedRaid != false && typeof this.configHandler.getConfig().raids.extendedRaid === "number")
|
|
||||||
{
|
|
||||||
for (const map in locations)
|
|
||||||
{
|
|
||||||
if (map !== "base")
|
|
||||||
{
|
|
||||||
locations[map].base.exit_access_time = this.configHandler.getConfig().raids.extendedRaid;
|
|
||||||
locations[map].base.escape_time_limit = this.configHandler.getConfig().raids.extendedRaid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Make all extractions of the map available regardless of the infill
|
|
||||||
if (this.configHandler.getConfig().raids.extractionsExtended)
|
|
||||||
{
|
|
||||||
for (const 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,205 +0,0 @@
|
|||||||
import { inject, injectable } from "tsyringe";
|
|
||||||
import type { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
|
||||||
import { AIOConfigHandler } from "./AIOConfigHandler";
|
|
||||||
import { Other } from "./other";
|
|
||||||
import { Money } from "@spt-aki/models/enums/Money"
|
|
||||||
import { Traders as eftTraders} from "@spt-aki/models/spt/helpers/Traders"
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
export class Traders
|
|
||||||
{
|
|
||||||
private traders;
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
@inject("AIOConfigHandler") private configHandler: AIOConfigHandler,
|
|
||||||
@inject("DatabaseServer") private database: DatabaseServer,
|
|
||||||
@inject("AIOOther") private other: Other
|
|
||||||
)
|
|
||||||
{}
|
|
||||||
|
|
||||||
public applyChanges(): void
|
|
||||||
{
|
|
||||||
this.traders = this.database.getTables().traders;
|
|
||||||
const quests = this.database.getTables().templates.quests;
|
|
||||||
const suits = this.database.getTables().templates.customization;
|
|
||||||
|
|
||||||
//Enable all the quests
|
|
||||||
if (this.configHandler.getConfig().traders.allQuestsAvailable)
|
|
||||||
{
|
|
||||||
for (const id in quests)
|
|
||||||
{
|
|
||||||
if (this.other.isThisIDaMod([id]) === false)
|
|
||||||
{
|
|
||||||
const questData = quests[id];
|
|
||||||
questData.conditions.AvailableForStart = [
|
|
||||||
{
|
|
||||||
_parent: "Level",
|
|
||||||
_props:
|
|
||||||
{
|
|
||||||
compareMethod: ">=",
|
|
||||||
value: 1,
|
|
||||||
index: 0,
|
|
||||||
parentId: "",
|
|
||||||
id: "AllInOne-Mod: AllQuestsAvailable",
|
|
||||||
dynamicLocale: false
|
|
||||||
},
|
|
||||||
dynamicLocale: false
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().traders.removeFIRConditionOnQuests)
|
|
||||||
{
|
|
||||||
for (const id in quests)
|
|
||||||
{
|
|
||||||
const condition = quests[id].conditions.AvailableForFinish;
|
|
||||||
for (const requirements in condition)
|
|
||||||
{
|
|
||||||
const requirement = condition[requirements];
|
|
||||||
if (requirement._parent === "FindItem" || requirement._parent === "HandoverItem" &&
|
|
||||||
"_props" in requirement && "onlyFoundInRaid" in requirement._props)
|
|
||||||
{
|
|
||||||
requirement._props.onlyFoundInRaid = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Enable all clothes available for both side
|
|
||||||
if (this.configHandler.getConfig().traders.allClothesForEverySide)
|
|
||||||
{
|
|
||||||
for (const suit in suits)
|
|
||||||
{
|
|
||||||
if (this.other.isThisIDaMod([suit]) === false)
|
|
||||||
{
|
|
||||||
const suitData = suits[suit];
|
|
||||||
suitData._props.Side = ["Savage", "Bear", "Usec"];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Enable all clothes for free
|
|
||||||
if (this.configHandler.getConfig().traders.allClothesFree)
|
|
||||||
{
|
|
||||||
for (const trader in this.traders)
|
|
||||||
{
|
|
||||||
if (this.other.isThisIDaMod([trader]) === false && this.traders[trader].suits)
|
|
||||||
{
|
|
||||||
|
|
||||||
for (const file in this.traders[trader].suits)
|
|
||||||
{
|
|
||||||
const fileData = this.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 = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//All cheap items on traders
|
|
||||||
if (this.configHandler.getConfig().other.preWipeEvents.allTradersSellCheapItems)
|
|
||||||
{
|
|
||||||
for (const trader in this.traders)
|
|
||||||
{
|
|
||||||
for (const assort in this.traders[trader].assort.barter_scheme)
|
|
||||||
{
|
|
||||||
const itemScheme = this.traders[trader].assort.barter_scheme[assort];
|
|
||||||
switch (itemScheme[0][0]._tpl)
|
|
||||||
{
|
|
||||||
case Money.ROUBLES:
|
|
||||||
itemScheme[0][0].count = itemScheme[0][0].count * 0.01;
|
|
||||||
break;
|
|
||||||
case Money.DOLLARS:
|
|
||||||
itemScheme[0][0].count = itemScheme[0][0].count * 0.1;
|
|
||||||
break;
|
|
||||||
case Money.EUROS:
|
|
||||||
itemScheme[0][0].count = itemScheme[0][0].count * 0.05;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Change insurances return times
|
|
||||||
if (this.configHandler.getConfig().traders.insuranceTime.activated)
|
|
||||||
{
|
|
||||||
if (this.configHandler.getConfig().traders.insuranceTime.prapor.activated)
|
|
||||||
{
|
|
||||||
this.traders[eftTraders.PRAPOR].base.insurance.min_return_hour =
|
|
||||||
this.configHandler.getConfig().traders.insuranceTime.prapor.min;
|
|
||||||
this.traders[eftTraders.PRAPOR].base.insurance.max_return_hour =
|
|
||||||
this.configHandler.getConfig().traders.insuranceTime.prapor.max;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().traders.insuranceTime.therapist.activated)
|
|
||||||
{
|
|
||||||
this.traders[eftTraders.THERAPIST].base.insurance.min_return_hour =
|
|
||||||
this.configHandler.getConfig().traders.insuranceTime.therapist.min;
|
|
||||||
this.traders[eftTraders.THERAPIST].base.insurance.max_return_hour =
|
|
||||||
this.configHandler.getConfig().traders.insuranceTime.therapist.max;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Change the maximum time for insurance to be in mails
|
|
||||||
if (this.configHandler.getConfig().traders.maxInsuranceStorageTime !== false)
|
|
||||||
{
|
|
||||||
this.traders[eftTraders.PRAPOR].base.insurance.max_storage_time =
|
|
||||||
this.configHandler.getConfig().traders.maxInsuranceStorageTime;
|
|
||||||
this.traders[eftTraders.THERAPIST].base.insurance.max_storage_time =
|
|
||||||
this.configHandler.getConfig().traders.maxInsuranceStorageTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
//UnlockAllItemsAtLL1
|
|
||||||
if (this.configHandler.getConfig().traders.traderChanges.unlockAllItemsAtLL1 && !this.configHandler.getConfig().traders.traderChanges.allTraders4Stars)
|
|
||||||
{
|
|
||||||
for (const traderID in this.traders)
|
|
||||||
{
|
|
||||||
if (traderID === eftTraders.FENCE || traderID === "ragfair")
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const loyaltyItems = this.traders[traderID].assort.loyal_level_items;
|
|
||||||
|
|
||||||
for (const lLItem in loyaltyItems)
|
|
||||||
{
|
|
||||||
loyaltyItems[lLItem] = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Remove assorts locked by quests
|
|
||||||
if (this.configHandler.getConfig().traders.traderChanges.removeItemsFromQuestLocks)
|
|
||||||
{
|
|
||||||
for (const traderID in this.traders)
|
|
||||||
{
|
|
||||||
if (this.traders[traderID].questassort && this.traders[traderID].questassort.success)
|
|
||||||
{
|
|
||||||
this.traders[traderID].questassort.success = {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.configHandler.getConfig().traders.traderChanges.allTraders4Stars)
|
|
||||||
{
|
|
||||||
for (const traderID in this.traders)
|
|
||||||
{
|
|
||||||
const loyaltyLevels = this.traders[traderID].base.loyaltyLevels;
|
|
||||||
for (const level in loyaltyLevels)
|
|
||||||
{
|
|
||||||
const loyalty = loyaltyLevels[level];
|
|
||||||
loyalty.minLevel = 1;
|
|
||||||
loyalty.minSalesSum = 0;
|
|
||||||
loyalty.minStanding = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
import { BotController } from "../controllers/BotController";
|
|
||||||
import { IGenerateBotsRequestData } from "../models/eft/bot/IGenerateBotsRequestData";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class BotCallbacks {
|
|
||||||
private botController;
|
|
||||||
private httpResponse;
|
|
||||||
constructor(botController: BotController, httpResponse: HttpResponseUtil);
|
|
||||||
getBotLimit(url: string, info: IEmptyRequestData, sessionID: string): string;
|
|
||||||
getBotDifficulty(url: string, info: IEmptyRequestData, sessionID: string): string;
|
|
||||||
generateBots(url: string, info: IGenerateBotsRequestData, sessionID: string): IGetBodyResponseData<IBotBase[]>;
|
|
||||||
getBotCap(): string;
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
import { BundleLoader } from "../loaders/BundleLoader";
|
|
||||||
import { IHttpServer } from "../models/spt/server/IHttpServer";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class BundleCallbacks {
|
|
||||||
private logger;
|
|
||||||
private httpResponse;
|
|
||||||
private httpServer;
|
|
||||||
private bundleLoader;
|
|
||||||
private configServer;
|
|
||||||
private httpConfig;
|
|
||||||
constructor(logger: ILogger, httpResponse: HttpResponseUtil, httpServer: IHttpServer, bundleLoader: BundleLoader, configServer: ConfigServer);
|
|
||||||
sendBundle(sessionID: string, req: any, resp: any, body: any): any;
|
|
||||||
getBundles(url: string, info: any, sessionID: string): string;
|
|
||||||
getBundle(url: string, info: any, sessionID: string): string;
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
import { CustomizationController } from "../controllers/CustomizationController";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { ISuit } from "../models/eft/common/tables/ITrader";
|
|
||||||
import { IBuyClothingRequestData } from "../models/eft/customization/IBuyClothingRequestData";
|
|
||||||
import { IWearClothingRequestData } from "../models/eft/customization/IWearClothingRequestData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class CustomizationCallbacks {
|
|
||||||
private customizationController;
|
|
||||||
private saveServer;
|
|
||||||
private httpResponse;
|
|
||||||
constructor(customizationController: CustomizationController, saveServer: SaveServer, httpResponse: HttpResponseUtil);
|
|
||||||
getSuits(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<{
|
|
||||||
_id: string;
|
|
||||||
suites: string[];
|
|
||||||
}>;
|
|
||||||
getTraderSuits(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ISuit[]>;
|
|
||||||
wearClothing(pmcData: IPmcData, body: IWearClothingRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
buyClothing(pmcData: IPmcData, body: IBuyClothingRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IGlobals } from "../models/eft/common/IGlobals";
|
|
||||||
import { ICustomizationItem } from "../models/eft/common/tables/ICustomizationItem";
|
|
||||||
import { IQuest } from "../models/eft/common/tables/IQuest";
|
|
||||||
import { IHideoutArea } from "../models/eft/hideout/IHideoutArea";
|
|
||||||
import { IHideoutProduction } from "../models/eft/hideout/IHideoutProduction";
|
|
||||||
import { IHideoutScavCase } from "../models/eft/hideout/IHideoutScavCase";
|
|
||||||
import { IHideoutSettingsBase } from "../models/eft/hideout/IHideoutSettingsBase";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { ILanguageBase } from "../models/spt/server/ILocaleBase";
|
|
||||||
import { ISettingsBase } from "../models/spt/server/ISettingsBase";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class DataCallbacks {
|
|
||||||
private httpResponse;
|
|
||||||
private databaseServer;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, databaseServer: DatabaseServer);
|
|
||||||
getSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ISettingsBase>;
|
|
||||||
getGlobals(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGlobals>;
|
|
||||||
getTemplateItems(url: string, info: IEmptyRequestData, sessionID: string): string;
|
|
||||||
getTemplateHandbook(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
getTemplateSuits(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<Record<string, ICustomizationItem>>;
|
|
||||||
getTemplateCharacter(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<string[]>;
|
|
||||||
getTemplateQuests(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IQuest[]>;
|
|
||||||
getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IHideoutSettingsBase>;
|
|
||||||
getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IHideoutArea[]>;
|
|
||||||
gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IHideoutProduction[]>;
|
|
||||||
getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IHideoutScavCase[]>;
|
|
||||||
getLocalesLanguages(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ILanguageBase[]>;
|
|
||||||
getLocalesMenu(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
getLocalesGlobal(url: string, info: IEmptyRequestData, sessionID: string): string;
|
|
||||||
}
|
|
@ -1,45 +0,0 @@
|
|||||||
import { DialogueController } from "../controllers/DialogueController";
|
|
||||||
import { OnUpdate } from "../di/OnUpdate";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IFriendRequestData } from "../models/eft/dialog/IFriendRequestData";
|
|
||||||
import { IGetAllAttachmentsRequestData } from "../models/eft/dialog/IGetAllAttachmentsRequestData";
|
|
||||||
import { IGetAllAttachmentsResponse } from "../models/eft/dialog/IGetAllAttachmentsResponse";
|
|
||||||
import { IGetChatServerListRequestData } from "../models/eft/dialog/IGetChatServerListRequestData";
|
|
||||||
import { IGetFriendListDataResponse } from "../models/eft/dialog/IGetFriendListDataResponse";
|
|
||||||
import { IGetMailDialogInfoRequestData } from "../models/eft/dialog/IGetMailDialogInfoRequestData";
|
|
||||||
import { IGetMailDialogListRequestData } from "../models/eft/dialog/IGetMailDialogListRequestData";
|
|
||||||
import { IGetMailDialogViewRequestData } from "../models/eft/dialog/IGetMailDialogViewRequestData";
|
|
||||||
import { IGetMailDialogViewResponseData } from "../models/eft/dialog/IGetMailDialogViewResponseData";
|
|
||||||
import { IPinDialogRequestData } from "../models/eft/dialog/IPinDialogRequestData";
|
|
||||||
import { IRemoveDialogRequestData } from "../models/eft/dialog/IRemoveDialogRequestData";
|
|
||||||
import { ISendMessageRequest } from "../models/eft/dialog/ISendMessageRequest";
|
|
||||||
import { ISetDialogReadRequestData } from "../models/eft/dialog/ISetDialogReadRequestData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { INullResponseData } from "../models/eft/httpResponse/INullResponseData";
|
|
||||||
import { DialogueInfo } from "../models/eft/profile/IAkiProfile";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class DialogueCallbacks extends OnUpdate {
|
|
||||||
private hashUtil;
|
|
||||||
private timeUtil;
|
|
||||||
private httpResponse;
|
|
||||||
private dialogueController;
|
|
||||||
constructor(hashUtil: HashUtil, timeUtil: TimeUtil, httpResponse: HttpResponseUtil, dialogueController: DialogueController);
|
|
||||||
getFriendList(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGetFriendListDataResponse>;
|
|
||||||
getChatServerList(url: string, info: IGetChatServerListRequestData, sessionID: string): IGetBodyResponseData<any[]>;
|
|
||||||
getMailDialogList(url: string, info: IGetMailDialogListRequestData, sessionID: string): IGetBodyResponseData<DialogueInfo[]>;
|
|
||||||
getMailDialogView(url: string, info: IGetMailDialogViewRequestData, sessionID: string): IGetBodyResponseData<IGetMailDialogViewResponseData>;
|
|
||||||
getMailDialogInfo(url: string, info: IGetMailDialogInfoRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
removeDialog(url: string, info: IRemoveDialogRequestData, sessionID: string): IGetBodyResponseData<any[]>;
|
|
||||||
pinDialog(url: string, info: IPinDialogRequestData, sessionID: string): IGetBodyResponseData<any[]>;
|
|
||||||
unpinDialog(url: string, info: IPinDialogRequestData, sessionID: string): IGetBodyResponseData<any[]>;
|
|
||||||
setRead(url: string, info: ISetDialogReadRequestData, sessionID: string): IGetBodyResponseData<any[]>;
|
|
||||||
getAllAttachments(url: string, info: IGetAllAttachmentsRequestData, sessionID: string): IGetBodyResponseData<IGetAllAttachmentsResponse>;
|
|
||||||
listOutbox(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any[]>;
|
|
||||||
listInbox(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any[]>;
|
|
||||||
friendRequest(url: string, request: IFriendRequestData, sessionID: string): INullResponseData;
|
|
||||||
sendMessage(url: string, request: ISendMessageRequest, sessionID: string): IGetBodyResponseData<number>;
|
|
||||||
onUpdate(timeSinceLastRun: number): boolean;
|
|
||||||
getRoute(): string;
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
import { GameController } from "../controllers/GameController";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IGameConfigResponse } from "../models/eft/game/IGameConfigResponse";
|
|
||||||
import { IGameEmptyCrcRequestData } from "../models/eft/game/IGameEmptyCrcRequestData";
|
|
||||||
import { IVersionValidateRequestData } from "../models/eft/game/IVersionValidateRequestData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { INullResponseData } from "../models/eft/httpResponse/INullResponseData";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
import { Watermark } from "../utils/Watermark";
|
|
||||||
declare class GameCallbacks {
|
|
||||||
private httpResponse;
|
|
||||||
private watermark;
|
|
||||||
private gameController;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, watermark: Watermark, gameController: GameController);
|
|
||||||
versionValidate(url: string, info: IVersionValidateRequestData, sessionID: string): INullResponseData;
|
|
||||||
gameStart(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
gameLogout(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
getGameConfig(url: string, info: IGameEmptyCrcRequestData, sessionID: string): IGetBodyResponseData<IGameConfigResponse>;
|
|
||||||
getServer(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
validateGameVersion(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
gameKeepalive(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
getVersion(url: string, info: IEmptyRequestData, sessionID: string): string;
|
|
||||||
}
|
|
||||||
export { GameCallbacks };
|
|
@ -1,8 +0,0 @@
|
|||||||
import { HandbookController } from "../controllers/HandbookController";
|
|
||||||
import { OnLoad } from "../di/OnLoad";
|
|
||||||
export declare class HandbookCallbacks extends OnLoad {
|
|
||||||
private handbookController;
|
|
||||||
constructor(handbookController: HandbookController);
|
|
||||||
onLoad(): void;
|
|
||||||
getRoute(): string;
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
import { HealthController } from "../controllers/HealthController";
|
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IHealthTreatmentRequestData } from "../models/eft/health/IHealthTreatmentRequestData";
|
|
||||||
import { IOffraidEatRequestData } from "../models/eft/health/IOffraidEatRequestData";
|
|
||||||
import { IOffraidHealRequestData } from "../models/eft/health/IOffraidHealRequestData";
|
|
||||||
import { ISyncHealthRequestData } from "../models/eft/health/ISyncHealthRequestData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class HealthCallbacks {
|
|
||||||
private httpResponse;
|
|
||||||
private profileHelper;
|
|
||||||
private healthController;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, healthController: HealthController);
|
|
||||||
syncHealth(url: string, info: ISyncHealthRequestData, sessionID: string): IGetBodyResponseData<string>;
|
|
||||||
offraidEat(pmcData: IPmcData, body: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
offraidHeal(pmcData: IPmcData, body: IOffraidHealRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
healthTreatment(pmcData: IPmcData, info: IHealthTreatmentRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
import { HideoutController } from "../controllers/HideoutController";
|
|
||||||
import { OnUpdate } from "../di/OnUpdate";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IHideoutContinousProductionStartRequestData } from "../models/eft/hideout/IHideoutContinousProductionStartRequestData";
|
|
||||||
import { IHideoutPutItemInRequestData } from "../models/eft/hideout/IHideoutPutItemInRequestData";
|
|
||||||
import { IHideoutScavCaseStartRequestData } from "../models/eft/hideout/IHideoutScavCaseStartRequestData";
|
|
||||||
import { IHideoutSingleProductionStartRequestData } from "../models/eft/hideout/IHideoutSingleProductionStartRequestData";
|
|
||||||
import { IHideoutTakeItemOutRequestData } from "../models/eft/hideout/IHideoutTakeItemOutRequestData";
|
|
||||||
import { IHideoutTakeProductionRequestData } from "../models/eft/hideout/IHideoutTakeProductionRequestData";
|
|
||||||
import { IHideoutToggleAreaRequestData } from "../models/eft/hideout/IHideoutToggleAreaRequestData";
|
|
||||||
import { IHideoutUpgradeCompleteRequestData } from "../models/eft/hideout/IHideoutUpgradeCompleteRequestData";
|
|
||||||
import { IHideoutUpgradeRequestData } from "../models/eft/hideout/IHideoutUpgradeRequestData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
export declare class HideoutCallbacks extends OnUpdate {
|
|
||||||
private hideoutController;
|
|
||||||
private configServer;
|
|
||||||
private hideoutConfig;
|
|
||||||
constructor(hideoutController: HideoutController, // TODO: delay needed
|
|
||||||
configServer: ConfigServer);
|
|
||||||
upgrade(pmcData: IPmcData, body: IHideoutUpgradeRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
upgradeComplete(pmcData: IPmcData, body: IHideoutUpgradeCompleteRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
putItemsInAreaSlots(pmcData: IPmcData, body: IHideoutPutItemInRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
takeItemsFromAreaSlots(pmcData: IPmcData, body: IHideoutTakeItemOutRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
toggleArea(pmcData: IPmcData, body: IHideoutToggleAreaRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
singleProductionStart(pmcData: IPmcData, body: IHideoutSingleProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
scavCaseProductionStart(pmcData: IPmcData, body: IHideoutScavCaseStartRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
continuousProductionStart(pmcData: IPmcData, body: IHideoutContinousProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
takeProduction(pmcData: IPmcData, body: IHideoutTakeProductionRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
onUpdate(timeSinceLastRun: number): boolean;
|
|
||||||
getRoute(): string;
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
import { OnLoad } from "../di/OnLoad";
|
|
||||||
import { IHttpServer } from "../models/spt/server/IHttpServer";
|
|
||||||
export declare class HttpCallbacks extends OnLoad {
|
|
||||||
private httpServer;
|
|
||||||
constructor(httpServer: IHttpServer);
|
|
||||||
onLoad(): void;
|
|
||||||
getRoute(): string;
|
|
||||||
getImage(): string;
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
import { InraidController } from "../controllers/InraidController";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { INullResponseData } from "../models/eft/httpResponse/INullResponseData";
|
|
||||||
import { IRegisterPlayerRequestData } from "../models/eft/inRaid/IRegisterPlayerRequestData";
|
|
||||||
import { ISaveProgressRequestData } from "../models/eft/inRaid/ISaveProgressRequestData";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class InraidCallbacks {
|
|
||||||
private inraidController;
|
|
||||||
private httpResponse;
|
|
||||||
private configServer;
|
|
||||||
private airdropConfig;
|
|
||||||
private inraidConfig;
|
|
||||||
constructor(inraidController: InraidController, httpResponse: HttpResponseUtil, configServer: ConfigServer);
|
|
||||||
registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData;
|
|
||||||
saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData;
|
|
||||||
getRaidEndState(): string;
|
|
||||||
getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string;
|
|
||||||
getWeaponDurability(url: string, info: any, sessionID: string): string;
|
|
||||||
getAirdropConfig(url: string, info: any, sessionID: string): string;
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
import { InsuranceController } from "../controllers/InsuranceController";
|
|
||||||
import { OnLoadOnUpdate } from "../di/OnLoadOnUpdate";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { IGetInsuranceCostRequestData } from "../models/eft/insurance/IGetInsuranceCostRequestData";
|
|
||||||
import { IInsureRequestData } from "../models/eft/insurance/IInsureRequestData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { InsuranceService } from "../services/InsuranceService";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class InsuranceCallbacks extends OnLoadOnUpdate {
|
|
||||||
private insuranceController;
|
|
||||||
private insuranceService;
|
|
||||||
private httpResponse;
|
|
||||||
private configServer;
|
|
||||||
private insuranceConfig;
|
|
||||||
constructor(insuranceController: InsuranceController, insuranceService: InsuranceService, httpResponse: HttpResponseUtil, configServer: ConfigServer);
|
|
||||||
onLoad(): void;
|
|
||||||
getInsuranceCost(url: string, info: IGetInsuranceCostRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
onUpdate(secondsSinceLastRun: number): boolean;
|
|
||||||
getRoute(): string;
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
import { InventoryController } from "../controllers/InventoryController";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IInventoryBindRequestData } from "../models/eft/inventory/IInventoryBindRequestData";
|
|
||||||
import { IInventoryCreateMarkerRequestData } from "../models/eft/inventory/IInventoryCreateMarkerRequestData";
|
|
||||||
import { IInventoryDeleteMarkerRequestData } from "../models/eft/inventory/IInventoryDeleteMarkerRequestData";
|
|
||||||
import { IInventoryEditMarkerRequestData } from "../models/eft/inventory/IInventoryEditMarkerRequestData";
|
|
||||||
import { IInventoryExamineRequestData } from "../models/eft/inventory/IInventoryExamineRequestData";
|
|
||||||
import { IInventoryFoldRequestData } from "../models/eft/inventory/IInventoryFoldRequestData";
|
|
||||||
import { IInventoryMergeRequestData } from "../models/eft/inventory/IInventoryMergeRequestData";
|
|
||||||
import { IInventoryMoveRequestData } from "../models/eft/inventory/IInventoryMoveRequestData";
|
|
||||||
import { IInventoryReadEncyclopediaRequestData } from "../models/eft/inventory/IInventoryReadEncyclopediaRequestData";
|
|
||||||
import { IInventoryRemoveRequestData } from "../models/eft/inventory/IInventoryRemoveRequestData";
|
|
||||||
import { IInventorySortRequestData } from "../models/eft/inventory/IInventorySortRequestData";
|
|
||||||
import { IInventorySplitRequestData } from "../models/eft/inventory/IInventorySplitRequestData";
|
|
||||||
import { IInventorySwapRequestData } from "../models/eft/inventory/IInventorySwapRequestData";
|
|
||||||
import { IInventoryTagRequestData } from "../models/eft/inventory/IInventoryTagRequestData";
|
|
||||||
import { IInventoryToggleRequestData } from "../models/eft/inventory/IInventoryToggleRequestData";
|
|
||||||
import { IInventoryTransferRequestData } from "../models/eft/inventory/IInventoryTransferRequestData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
export declare class InventoryCallbacks {
|
|
||||||
private inventoryController;
|
|
||||||
constructor(inventoryController: InventoryController);
|
|
||||||
moveItem(pmcData: IPmcData, body: IInventoryMoveRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
removeItem(pmcData: IPmcData, body: IInventoryRemoveRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
splitItem(pmcData: IPmcData, body: IInventorySplitRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
mergeItem(pmcData: IPmcData, body: IInventoryMergeRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
transferItem(pmcData: IPmcData, body: IInventoryTransferRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
swapItem(pmcData: IPmcData, body: IInventorySwapRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
tagItem(pmcData: IPmcData, body: IInventoryTagRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
bindItem(pmcData: IPmcData, body: IInventoryBindRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
examineItem(pmcData: IPmcData, body: IInventoryExamineRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
readEncyclopedia(pmcData: IPmcData, body: IInventoryReadEncyclopediaRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
sortInventory(pmcData: IPmcData, body: IInventorySortRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
createMapMarker(pmcData: IPmcData, body: IInventoryCreateMarkerRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
deleteMapMarker(pmcData: IPmcData, body: IInventoryDeleteMarkerRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
editMapMarker(pmcData: IPmcData, body: IInventoryEditMarkerRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { IItemEventRouterRequest } from "../models/eft/itemEvent/IItemEventRouterRequest";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class ItemEventCallbacks {
|
|
||||||
private httpResponse;
|
|
||||||
private itemEventRouter;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, itemEventRouter: ItemEventRouter);
|
|
||||||
handleEvents(url: string, info: IItemEventRouterRequest, sessionID: string): IGetBodyResponseData<IItemEventRouterResponse>;
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
import { LauncherController } from "../controllers/LauncherController";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IChangeRequestData } from "../models/eft/launcher/IChangeRequestData";
|
|
||||||
import { ILoginRequestData } from "../models/eft/launcher/ILoginRequestData";
|
|
||||||
import { IRegisterData } from "../models/eft/launcher/IRegisterData";
|
|
||||||
import { IRemoveProfileData } from "../models/eft/launcher/IRemoveProfileData";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
import { Watermark } from "../utils/Watermark";
|
|
||||||
declare class LauncherCallbacks {
|
|
||||||
private httpResponse;
|
|
||||||
private launcherController;
|
|
||||||
private saveServer;
|
|
||||||
private watermark;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, launcherController: LauncherController, saveServer: SaveServer, watermark: Watermark);
|
|
||||||
connect(): string;
|
|
||||||
login(url: string, info: ILoginRequestData, sessionID: string): string;
|
|
||||||
register(url: string, info: IRegisterData, sessionID: string): "FAILED" | "OK";
|
|
||||||
get(url: string, info: ILoginRequestData, sessionID: string): string;
|
|
||||||
changeUsername(url: string, info: IChangeRequestData, sessionID: string): "FAILED" | "OK";
|
|
||||||
changePassword(url: string, info: IChangeRequestData, sessionID: string): "FAILED" | "OK";
|
|
||||||
wipe(url: string, info: IRegisterData, sessionID: string): "FAILED" | "OK";
|
|
||||||
getServerVersion(): string;
|
|
||||||
ping(url: string, info: IEmptyRequestData, sessionID: string): string;
|
|
||||||
removeProfile(url: string, info: IRemoveProfileData, sessionID: string): string;
|
|
||||||
getCompatibleTarkovVersion(): string;
|
|
||||||
}
|
|
||||||
export { LauncherCallbacks };
|
|
@ -1,14 +0,0 @@
|
|||||||
import { LocationController } from "../controllers/LocationController";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { ILocationBase } from "../models/eft/common/ILocationBase";
|
|
||||||
import { ILocationsGenerateAllResponse } from "../models/eft/common/ILocationsSourceDestinationBase";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { IGetLocationRequestData } from "../models/eft/location/IGetLocationRequestData";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class LocationCallbacks {
|
|
||||||
private httpResponse;
|
|
||||||
private locationController;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, locationController: LocationController);
|
|
||||||
getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ILocationsGenerateAllResponse>;
|
|
||||||
getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData<ILocationBase>;
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
import { MatchController } from "../controllers/MatchController";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { INullResponseData } from "../models/eft/httpResponse/INullResponseData";
|
|
||||||
import { IEndOfflineRaidRequestData } from "../models/eft/match/IEndOfflineRaidRequestData";
|
|
||||||
import { IGetProfileRequestData } from "../models/eft/match/IGetProfileRequestData";
|
|
||||||
import { IStartOfflineRaidRequestData } from "../models/eft/match/IStartOffineRaidRequestData";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
export declare class MatchCallbacks {
|
|
||||||
private httpResponse;
|
|
||||||
private jsonUtil;
|
|
||||||
private matchController;
|
|
||||||
private databaseServer;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, jsonUtil: JsonUtil, matchController: MatchController, databaseServer: DatabaseServer);
|
|
||||||
updatePing(url: string, info: any, sessionID: string): INullResponseData;
|
|
||||||
exitMatch(url: string, info: any, sessionID: string): INullResponseData;
|
|
||||||
exitToMenu(url: string, info: any, sessionID: string): INullResponseData;
|
|
||||||
startGroupSearch(url: string, info: any, sessionID: string): INullResponseData;
|
|
||||||
stopGroupSearch(url: string, info: any, sessionID: string): INullResponseData;
|
|
||||||
sendGroupInvite(url: string, info: any, sessionID: string): INullResponseData;
|
|
||||||
acceptGroupInvite(url: string, info: any, sessionID: string): INullResponseData;
|
|
||||||
cancelGroupInvite(url: string, info: any, sessionID: string): INullResponseData;
|
|
||||||
putMetrics(url: string, info: any, sessionID: string): INullResponseData;
|
|
||||||
getProfile(url: string, info: IGetProfileRequestData, sessionID: string): IGetBodyResponseData<IPmcData[]>;
|
|
||||||
serverAvailable(url: string, info: any, sessionID: string): IGetBodyResponseData<any> | IGetBodyResponseData<true>;
|
|
||||||
joinMatch(url: string, info: any, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
getMetrics(url: string, info: any, sessionID: string): IGetBodyResponseData<string>;
|
|
||||||
getGroupStatus(url: string, info: any, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
createGroup(url: string, info: any, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
deleteGroup(url: string, info: any, sessionID: string): INullResponseData;
|
|
||||||
startOfflineRaid(url: string, info: IStartOfflineRaidRequestData, sessionID: string): INullResponseData;
|
|
||||||
endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData;
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
import { OnLoad } from "../di/OnLoad";
|
|
||||||
import { DelayedModLoader } from "../loaders/DelayedModLoader";
|
|
||||||
import { IHttpServer } from "../models/spt/server/IHttpServer";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
declare class ModCallbacks extends OnLoad {
|
|
||||||
private logger;
|
|
||||||
private httpResponse;
|
|
||||||
private httpServer;
|
|
||||||
private modLoader;
|
|
||||||
private configServer;
|
|
||||||
private httpConfig;
|
|
||||||
constructor(logger: ILogger, httpResponse: HttpResponseUtil, httpServer: IHttpServer, modLoader: DelayedModLoader, configServer: ConfigServer);
|
|
||||||
onLoad(): void;
|
|
||||||
getRoute(): string;
|
|
||||||
sendBundle(sessionID: string, req: any, resp: any, body: any): void;
|
|
||||||
getBundles(url: string, info: any, sessionID: string): string;
|
|
||||||
getBundle(url: string, info: any, sessionID: string): string;
|
|
||||||
}
|
|
||||||
export { ModCallbacks };
|
|
@ -1,11 +0,0 @@
|
|||||||
import { NoteController } from "../controllers/NoteController";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { INoteActionData } from "../models/eft/notes/INoteActionData";
|
|
||||||
export declare class NoteCallbacks {
|
|
||||||
private noteController;
|
|
||||||
constructor(noteController: NoteController);
|
|
||||||
addNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
editNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
deleteNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
import { NotifierController } from "../controllers/NotifierController";
|
|
||||||
import { HttpServerHelper } from "../helpers/HttpServerHelper";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { INotifierChannel } from "../models/eft/notifier/INotifier";
|
|
||||||
import { ISelectProfileRequestData } from "../models/eft/notifier/ISelectProfileRequestData";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class NotifierCallbacks {
|
|
||||||
private httpServerHelper;
|
|
||||||
private httpResponse;
|
|
||||||
private notifierController;
|
|
||||||
constructor(httpServerHelper: HttpServerHelper, httpResponse: HttpResponseUtil, notifierController: NotifierController);
|
|
||||||
/**
|
|
||||||
* If we don't have anything to send, it's ok to not send anything back
|
|
||||||
* because notification requests can be long-polling. In fact, we SHOULD wait
|
|
||||||
* until we actually have something to send because otherwise we'd spam the client
|
|
||||||
* and the client would abort the connection due to spam.
|
|
||||||
*/
|
|
||||||
sendNotification(sessionID: string, req: any, resp: any, data: any): void;
|
|
||||||
getNotifier(url: string, info: any, sessionID: string): IGetBodyResponseData<any[]>;
|
|
||||||
createNotifierChannel(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<INotifierChannel>;
|
|
||||||
selectProfile(url: string, info: ISelectProfileRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
notify(url: string, info: any, sessionID: string): string;
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
import { PresetBuildController } from "../controllers/PresetBuildController";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { IPresetBuildActionRequestData } from "../models/eft/presetBuild/IPresetBuildActionRequestData";
|
|
||||||
import { WeaponBuild } from "../models/eft/profile/IAkiProfile";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class PresetBuildCallbacks {
|
|
||||||
private httpResponse;
|
|
||||||
private presetBuildController;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, presetBuildController: PresetBuildController);
|
|
||||||
getHandbookUserlist(url: string, info: any, sessionID: string): IGetBodyResponseData<WeaponBuild[]>;
|
|
||||||
saveBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
removeBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
import { PresetController } from "../controllers/PresetController";
|
|
||||||
import { OnLoad } from "../di/OnLoad";
|
|
||||||
export declare class PresetCallbacks extends OnLoad {
|
|
||||||
private presetController;
|
|
||||||
constructor(presetController: PresetController);
|
|
||||||
onLoad(): void;
|
|
||||||
getRoute(): string;
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
import { ProfileController } from "../controllers/ProfileController";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { INullResponseData } from "../models/eft/httpResponse/INullResponseData";
|
|
||||||
import { IGetMiniProfileRequestData } from "../models/eft/launcher/IGetMiniProfileRequestData";
|
|
||||||
import { IProfileChangeNicknameRequestData } from "../models/eft/profile/IProfileChangeNicknameRequestData";
|
|
||||||
import { IProfileChangeVoiceRequestData } from "../models/eft/profile/IProfileChangeVoiceRequestData";
|
|
||||||
import { IProfileCreateRequestData } from "../models/eft/profile/IProfileCreateRequestData";
|
|
||||||
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
|
||||||
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
|
||||||
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class ProfileCallbacks {
|
|
||||||
private httpResponse;
|
|
||||||
private timeUtil;
|
|
||||||
private profileController;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, profileController: ProfileController);
|
|
||||||
createProfile(url: string, info: IProfileCreateRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
getProfileData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
regenerateScav(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
changeVoice(url: string, info: IProfileChangeVoiceRequestData, sessionID: string): INullResponseData;
|
|
||||||
changeNickname(url: string, info: IProfileChangeNicknameRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
validateNickname(url: string, info: IValidateNicknameRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
getReservedNickname(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<string>;
|
|
||||||
getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
searchFriend(url: string, info: ISearchFriendRequestData, sessionID: string): IGetBodyResponseData<ISearchFriendResponse[]>;
|
|
||||||
getMiniProfile(url: string, info: IGetMiniProfileRequestData, sessionID: string): string;
|
|
||||||
getAllMiniProfiles(url: string, info: any, sessionID: string): string;
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
import { QuestController } from "../controllers/QuestController";
|
|
||||||
import { RepeatableQuestController } from "../controllers/RepeatableQuestController";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IQuest } from "../models/eft/common/tables/IQuest";
|
|
||||||
import { IPmcDataRepeatableQuest } from "../models/eft/common/tables/IRepeatableQuests";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { IAcceptQuestRequestData } from "../models/eft/quests/IAcceptQuestRequestData";
|
|
||||||
import { ICompleteQuestRequestData } from "../models/eft/quests/ICompleteQuestRequestData";
|
|
||||||
import { IHandoverQuestRequestData } from "../models/eft/quests/IHandoverQuestRequestData";
|
|
||||||
import { IListQuestsRequestData } from "../models/eft/quests/IListQuestsRequestData";
|
|
||||||
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class QuestCallbacks {
|
|
||||||
private httpResponse;
|
|
||||||
private questController;
|
|
||||||
private repeatableQuestController;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, questController: QuestController, repeatableQuestController: RepeatableQuestController);
|
|
||||||
changeRepeatableQuest(pmcData: IPmcData, body: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
|
|
||||||
acceptQuest(pmcData: IPmcData, body: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
completeQuest(pmcData: IPmcData, body: ICompleteQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
handoverQuest(pmcData: IPmcData, body: IHandoverQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
listQuests(url: string, info: IListQuestsRequestData, sessionID: string): IGetBodyResponseData<IQuest[]>;
|
|
||||||
activityPeriods(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IPmcDataRepeatableQuest[]>;
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
import { RagfairController } from "../controllers/RagfairController";
|
|
||||||
import { OnLoadOnUpdate } from "../di/OnLoadOnUpdate";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { IAddOfferRequestData } from "../models/eft/ragfair/IAddOfferRequestData";
|
|
||||||
import { IExtendOfferRequestData } from "../models/eft/ragfair/IExtendOfferRequestData";
|
|
||||||
import { IGetItemPriceResult } from "../models/eft/ragfair/IGetItemPriceResult";
|
|
||||||
import { IGetMarketPriceRequestData } from "../models/eft/ragfair/IGetMarketPriceRequestData";
|
|
||||||
import { IRemoveOfferRequestData } from "../models/eft/ragfair/IRemoveOfferRequestData";
|
|
||||||
import { ISearchRequestData } from "../models/eft/ragfair/ISearchRequestData";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { RagfairServer } from "../servers/RagfairServer";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
export declare class RagfairCallbacks extends OnLoadOnUpdate {
|
|
||||||
private httpResponse;
|
|
||||||
private logger;
|
|
||||||
private jsonUtil;
|
|
||||||
private ragfairServer;
|
|
||||||
private ragfairController;
|
|
||||||
private configServer;
|
|
||||||
private ragfairConfig;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, logger: ILogger, jsonUtil: JsonUtil, ragfairServer: RagfairServer, ragfairController: RagfairController, configServer: ConfigServer);
|
|
||||||
onLoad(): void;
|
|
||||||
getRoute(): string;
|
|
||||||
search(url: string, info: ISearchRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
getMarketPrice(url: string, info: IGetMarketPriceRequestData, sessionID: string): IGetBodyResponseData<IGetItemPriceResult>;
|
|
||||||
getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
addOffer(pmcData: IPmcData, info: IAddOfferRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
removeOffer(pmcData: IPmcData, info: IRemoveOfferRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
extendOffer(pmcData: IPmcData, info: IExtendOfferRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
onUpdate(timeSinceLastRun: number): boolean;
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
import { RepairController } from "../controllers/RepairController";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { IRepairActionDataRequest } from "../models/eft/repair/IRepairActionDataRequest";
|
|
||||||
import { ITraderRepairActionDataRequest } from "../models/eft/repair/ITraderRepairActionDataRequest";
|
|
||||||
export declare class RepairCallbacks {
|
|
||||||
private repairController;
|
|
||||||
constructor(repairController: RepairController);
|
|
||||||
traderRepair(pmcData: IPmcData, body: ITraderRepairActionDataRequest, sessionID: string): IItemEventRouterResponse;
|
|
||||||
repair(pmcData: IPmcData, body: IRepairActionDataRequest, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
import { OnLoadOnUpdate } from "../di/OnLoadOnUpdate";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
export declare class SaveCallbacks extends OnLoadOnUpdate {
|
|
||||||
private saveServer;
|
|
||||||
constructor(saveServer: SaveServer);
|
|
||||||
onLoad(): void;
|
|
||||||
getRoute(): string;
|
|
||||||
onUpdate(secondsSinceLastRun: number): boolean;
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
import { TradeController } from "../controllers/TradeController";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { IProcessBaseTradeRequestData } from "../models/eft/trade/IProcessBaseTradeRequestData";
|
|
||||||
import { IProcessRagfairTradeRequestData } from "../models/eft/trade/IProcessRagfairTradeRequestData";
|
|
||||||
export declare class TradeCallbacks {
|
|
||||||
private tradeController;
|
|
||||||
constructor(tradeController: TradeController);
|
|
||||||
processTrade(pmcData: IPmcData, body: IProcessBaseTradeRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
processRagfairTrade(pmcData: IPmcData, body: IProcessRagfairTradeRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
import { TraderController } from "../controllers/TraderController";
|
|
||||||
import { OnLoadOnUpdate } from "../di/OnLoadOnUpdate";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IBarterScheme, ITraderAssort, ITraderBase } from "../models/eft/common/tables/ITrader";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class TraderCallbacks extends OnLoadOnUpdate {
|
|
||||||
private httpResponse;
|
|
||||||
private traderController;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, traderController: TraderController);
|
|
||||||
onLoad(): void;
|
|
||||||
getRoute(): string;
|
|
||||||
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
|
||||||
getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<Record<string, IBarterScheme[][]>>;
|
|
||||||
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
|
||||||
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
|
||||||
onUpdate(): boolean;
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
import { WeatherController } from "../controllers/WeatherController";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class WeatherCallbacks {
|
|
||||||
private httpResponse;
|
|
||||||
private weatherController;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, weatherController: WeatherController);
|
|
||||||
getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
import { WishlistController } from "../controllers/WishlistController";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { IWishlistActionData } from "../models/eft/wishlist/IWishlistActionData";
|
|
||||||
export declare class WishlistCallbacks {
|
|
||||||
private wishlistController;
|
|
||||||
constructor(wishlistController: WishlistController);
|
|
||||||
addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
import { BotGenerator } from "../generators/BotGenerator";
|
|
||||||
import { BotHelper } from "../helpers/BotHelper";
|
|
||||||
import { IGenerateBotsRequestData } from "../models/eft/bot/IGenerateBotsRequestData";
|
|
||||||
import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
|
||||||
import { IBotCore } from "../models/eft/common/tables/IBotCore";
|
|
||||||
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
export declare class BotController {
|
|
||||||
private databaseServer;
|
|
||||||
private botGenerator;
|
|
||||||
private botHelper;
|
|
||||||
private configServer;
|
|
||||||
private botConfig;
|
|
||||||
constructor(databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, configServer: ConfigServer);
|
|
||||||
getBotLimit(type: string): number;
|
|
||||||
getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty;
|
|
||||||
generate(info: IGenerateBotsRequestData, playerScav?: boolean): IBotBase[];
|
|
||||||
getBotCap(): number;
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { ISuit } from "../models/eft/common/tables/ITrader";
|
|
||||||
import { IBuyClothingRequestData } from "../models/eft/customization/IBuyClothingRequestData";
|
|
||||||
import { IWearClothingRequestData } from "../models/eft/customization/IWearClothingRequestData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
export declare class CustomizationController {
|
|
||||||
private logger;
|
|
||||||
private itemEventRouter;
|
|
||||||
private databaseServer;
|
|
||||||
private saveServer;
|
|
||||||
private profileHelper;
|
|
||||||
constructor(logger: ILogger, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper);
|
|
||||||
getTraderSuits(traderID: string, sessionID: string): ISuit[];
|
|
||||||
wearClothing(pmcData: IPmcData, body: IWearClothingRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
buyClothing(pmcData: IPmcData, body: IBuyClothingRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
private getAllTraderSuits;
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
import { DialogueHelper } from "../helpers/DialogueHelper";
|
|
||||||
import { IGetAllAttachmentsResponse } from "../models/eft/dialog/IGetAllAttachmentsResponse";
|
|
||||||
import { IGetFriendListDataResponse } from "../models/eft/dialog/IGetFriendListDataResponse";
|
|
||||||
import { IGetMailDialogViewResponseData } from "../models/eft/dialog/IGetMailDialogViewResponseData";
|
|
||||||
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
|
||||||
import { DialogueInfo } from "../models/eft/profile/IAkiProfile";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
export declare class DialogueController {
|
|
||||||
private httpResponse;
|
|
||||||
private saveServer;
|
|
||||||
private dialogueHelper;
|
|
||||||
constructor(httpResponse: HttpResponseUtil, saveServer: SaveServer, dialogueHelper: DialogueHelper);
|
|
||||||
getFriendList(sessionID: string): IGetFriendListDataResponse;
|
|
||||||
generateDialogueList(sessionID: string): IGetBodyResponseData<DialogueInfo[]>;
|
|
||||||
getDialogueInfo(dialogueID: string, sessionID: string): DialogueInfo;
|
|
||||||
generateDialogueView(dialogueID: string, sessionID: string): IGetMailDialogViewResponseData;
|
|
||||||
removeDialogue(dialogueID: string, sessionID: string): void;
|
|
||||||
setDialoguePin(dialogueID: string, shouldPin: boolean, sessionID: string): void;
|
|
||||||
setRead(dialogueIDs: string[], sessionID: string): void;
|
|
||||||
getAllAttachments(dialogueID: string, sessionID: string): IGetAllAttachmentsResponse;
|
|
||||||
private messagesHaveUncollectedRewards;
|
|
||||||
private removeExpiredItems;
|
|
||||||
update(): void;
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
import { HttpServerHelper } from "../helpers/HttpServerHelper";
|
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { IGameConfigResponse } from "../models/eft/game/IGameConfigResponse";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { Watermark } from "../utils/Watermark";
|
|
||||||
export declare class GameController {
|
|
||||||
private logger;
|
|
||||||
private watermark;
|
|
||||||
private httpServerHelper;
|
|
||||||
private profileHelper;
|
|
||||||
private configServer;
|
|
||||||
private httpConfig;
|
|
||||||
constructor(logger: ILogger, watermark: Watermark, httpServerHelper: HttpServerHelper, profileHelper: ProfileHelper, configServer: ConfigServer);
|
|
||||||
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string): void;
|
|
||||||
private addMissingBonusesProperty;
|
|
||||||
private addMissingRepeatableQuestsProperty;
|
|
||||||
private addMissingWeaponRepairSkill;
|
|
||||||
private addMissingAkiVersionTagToProfile;
|
|
||||||
private addMissingArmorRepairSkill;
|
|
||||||
private fixNullTraderSalesSums;
|
|
||||||
private removeDanglingConditionCounters;
|
|
||||||
private removeDanglingBackendCounters;
|
|
||||||
getGameConfig(sessionID: string): IGameConfigResponse;
|
|
||||||
getServer(): any[];
|
|
||||||
private getActiveRepeatableQuests;
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
import { HandbookHelper } from "../helpers/HandbookHelper";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
export declare class HandbookController {
|
|
||||||
private databaseServer;
|
|
||||||
private handbookHelper;
|
|
||||||
constructor(databaseServer: DatabaseServer, handbookHelper: HandbookHelper);
|
|
||||||
load(): void;
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { PaymentService } from "../services/PaymentService";
|
|
||||||
import { InventoryHelper } from "../helpers/InventoryHelper";
|
|
||||||
import { HealthHelper } from "../helpers/HealthHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IHealthTreatmentRequestData } from "../models/eft/health/IHealthTreatmentRequestData";
|
|
||||||
import { IOffraidEatRequestData } from "../models/eft/health/IOffraidEatRequestData";
|
|
||||||
import { IOffraidHealRequestData } from "../models/eft/health/IOffraidHealRequestData";
|
|
||||||
import { ISyncHealthRequestData } from "../models/eft/health/ISyncHealthRequestData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
export declare class HealthController {
|
|
||||||
private logger;
|
|
||||||
private itemEventRouter;
|
|
||||||
private itemHelper;
|
|
||||||
private paymentService;
|
|
||||||
private inventoryHelper;
|
|
||||||
private healthHelper;
|
|
||||||
constructor(logger: ILogger, itemEventRouter: ItemEventRouter, itemHelper: ItemHelper, paymentService: PaymentService, inventoryHelper: InventoryHelper, healthHelper: HealthHelper);
|
|
||||||
saveVitality(pmcData: IPmcData, info: ISyncHealthRequestData, sessionID: string): void;
|
|
||||||
offraidHeal(pmcData: IPmcData, body: IOffraidHealRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
offraidEat(pmcData: IPmcData, body: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
healthTreatment(pmcData: IPmcData, info: IHealthTreatmentRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
import { HideoutHelper } from "../helpers/HideoutHelper";
|
|
||||||
import { InventoryHelper } from "../helpers/InventoryHelper";
|
|
||||||
import { PaymentHelper } from "../helpers/PaymentHelper";
|
|
||||||
import { PresetHelper } from "../helpers/PresetHelper";
|
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { HideoutUpgradeCompleteRequestData } from "../models/eft/hideout/HideoutUpgradeCompleteRequestData";
|
|
||||||
import { IHideoutContinousProductionStartRequestData } from "../models/eft/hideout/IHideoutContinousProductionStartRequestData";
|
|
||||||
import { IHideoutPutItemInRequestData } from "../models/eft/hideout/IHideoutPutItemInRequestData";
|
|
||||||
import { IHideoutScavCaseStartRequestData } from "../models/eft/hideout/IHideoutScavCaseStartRequestData";
|
|
||||||
import { IHideoutSingleProductionStartRequestData } from "../models/eft/hideout/IHideoutSingleProductionStartRequestData";
|
|
||||||
import { IHideoutTakeItemOutRequestData } from "../models/eft/hideout/IHideoutTakeItemOutRequestData";
|
|
||||||
import { IHideoutTakeProductionRequestData } from "../models/eft/hideout/IHideoutTakeProductionRequestData";
|
|
||||||
import { IHideoutToggleAreaRequestData } from "../models/eft/hideout/IHideoutToggleAreaRequestData";
|
|
||||||
import { IHideoutUpgradeRequestData } from "../models/eft/hideout/IHideoutUpgradeRequestData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { PlayerService } from "../services/PlayerService";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class HideoutController {
|
|
||||||
private logger;
|
|
||||||
private hashUtil;
|
|
||||||
private timeUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private randomUtil;
|
|
||||||
private inventoryHelper;
|
|
||||||
private saveServer;
|
|
||||||
private playerService;
|
|
||||||
private presetHelper;
|
|
||||||
private paymentHelper;
|
|
||||||
private itemEventRouter;
|
|
||||||
private httpResponse;
|
|
||||||
private profileHelper;
|
|
||||||
private hideoutHelper;
|
|
||||||
private configServer;
|
|
||||||
private hideoutConfig;
|
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, inventoryHelper: InventoryHelper, saveServer: SaveServer, playerService: PlayerService, presetHelper: PresetHelper, paymentHelper: PaymentHelper, itemEventRouter: ItemEventRouter, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, hideoutHelper: HideoutHelper, configServer: ConfigServer);
|
|
||||||
upgrade(pmcData: IPmcData, body: IHideoutUpgradeRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
upgradeComplete(pmcData: IPmcData, body: HideoutUpgradeCompleteRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
putItemsInAreaSlots(pmcData: IPmcData, body: IHideoutPutItemInRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
takeItemsFromAreaSlots(pmcData: IPmcData, body: IHideoutTakeItemOutRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
toggleArea(pmcData: IPmcData, body: IHideoutToggleAreaRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
singleProductionStart(pmcData: IPmcData, body: IHideoutSingleProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
scavCaseProductionStart(pmcData: IPmcData, body: IHideoutScavCaseStartRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
continuousProductionStart(pmcData: IPmcData, body: IHideoutContinousProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
takeProduction(pmcData: IPmcData, body: IHideoutTakeProductionRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
registerProduction(pmcData: IPmcData, body: IHideoutSingleProductionStartRequestData | IHideoutContinousProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
update(): void;
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
import { ExtendedProfileHelper } from "../helpers/ExtendedProfileHelper";
|
|
||||||
import { HealthHelper } from "../helpers/HealthHelper";
|
|
||||||
import { InRaidHelper } from "../helpers/InRaidHelper";
|
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { QuestHelper } from "../helpers/QuestHelper";
|
|
||||||
import { TraderHelper } from "../helpers/TraderHelper";
|
|
||||||
import { IRegisterPlayerRequestData } from "../models/eft/inRaid/IRegisterPlayerRequestData";
|
|
||||||
import { ISaveProgressRequestData } from "../models/eft/inRaid/ISaveProgressRequestData";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { InsuranceService } from "../services/InsuranceService";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
export declare class InraidController {
|
|
||||||
private saveServer;
|
|
||||||
private jsonUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private questHelper;
|
|
||||||
private itemHelper;
|
|
||||||
private extendedProfileHelper;
|
|
||||||
private healthHelper;
|
|
||||||
private traderHelper;
|
|
||||||
private insuranceService;
|
|
||||||
private inRaidHelper;
|
|
||||||
private configServer;
|
|
||||||
private inraidConfig;
|
|
||||||
constructor(saveServer: SaveServer, jsonUtil: JsonUtil, databaseServer: DatabaseServer, questHelper: QuestHelper, itemHelper: ItemHelper, extendedProfileHelper: ExtendedProfileHelper, healthHelper: HealthHelper, traderHelper: TraderHelper, insuranceService: InsuranceService, inRaidHelper: InRaidHelper, configServer: ConfigServer);
|
|
||||||
addPlayer(sessionID: string, info: IRegisterPlayerRequestData): void;
|
|
||||||
saveProgress(offraidData: ISaveProgressRequestData, sessionID: string): void;
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
import { DialogueHelper } from "../helpers/DialogueHelper";
|
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IGetInsuranceCostRequestData } from "../models/eft/insurance/IGetInsuranceCostRequestData";
|
|
||||||
import { IInsureRequestData } from "../models/eft/insurance/IInsureRequestData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { InsuranceService } from "../services/InsuranceService";
|
|
||||||
import { PaymentService } from "../services/PaymentService";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class InsuranceController {
|
|
||||||
private logger;
|
|
||||||
private randomUtil;
|
|
||||||
private itemEventRouter;
|
|
||||||
private timeUtil;
|
|
||||||
private saveServer;
|
|
||||||
private databaseServer;
|
|
||||||
private itemHelper;
|
|
||||||
private profileHelper;
|
|
||||||
private dialogueHelper;
|
|
||||||
private paymentService;
|
|
||||||
private insuranceService;
|
|
||||||
private configServer;
|
|
||||||
private insuranceConfig;
|
|
||||||
constructor(logger: ILogger, randomUtil: RandomUtil, itemEventRouter: ItemEventRouter, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileHelper: ProfileHelper, dialogueHelper: DialogueHelper, paymentService: PaymentService, // TODO: delay required
|
|
||||||
insuranceService: InsuranceService, configServer: ConfigServer);
|
|
||||||
processReturn(): void;
|
|
||||||
insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
cost(info: IGetInsuranceCostRequestData, sessionID: string): any;
|
|
||||||
doAbsolutelyNothing(): void;
|
|
||||||
}
|
|
@ -1,107 +0,0 @@
|
|||||||
import { InventoryHelper } from "../helpers/InventoryHelper";
|
|
||||||
import { PaymentHelper } from "../helpers/PaymentHelper";
|
|
||||||
import { PresetHelper } from "../helpers/PresetHelper";
|
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IAddItemRequestData } from "../models/eft/inventory/IAddItemRequestData";
|
|
||||||
import { IInventoryBindRequestData } from "../models/eft/inventory/IInventoryBindRequestData";
|
|
||||||
import { IInventoryCreateMarkerRequestData } from "../models/eft/inventory/IInventoryCreateMarkerRequestData";
|
|
||||||
import { IInventoryDeleteMarkerRequestData } from "../models/eft/inventory/IInventoryDeleteMarkerRequestData";
|
|
||||||
import { IInventoryEditMarkerRequestData } from "../models/eft/inventory/IInventoryEditMarkerRequestData";
|
|
||||||
import { IInventoryExamineRequestData } from "../models/eft/inventory/IInventoryExamineRequestData";
|
|
||||||
import { IInventoryFoldRequestData } from "../models/eft/inventory/IInventoryFoldRequestData";
|
|
||||||
import { IInventoryMergeRequestData } from "../models/eft/inventory/IInventoryMergeRequestData";
|
|
||||||
import { IInventoryMoveRequestData } from "../models/eft/inventory/IInventoryMoveRequestData";
|
|
||||||
import { IInventoryReadEncyclopediaRequestData } from "../models/eft/inventory/IInventoryReadEncyclopediaRequestData";
|
|
||||||
import { IInventoryRemoveRequestData } from "../models/eft/inventory/IInventoryRemoveRequestData";
|
|
||||||
import { IInventorySortRequestData } from "../models/eft/inventory/IInventorySortRequestData";
|
|
||||||
import { IInventorySplitRequestData } from "../models/eft/inventory/IInventorySplitRequestData";
|
|
||||||
import { IInventorySwapRequestData } from "../models/eft/inventory/IInventorySwapRequestData";
|
|
||||||
import { IInventoryTagRequestData } from "../models/eft/inventory/IInventoryTagRequestData";
|
|
||||||
import { IInventoryToggleRequestData } from "../models/eft/inventory/IInventoryToggleRequestData";
|
|
||||||
import { IInventoryTransferRequestData } from "../models/eft/inventory/IInventoryTransferRequestData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
export declare class InventoryController {
|
|
||||||
private logger;
|
|
||||||
private hashUtil;
|
|
||||||
private jsonUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private presetHelper;
|
|
||||||
private inventoryHelper;
|
|
||||||
private profileHelper;
|
|
||||||
private paymentHelper;
|
|
||||||
private itemEventRouter;
|
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, itemEventRouter: ItemEventRouter);
|
|
||||||
/**
|
|
||||||
* Move Item
|
|
||||||
* change location of item with parentId and slotId
|
|
||||||
* transfers items from one profile to another if fromOwner/toOwner is set in the body.
|
|
||||||
* otherwise, move is contained within the same profile_f.
|
|
||||||
*/
|
|
||||||
moveItem(pmcData: IPmcData, body: IInventoryMoveRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Remove Item from Profile
|
|
||||||
* Deep tree item deletion, also removes items from insurance list
|
|
||||||
*/
|
|
||||||
removeItem(pmcData: IPmcData, itemId: string, sessionID: string, output?: IItemEventRouterResponse): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Implements functionality "Discard" from Main menu (Stash etc.)
|
|
||||||
* Removes item from PMC Profile
|
|
||||||
*/
|
|
||||||
discardItem(pmcData: IPmcData, body: IInventoryRemoveRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Split Item
|
|
||||||
* spliting 1 item-stack into 2 separate items ...
|
|
||||||
*/
|
|
||||||
splitItem(pmcData: IPmcData, body: IInventorySplitRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Merge Item
|
|
||||||
* merges 2 items into one, deletes item from `body.item` and adding number of stacks into `body.with`
|
|
||||||
*/
|
|
||||||
mergeItem(pmcData: IPmcData, body: IInventoryMergeRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Transfer item
|
|
||||||
* Used to take items from scav inventory into stash or to insert ammo into mags (shotgun ones) and reloading weapon by clicking "Reload"
|
|
||||||
*/
|
|
||||||
transferItem(pmcData: IPmcData, body: IInventoryTransferRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Swap Item
|
|
||||||
* its used for "reload" if you have weapon in hands and magazine is somewhere else in rig or backpack in equipment
|
|
||||||
*/
|
|
||||||
swapItem(pmcData: IPmcData, body: IInventorySwapRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Give Item
|
|
||||||
* its used for "add" item like gifts etc.
|
|
||||||
*/
|
|
||||||
addItem(pmcData: IPmcData, body: IAddItemRequestData, output: IItemEventRouterResponse, sessionID: string, callback: any, foundInRaid?: boolean, addUpd?: any): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Handles folding of Weapons
|
|
||||||
*/
|
|
||||||
foldItem(pmcData: IPmcData, body: IInventoryFoldRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Toggles "Toggleable" items like night vision goggles and face shields.
|
|
||||||
*/
|
|
||||||
toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Handles Tagging of items (primary Containers).
|
|
||||||
*/
|
|
||||||
tagItem(pmcData: IPmcData, body: IInventoryTagRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
bindItem(pmcData: IPmcData, body: IInventoryBindRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Handles examining of the item *
|
|
||||||
*/
|
|
||||||
examineItem(pmcData: IPmcData, body: IInventoryExamineRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
readEncyclopedia(pmcData: IPmcData, body: IInventoryReadEncyclopediaRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Handles sorting of Inventory.
|
|
||||||
*/
|
|
||||||
sortInventory(pmcData: IPmcData, body: IInventorySortRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
createMapMarker(pmcData: IPmcData, body: IInventoryCreateMarkerRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
deleteMapMarker(pmcData: IPmcData, body: IInventoryDeleteMarkerRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
editMapMarker(pmcData: IPmcData, body: IInventoryEditMarkerRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
import { HttpServerHelper } from "../helpers/HttpServerHelper";
|
|
||||||
import { IChangeRequestData } from "../models/eft/launcher/IChangeRequestData";
|
|
||||||
import { ILoginRequestData } from "../models/eft/launcher/ILoginRequestData";
|
|
||||||
import { IRegisterData } from "../models/eft/launcher/IRegisterData";
|
|
||||||
import { Info } from "../models/eft/profile/IAkiProfile";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
export declare class LauncherController {
|
|
||||||
private hashUtil;
|
|
||||||
private saveServer;
|
|
||||||
private httpServerHelper;
|
|
||||||
private databaseServer;
|
|
||||||
private configServer;
|
|
||||||
private coreConfig;
|
|
||||||
constructor(hashUtil: HashUtil, saveServer: SaveServer, httpServerHelper: HttpServerHelper, databaseServer: DatabaseServer, configServer: ConfigServer);
|
|
||||||
connect(): any;
|
|
||||||
find(sessionIdKey: string): Info;
|
|
||||||
login(info: ILoginRequestData): string;
|
|
||||||
register(info: IRegisterData): string;
|
|
||||||
private createAccount;
|
|
||||||
changeUsername(info: IChangeRequestData): string;
|
|
||||||
changePassword(info: IChangeRequestData): string;
|
|
||||||
wipe(info: IRegisterData): string;
|
|
||||||
getCompatibleTarkovVersion(): string;
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
import { LocationGenerator } from "../generators/LocationGenerator";
|
|
||||||
import { ILocationBase } from "../models/eft/common/ILocationBase";
|
|
||||||
import { ILocationsGenerateAllResponse } from "../models/eft/common/ILocationsSourceDestinationBase";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class LocationController {
|
|
||||||
private jsonUtil;
|
|
||||||
private logger;
|
|
||||||
private locationGenerator;
|
|
||||||
private databaseServer;
|
|
||||||
private timeUtil;
|
|
||||||
constructor(jsonUtil: JsonUtil, logger: ILogger, locationGenerator: LocationGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil);
|
|
||||||
get(location: string): ILocationBase;
|
|
||||||
generate(name: string): ILocationBase;
|
|
||||||
generateAll(): ILocationsGenerateAllResponse;
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { TraderHelper } from "../helpers/TraderHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IEndOfflineRaidRequestData } from "../models/eft/match/IEndOfflineRaidRequestData";
|
|
||||||
import { IGetProfileRequestData } from "../models/eft/match/IGetProfileRequestData";
|
|
||||||
import { IStartOfflineRaidRequestData } from "../models/eft/match/IStartOffineRaidRequestData";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { MatchLocationService } from "../services/MatchLocationService";
|
|
||||||
export declare class MatchController {
|
|
||||||
private saveServer;
|
|
||||||
private profileHelper;
|
|
||||||
private matchLocationService;
|
|
||||||
private traderHelper;
|
|
||||||
private configServer;
|
|
||||||
private matchConfig;
|
|
||||||
private inraidConfig;
|
|
||||||
constructor(saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, configServer: ConfigServer);
|
|
||||||
getEnabled(): boolean;
|
|
||||||
getProfile(info: IGetProfileRequestData): IPmcData[];
|
|
||||||
private getMatch;
|
|
||||||
createGroup(sessionID: string, info: any): any;
|
|
||||||
deleteGroup(info: any): void;
|
|
||||||
joinMatch(info: any, sessionID: string): any[];
|
|
||||||
getGroupStatus(info: any): any;
|
|
||||||
startOfflineRaid(info: IStartOfflineRaidRequestData, sessionID: string): void;
|
|
||||||
endOfflineRaid(info: IEndOfflineRaidRequestData, sessionID: string): void;
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { INoteActionData } from "../models/eft/notes/INoteActionData";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
declare class NoteController {
|
|
||||||
private itemEventRouter;
|
|
||||||
constructor(itemEventRouter: ItemEventRouter);
|
|
||||||
addNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
editNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
deleteNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
||||||
export { NoteController };
|
|
@ -1,22 +0,0 @@
|
|||||||
import { NotifierHelper } from "../helpers/NotifierHelper";
|
|
||||||
import { NotificationService } from "../services/NotificationService";
|
|
||||||
import { INotifierChannel } from "../models/eft/notifier/INotifier";
|
|
||||||
import { HttpServerHelper } from "../helpers/HttpServerHelper";
|
|
||||||
export declare class NotifierController {
|
|
||||||
private notifierHelper;
|
|
||||||
private httpServerHelper;
|
|
||||||
private notificationService;
|
|
||||||
private pollInterval;
|
|
||||||
private timeout;
|
|
||||||
constructor(notifierHelper: NotifierHelper, httpServerHelper: HttpServerHelper, notificationService: NotificationService);
|
|
||||||
/**
|
|
||||||
* Resolve an array of session notifications.
|
|
||||||
*
|
|
||||||
* If no notifications are currently queued then intermittently check for new notifications until either
|
|
||||||
* one or more appear or when a timeout expires.
|
|
||||||
* If no notifications are available after the timeout, use a default message.
|
|
||||||
*/
|
|
||||||
notifyAsync(sessionID: string): Promise<unknown>;
|
|
||||||
getServer(sessionID: string): string;
|
|
||||||
getChannel(sessionID: string): INotifierChannel;
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { IPresetBuildActionRequestData } from "../models/eft/presetBuild/IPresetBuildActionRequestData";
|
|
||||||
import { WeaponBuild } from "../models/eft/profile/IAkiProfile";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
export declare class PresetBuildController {
|
|
||||||
private hashUtil;
|
|
||||||
private itemEventRouter;
|
|
||||||
private itemHelper;
|
|
||||||
private saveServer;
|
|
||||||
constructor(hashUtil: HashUtil, itemEventRouter: ItemEventRouter, itemHelper: ItemHelper, saveServer: SaveServer);
|
|
||||||
getUserBuilds(sessionID: string): WeaponBuild[];
|
|
||||||
saveBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
removeBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
import { PresetHelper } from "../helpers/PresetHelper";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
export declare class PresetController {
|
|
||||||
private presetHelper;
|
|
||||||
private databaseServer;
|
|
||||||
constructor(presetHelper: PresetHelper, databaseServer: DatabaseServer);
|
|
||||||
initialize(): void;
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
import { ExtendedProfileHelper } from "../helpers/ExtendedProfileHelper";
|
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { TraderHelper } from "../helpers/TraderHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IMiniProfile } from "../models/eft/launcher/IMiniProfile";
|
|
||||||
import { IProfileChangeNicknameRequestData } from "../models/eft/profile/IProfileChangeNicknameRequestData";
|
|
||||||
import { IProfileChangeVoiceRequestData } from "../models/eft/profile/IProfileChangeVoiceRequestData";
|
|
||||||
import { IProfileCreateRequestData } from "../models/eft/profile/IProfileCreateRequestData";
|
|
||||||
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
|
||||||
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
|
||||||
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class ProfileController {
|
|
||||||
private hashUtil;
|
|
||||||
private timeUtil;
|
|
||||||
private saveServer;
|
|
||||||
private databaseServer;
|
|
||||||
private itemHelper;
|
|
||||||
private traderHelper;
|
|
||||||
private extendedProfileHelper;
|
|
||||||
constructor(hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, traderHelper: TraderHelper, extendedProfileHelper: ExtendedProfileHelper);
|
|
||||||
getMiniProfiles(): IMiniProfile[];
|
|
||||||
getMiniProfile(sessionID: string): any;
|
|
||||||
getCompleteProfile(sessionID: string): IPmcData[];
|
|
||||||
createProfile(info: IProfileCreateRequestData, sessionID: string): void;
|
|
||||||
generatePlayerScav(sessionID: string): IPmcData;
|
|
||||||
validateNickname(info: IValidateNicknameRequestData, sessionID: string): string;
|
|
||||||
changeNickname(info: IProfileChangeNicknameRequestData, sessionID: string): string;
|
|
||||||
changeVoice(info: IProfileChangeVoiceRequestData, sessionID: string): void;
|
|
||||||
getFriends(info: ISearchFriendRequestData, sessionID: string): ISearchFriendResponse[];
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
import { DialogueHelper } from "../helpers/DialogueHelper";
|
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { QuestConditionHelper } from "../helpers/QuestConditionHelper";
|
|
||||||
import { QuestHelper } from "../helpers/QuestHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IQuest } from "../models/eft/common/tables/IQuest";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { IAcceptQuestRequestData } from "../models/eft/quests/IAcceptQuestRequestData";
|
|
||||||
import { ICompleteQuestRequestData } from "../models/eft/quests/ICompleteQuestRequestData";
|
|
||||||
import { IHandoverQuestRequestData } from "../models/eft/quests/IHandoverQuestRequestData";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { PlayerService } from "../services/PlayerService";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class QuestController {
|
|
||||||
private logger;
|
|
||||||
private timeUtil;
|
|
||||||
private itemEventRouter;
|
|
||||||
private databaseServer;
|
|
||||||
private itemHelper;
|
|
||||||
private dialogueHelper;
|
|
||||||
private profileHelper;
|
|
||||||
private questHelper;
|
|
||||||
private questConditionHelper;
|
|
||||||
private playerService;
|
|
||||||
private configServer;
|
|
||||||
private questConfig;
|
|
||||||
constructor(logger: ILogger, timeUtil: TimeUtil, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, configServer: ConfigServer);
|
|
||||||
getClientQuests(sessionID: string): IQuest[];
|
|
||||||
acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
acceptRepeatableQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
completeQuest(pmcData: IPmcData, body: ICompleteQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
handoverQuest(pmcData: IPmcData, body: IHandoverQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,69 +0,0 @@
|
|||||||
import { RagfairOfferGenerator } from "../generators/RagfairOfferGenerator";
|
|
||||||
import { HandbookHelper } from "../helpers/HandbookHelper";
|
|
||||||
import { InventoryHelper } from "../helpers/InventoryHelper";
|
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { PaymentHelper } from "../helpers/PaymentHelper";
|
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { RagfairHelper } from "../helpers/RagfairHelper";
|
|
||||||
import { RagfairOfferHelper } from "../helpers/RagfairOfferHelper";
|
|
||||||
import { RagfairSellHelper } from "../helpers/RagfairSellHelper";
|
|
||||||
import { RagfairSortHelper } from "../helpers/RagfairSortHelper";
|
|
||||||
import { RagfairTaxHelper } from "../helpers/RagfairTaxHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { IAkiProfile } from "../models/eft/profile/IAkiProfile";
|
|
||||||
import { IAddOfferRequestData, Requirement } from "../models/eft/ragfair/IAddOfferRequestData";
|
|
||||||
import { IExtendOfferRequestData } from "../models/eft/ragfair/IExtendOfferRequestData";
|
|
||||||
import { IGetItemPriceResult } from "../models/eft/ragfair/IGetItemPriceResult";
|
|
||||||
import { IGetMarketPriceRequestData } from "../models/eft/ragfair/IGetMarketPriceRequestData";
|
|
||||||
import { IGetOffersResult } from "../models/eft/ragfair/IGetOffersResult";
|
|
||||||
import { IRagfairOffer } from "../models/eft/ragfair/IRagfairOffer";
|
|
||||||
import { ISearchRequestData } from "../models/eft/ragfair/ISearchRequestData";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { RagfairServer } from "../servers/RagfairServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { PaymentService } from "../services/PaymentService";
|
|
||||||
import { RagfairOfferService } from "../services/RagfairOfferService";
|
|
||||||
import { RagfairPriceService } from "../services/RagfairPriceService";
|
|
||||||
import { RagfairRequiredItemsService } from "../services/RagfairRequiredItemsService";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class RagfairController {
|
|
||||||
private logger;
|
|
||||||
private timeUtil;
|
|
||||||
private httpResponse;
|
|
||||||
private itemEventRouter;
|
|
||||||
private ragfairServer;
|
|
||||||
private ragfairPriceService;
|
|
||||||
private databaseServer;
|
|
||||||
private itemHelper;
|
|
||||||
private saveServer;
|
|
||||||
private ragfairSellHelper;
|
|
||||||
private ragfairTaxHelper;
|
|
||||||
private ragfairSortHelper;
|
|
||||||
private ragfairOfferHelper;
|
|
||||||
private profileHelper;
|
|
||||||
private paymentService;
|
|
||||||
private handbookHelper;
|
|
||||||
private paymentHelper;
|
|
||||||
private inventoryHelper;
|
|
||||||
private ragfairHelper;
|
|
||||||
private ragfairOfferService;
|
|
||||||
private ragfairRequiredItemsService;
|
|
||||||
private ragfairOfferGenerator;
|
|
||||||
private configServer;
|
|
||||||
private ragfairConfig;
|
|
||||||
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponse: HttpResponseUtil, itemEventRouter: ItemEventRouter, ragfairServer: RagfairServer, ragfairPriceService: RagfairPriceService, databaseServer: DatabaseServer, itemHelper: ItemHelper, saveServer: SaveServer, ragfairSellHelper: RagfairSellHelper, ragfairTaxHelper: RagfairTaxHelper, ragfairSortHelper: RagfairSortHelper, ragfairOfferHelper: RagfairOfferHelper, profileHelper: ProfileHelper, paymentService: PaymentService, handbookHelper: HandbookHelper, paymentHelper: PaymentHelper, inventoryHelper: InventoryHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, ragfairRequiredItemsService: RagfairRequiredItemsService, ragfairOfferGenerator: RagfairOfferGenerator, configServer: ConfigServer);
|
|
||||||
getOffers(sessionID: string, info: ISearchRequestData): IGetOffersResult;
|
|
||||||
update(): void;
|
|
||||||
getItemPrice(info: IGetMarketPriceRequestData): IGetItemPriceResult;
|
|
||||||
addPlayerOffer(pmcData: IPmcData, info: IAddOfferRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
createPlayerOffer(profile: IAkiProfile, requirements: Requirement[], items: Item[], sellInOnePiece: boolean, amountToSend: number): IRagfairOffer;
|
|
||||||
getAllFleaPrices(): Record<string, number>;
|
|
||||||
removeOffer(offerId: string, sessionID: string): IItemEventRouterResponse;
|
|
||||||
extendOffer(info: IExtendOfferRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,40 +0,0 @@
|
|||||||
import { QuestHelper } from "../helpers/QuestHelper";
|
|
||||||
import { RepairHelper } from "../helpers/RepairHelper";
|
|
||||||
import { TraderHelper } from "../helpers/TraderHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { IRepairActionDataRequest } from "../models/eft/repair/IRepairActionDataRequest";
|
|
||||||
import { ITraderRepairActionDataRequest } from "../models/eft/repair/ITraderRepairActionDataRequest";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { PaymentService } from "../services/PaymentService";
|
|
||||||
export declare class RepairController {
|
|
||||||
private logger;
|
|
||||||
private itemEventRouter;
|
|
||||||
private databaseServer;
|
|
||||||
private questHelper;
|
|
||||||
private traderHelper;
|
|
||||||
private paymentService;
|
|
||||||
private repairHelper;
|
|
||||||
private configServer;
|
|
||||||
private repairConfig;
|
|
||||||
constructor(logger: ILogger, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, questHelper: QuestHelper, traderHelper: TraderHelper, paymentService: PaymentService, repairHelper: RepairHelper, configServer: ConfigServer);
|
|
||||||
/**
|
|
||||||
* Repair with trader
|
|
||||||
* @param pmcData player profile
|
|
||||||
* @param body endpoint request data
|
|
||||||
* @param sessionID session id
|
|
||||||
* @returns item event router action
|
|
||||||
*/
|
|
||||||
traderRepair(pmcData: IPmcData, body: ITraderRepairActionDataRequest, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* Repair with repair kit
|
|
||||||
* @param pmcData player profile
|
|
||||||
* @param body endpoint request data
|
|
||||||
* @param sessionID session id
|
|
||||||
* @returns item event router action
|
|
||||||
*/
|
|
||||||
repair(pmcData: IPmcData, body: IRepairActionDataRequest, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,217 +0,0 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { PresetHelper } from "../helpers/PresetHelper";
|
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { RagfairServerHelper } from "../helpers/RagfairServerHelper";
|
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
|
||||||
import { Exit } from "../models/eft/common/ILocationBase";
|
|
||||||
import { IPmcData, TraderInfo } from "../models/eft/common/IPmcData";
|
|
||||||
import { ICompletion, ICompletionAvailableFor, IElimination, IEliminationCondition, IExploration, IExplorationCondition, IPmcDataRepeatableQuest, IRepeatableQuest, IReward, IRewards } from "../models/eft/common/tables/IRepeatableQuests";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
|
||||||
import { ELocationName } from "../models/enums/ELocationName";
|
|
||||||
import { IRepeatableQuestConfig } from "../models/spt/config/IQuestConfig";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { PaymentService } from "../services/PaymentService";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
import { MathUtil } from "../utils/MathUtil";
|
|
||||||
import { ObjectId } from "../utils/ObjectId";
|
|
||||||
import { ProbabilityObject, ProbabilityObjectArray, RandomUtil } from "../utils/RandomUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export interface IQuestTypePool {
|
|
||||||
types: string[];
|
|
||||||
pool: IQuestPool;
|
|
||||||
}
|
|
||||||
export interface IQuestPool {
|
|
||||||
Exploration: IExplorationPool;
|
|
||||||
Elimination: IEliminationPool;
|
|
||||||
}
|
|
||||||
export interface IExplorationPool {
|
|
||||||
locations: Partial<Record<ELocationName, string[]>>;
|
|
||||||
}
|
|
||||||
export interface IEliminationPool {
|
|
||||||
targets: IEliminationTargetPool;
|
|
||||||
}
|
|
||||||
export interface IEliminationTargetPool {
|
|
||||||
Savage?: ITargetLocation;
|
|
||||||
AnyPmc?: ITargetLocation;
|
|
||||||
bossBully?: ITargetLocation;
|
|
||||||
bossGluhar?: ITargetLocation;
|
|
||||||
bossKilla?: ITargetLocation;
|
|
||||||
bossSanitar?: ITargetLocation;
|
|
||||||
bossTagilla?: ITargetLocation;
|
|
||||||
bossKojaniy?: ITargetLocation;
|
|
||||||
}
|
|
||||||
export interface ITargetLocation {
|
|
||||||
locations: string[];
|
|
||||||
}
|
|
||||||
export declare class RepeatableQuestController {
|
|
||||||
private timeUtil;
|
|
||||||
private logger;
|
|
||||||
private randomUtil;
|
|
||||||
private mathUtil;
|
|
||||||
private jsonUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private itemHelper;
|
|
||||||
private presetHelper;
|
|
||||||
private profileHelper;
|
|
||||||
private ragfairServerHelper;
|
|
||||||
private itemEventRouter;
|
|
||||||
private paymentService;
|
|
||||||
private objectId;
|
|
||||||
private configServer;
|
|
||||||
private questConfig;
|
|
||||||
constructor(timeUtil: TimeUtil, logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, ragfairServerHelper: RagfairServerHelper, itemEventRouter: ItemEventRouter, paymentService: PaymentService, objectId: ObjectId, configServer: ConfigServer);
|
|
||||||
/**
|
|
||||||
* This is the method reached by the /client/repeatalbeQuests/activityPeriods endpoint
|
|
||||||
* Returns an array of objects in the format of repeatable quests to the client.
|
|
||||||
* repeatableQuestObject = {
|
|
||||||
* id: Unique Id,
|
|
||||||
* name: "Daily",
|
|
||||||
* endTime: the time when the quests expire
|
|
||||||
* activeQuests: currently available quests in an array. Each element of quest type format (see assets/database/templates/repeatableQuests.json).
|
|
||||||
* inactiveQuests: the quests which were previously active (required by client to fail them if they are not completed)
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* The method checks if the player level requirement for repeatable quests (e.g. daily lvl5, weekly lvl15) is met and if the previously active quests
|
|
||||||
* are still valid. This ischecked by endTime persisted in profile accordning to the resetTime configured for each repeatable kind (daily, weekly)
|
|
||||||
* in QuestCondig.js
|
|
||||||
*
|
|
||||||
* If the condition is met, new repeatableQuests are created, old quests (which are persisted in the profile.RepeatableQuests[i].activeQuests) are
|
|
||||||
* moved to profile.RepeatableQuests[i].inactiveQuests. This memory is required to get rid of old repeatable quest data in the profile, otherwise
|
|
||||||
* they'll litter the profile's Quests field.
|
|
||||||
* (if the are on "Succeed" but not "Completed" we keep them, to allow the player to complete them and get the rewards)
|
|
||||||
* The new quests generated are again persisted in profile.RepeatableQuests
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param {string} sessionId Player's session id
|
|
||||||
* @returns {array} array of "repeatableQuestObjects" as descibed above
|
|
||||||
*/
|
|
||||||
getClientRepeatableQuests(_info: IEmptyRequestData, sessionID: string): IPmcDataRepeatableQuest[];
|
|
||||||
/**
|
|
||||||
* This method is called by GetClientRepeatableQuests and creates one element of quest type format (see assets/database/templates/repeatableQuests.json).
|
|
||||||
* It randomly draws a quest type (currently Elimination, Completion or Exploration) as well as a trader who is providing the quest
|
|
||||||
*/
|
|
||||||
generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record<string, TraderInfo>, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
|
|
||||||
/**
|
|
||||||
* Just for debug reasons. Draws dailies a random assort of dailies extracted from dumps
|
|
||||||
*/
|
|
||||||
generateDebugDailies(dailiesPool: any, factory: any, number: any): any;
|
|
||||||
/**
|
|
||||||
* Generates the base object of quest type format given as templates in assets/database/templates/repeatableQuests.json
|
|
||||||
* The templates include Elimination, Completion and Extraction quest types
|
|
||||||
*
|
|
||||||
* @param {string} type quest type: "Elimination", "Completion" or "Extraction"
|
|
||||||
* @param {string} traderId trader from which the quest will be provided
|
|
||||||
* @returns {object} a object which contains the base elements for repeatable quests of the requests type
|
|
||||||
* (needs to be filled with reward and conditions by called to make a valid quest)
|
|
||||||
*/
|
|
||||||
generateRepeatableTemplate(type: string, traderId: string): IRepeatableQuest;
|
|
||||||
/**
|
|
||||||
* Generates a valid Exploration quest
|
|
||||||
*
|
|
||||||
* @param {integer} pmcLevel player's level for reward generation
|
|
||||||
* @param {string} traderId trader from which the quest will be provided
|
|
||||||
* @param {object} questTypePool Pools for quests (used to avoid redundant quests)
|
|
||||||
* @param {object} repeatableConfig The configuration for the repeatably kind (daily, weekly) as configured in QuestConfig for the requestd quest
|
|
||||||
* @returns {object} object of quest type format for "Exploration" (see assets/database/templates/repeatableQuests.json)
|
|
||||||
*/
|
|
||||||
generateExplorationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IExploration;
|
|
||||||
/**
|
|
||||||
* Generates a valid Completion quest
|
|
||||||
*
|
|
||||||
* @param {integer} pmcLevel player's level for requested items and reward generation
|
|
||||||
* @param {string} traderId trader from which the quest will be provided
|
|
||||||
* @param {object} repeatableConfig The configuration for the repeatably kind (daily, weekly) as configured in QuestConfig for the requestd quest
|
|
||||||
* @returns {object} object of quest type format for "Completion" (see assets/database/templates/repeatableQuests.json)
|
|
||||||
*/
|
|
||||||
generateCompletionQuest(pmcLevel: number, traderId: string, repeatableConfig: IRepeatableQuestConfig): ICompletion;
|
|
||||||
/**
|
|
||||||
* Generates a valid Elimination quest
|
|
||||||
*
|
|
||||||
* @param {integer} pmcLevel player's level for requested items and reward generation
|
|
||||||
* @param {string} traderId trader from which the quest will be provided
|
|
||||||
* @param {object} questTypePool Pools for quests (used to avoid redundant quests)
|
|
||||||
* @param {object} repeatableConfig The configuration for the repeatably kind (daily, weekly) as configured in QuestConfig for the requestd quest
|
|
||||||
* @returns {object} object of quest type format for "Elimination" (see assets/database/templates/repeatableQuests.json)
|
|
||||||
*/
|
|
||||||
generateEliminationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IElimination;
|
|
||||||
/**
|
|
||||||
* Exploration repeatable quests can specify a required extraction point.
|
|
||||||
* This method creates the according object which will be appended to the conditions array
|
|
||||||
*
|
|
||||||
* @param {string} exit The exit name to generate the condition for
|
|
||||||
* @returns {object} Exit condition
|
|
||||||
*/
|
|
||||||
generateExplorationExitCondition(exit: Exit): IExplorationCondition;
|
|
||||||
/**
|
|
||||||
* A repeatable quest, besides some more or less static components, exists of reward and condition (see assets/database/templates/repeatableQuests.json)
|
|
||||||
* This is a helper method for GenerateCompletionQuest to create a completion condition (of which a completion quest theoretically can have many)
|
|
||||||
*
|
|
||||||
* @param {string} targetItemId id of the item to request
|
|
||||||
* @param {integer} value amount of items of this specific type to request
|
|
||||||
* @returns {object} object of "Completion"-condition
|
|
||||||
*/
|
|
||||||
generateCompletionAvailableForFinish(targetItemId: string, value: number): ICompletionAvailableFor;
|
|
||||||
/**
|
|
||||||
* A repeatable quest, besides some more or less static components, exists of reward and condition (see assets/database/templates/repeatableQuests.json)
|
|
||||||
* This is a helper method for GenerateEliminationQuest to create a location condition.
|
|
||||||
*
|
|
||||||
* @param {string} location the location on which to fulfill the elimination quest
|
|
||||||
* @returns {object} object of "Elimination"-location-subcondition
|
|
||||||
*/
|
|
||||||
generateEliminationLocation(location: string[]): IEliminationCondition;
|
|
||||||
/**
|
|
||||||
* A repeatable quest, besides some more or less static components, exists of reward and condition (see assets/database/templates/repeatableQuests.json)
|
|
||||||
* This is a helper method for GenerateEliminationQuest to create a kill condition.
|
|
||||||
*
|
|
||||||
* @param {string} target array of target npcs e.g. "AnyPmc", "Savage"
|
|
||||||
* @param {array} bodyParts array of body parts with which to kill e.g. ["stomach", "thorax"]
|
|
||||||
* @param {number} distance distance from which to kill (currently only >= supported)
|
|
||||||
* @returns {object} object of "Elimination"-kill-subcondition
|
|
||||||
*/
|
|
||||||
generateEliminationCondition(target: string, bodyPart: string[], distance: number): IEliminationCondition;
|
|
||||||
/**
|
|
||||||
* Used to create a quest pool during each cycle of repeatable quest generation. The pool will be subsequently
|
|
||||||
* narrowed down during quest generation to avoid duplicate quests. Like duplicate extractions or elimination quests
|
|
||||||
* where you have to e.g. kill scavs in same locations.
|
|
||||||
*
|
|
||||||
* @returns {object} the quest pool
|
|
||||||
*/
|
|
||||||
generateQuestPool(repeatableConfig: IRepeatableQuestConfig): IQuestTypePool;
|
|
||||||
/**
|
|
||||||
* Generate the reward for a mission. A reward can consist of
|
|
||||||
* - Experience
|
|
||||||
* - Money
|
|
||||||
* - Items
|
|
||||||
* - Trader Reputation
|
|
||||||
*
|
|
||||||
* The reward is dependent on the player level as given by the wiki. The exact mapping of pmcLevel to
|
|
||||||
* experience / money / items / trader reputation can be defined in QuestConfig.js
|
|
||||||
*
|
|
||||||
* There's also a random variation of the reward the spread of which can be also defined in the config.
|
|
||||||
*
|
|
||||||
* Additonaly, a scaling factor w.r.t. quest difficulty going from 0.2...1 can be used
|
|
||||||
*
|
|
||||||
* @param {integer} pmcLevel player's level
|
|
||||||
* @param {number} difficulty a reward scaling factor goint from 0.2 to 1
|
|
||||||
* @param {string} traderId the trader for reputation gain (and possible in the future filtering of reward item type based on trader)
|
|
||||||
* @param {object} repeatableConfig The configuration for the repeatably kind (daily, weekly) as configured in QuestConfig for the requestd quest
|
|
||||||
* @returns {object} object of "Reward"-type that can be given for a repeatable mission
|
|
||||||
*/
|
|
||||||
generateReward(pmcLevel: number, difficulty: number, traderId: string, repeatableConfig: IRepeatableQuestConfig): IRewards;
|
|
||||||
/**
|
|
||||||
* Helper to create a reward item structured as required by the client
|
|
||||||
*
|
|
||||||
* @param {string} tpl itemId of the rewarded item
|
|
||||||
* @param {integer} value amount of items to give
|
|
||||||
* @param {integer} index all rewards will be appended to a list, for unkown reasons the client wants the index
|
|
||||||
* @returns {object} object of "Reward"-item-type
|
|
||||||
*/
|
|
||||||
generateRewardItem(tpl: string, value: number, index: number, preset?: any): IReward;
|
|
||||||
debugLogRepeatableQuestIds(pmcData: IPmcData): void;
|
|
||||||
probabilityObjectArray<K, V>(configArrayInput: ProbabilityObject<K, V>[]): ProbabilityObjectArray<K, V>;
|
|
||||||
changeRepeatableQuest(pmcDataIn: IPmcData, body: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
import { RagfairServer } from "../servers/RagfairServer";
|
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { TradeHelper } from "../helpers/TradeHelper";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IProcessRagfairTradeRequestData } from "../models/eft/trade/IProcessRagfairTradeRequestData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { Upd } from "../models/eft/common/tables/IItem";
|
|
||||||
import { IProcessBaseTradeRequestData } from "../models/eft/trade/IProcessBaseTradeRequestData";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
declare class TradeController {
|
|
||||||
private logger;
|
|
||||||
private itemEventRouter;
|
|
||||||
private tradeHelper;
|
|
||||||
private profileHelper;
|
|
||||||
private ragfairServer;
|
|
||||||
constructor(logger: ILogger, itemEventRouter: ItemEventRouter, tradeHelper: TradeHelper, profileHelper: ProfileHelper, ragfairServer: RagfairServer);
|
|
||||||
confirmTrading(pmcData: IPmcData, body: IProcessBaseTradeRequestData, sessionID: string, foundInRaid?: boolean, upd?: Upd): IItemEventRouterResponse;
|
|
||||||
confirmRagfairTrading(pmcData: IPmcData, body: IProcessRagfairTradeRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
||||||
export { TradeController };
|
|
@ -1,26 +0,0 @@
|
|||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
|
||||||
import { TraderAssortHelper } from "../helpers/TraderAssortHelper";
|
|
||||||
import { TraderHelper } from "../helpers/TraderHelper";
|
|
||||||
import { IBarterScheme, ITraderAssort, ITraderBase } from "../models/eft/common/tables/ITrader";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { TraderAssortService } from "../services/TraderAssortService";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class TraderController {
|
|
||||||
private logger;
|
|
||||||
private databaseServer;
|
|
||||||
private traderAssortHelper;
|
|
||||||
private profileHelper;
|
|
||||||
private traderHelper;
|
|
||||||
private timeUtil;
|
|
||||||
private traderAssortService;
|
|
||||||
private jsonUtil;
|
|
||||||
constructor(logger: ILogger, databaseServer: DatabaseServer, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, timeUtil: TimeUtil, traderAssortService: TraderAssortService, jsonUtil: JsonUtil);
|
|
||||||
load(): void;
|
|
||||||
getTrader(traderID: string, sessionID: string): ITraderBase;
|
|
||||||
getAllTraders(sessionID: string): ITraderBase[];
|
|
||||||
updateTraders(): boolean;
|
|
||||||
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
|
||||||
getPurchasesData(traderID: string, sessionID: string): Record<string, IBarterScheme[][]>;
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
import { WeatherGenerator } from "../generators/WeatherGenerator";
|
|
||||||
import { IWeatherData } from "../models/eft/weather/IWeatherData";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
export declare class WeatherController {
|
|
||||||
private weatherGenerator;
|
|
||||||
private configServer;
|
|
||||||
private weatherConfig;
|
|
||||||
constructor(weatherGenerator: WeatherGenerator, configServer: ConfigServer);
|
|
||||||
generate(): IWeatherData;
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { IWishlistActionData } from "../models/eft/wishlist/IWishlistActionData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
export declare class WishlistController {
|
|
||||||
private itemEvenRouter;
|
|
||||||
constructor(itemEvenRouter: ItemEventRouter);
|
|
||||||
addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
import { BotHelper } from "../helpers/BotHelper";
|
|
||||||
import { GameEventHelper } from "../helpers/GameEventHelper";
|
|
||||||
import { IGenerateBotsRequestData } from "../models/eft/bot/IGenerateBotsRequestData";
|
|
||||||
import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
|
||||||
export declare class BotGenerator {
|
|
||||||
private logger;
|
|
||||||
private hashUtil;
|
|
||||||
private randomUtil;
|
|
||||||
private jsonUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private botInventoryGenerator;
|
|
||||||
private botHelper;
|
|
||||||
private gameEventHelper;
|
|
||||||
private configServer;
|
|
||||||
private botConfig;
|
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botHelper: BotHelper, gameEventHelper: GameEventHelper, configServer: ConfigServer);
|
|
||||||
generate(info: IGenerateBotsRequestData, playerScav?: boolean): IBotBase[];
|
|
||||||
private generateBot;
|
|
||||||
private generateRandomLevel;
|
|
||||||
/** Converts health object to the required format */
|
|
||||||
private generateHealth;
|
|
||||||
private generateSkills;
|
|
||||||
private getPmcRole;
|
|
||||||
private removeChristmasItemsFromBotInventory;
|
|
||||||
private generateId;
|
|
||||||
private generateInventoryID;
|
|
||||||
private getPMCDifficulty;
|
|
||||||
private generateDogtag;
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
import { Inventory as PmcInventory } from "../models/eft/common/IPmcData";
|
|
||||||
import { Inventory, Chances, Generation } from "../models/eft/common/tables/IBotType";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
|
||||||
import { BotWeaponGenerator } from "./BotWeaponGenerator";
|
|
||||||
import { BotLootGenerator } from "./BotLootGenerator";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
|
||||||
export declare class BotInventoryGenerator {
|
|
||||||
private logger;
|
|
||||||
private hashUtil;
|
|
||||||
private randomUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private botWeaponGenerator;
|
|
||||||
private botLootGenerator;
|
|
||||||
private botGeneratorHelper;
|
|
||||||
private weightedRandomHelper;
|
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, weightedRandomHelper: WeightedRandomHelper);
|
|
||||||
generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory;
|
|
||||||
private generateEquipment;
|
|
||||||
private generateInventoryBase;
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
import { PMCLootGenerator } from "../generators/PMCLootGenerator";
|
|
||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
|
||||||
import { HandbookHelper } from "../helpers/HandbookHelper";
|
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/IPmcData";
|
|
||||||
import { ItemMinMax, Items } from "../models/eft/common/tables/IBotType";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
export declare class BotLootGenerator {
|
|
||||||
private jsonUtil;
|
|
||||||
private hashUtil;
|
|
||||||
private randomUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private handbookHelper;
|
|
||||||
private botGeneratorHelper;
|
|
||||||
private pmcLootGenerator;
|
|
||||||
private configServer;
|
|
||||||
private botConfig;
|
|
||||||
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, botGeneratorHelper: BotGeneratorHelper, pmcLootGenerator: PMCLootGenerator, configServer: ConfigServer);
|
|
||||||
generateLoot(lootPool: Items, itemCounts: ItemMinMax, isPmc: boolean, inventory: PmcInventory): void;
|
|
||||||
private getRandomisedCount;
|
|
||||||
private addLootFromPool;
|
|
||||||
/** Compares two item templates by their price to spawn chance ratio */
|
|
||||||
private compareByValue;
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/IPmcData";
|
|
||||||
import { MinMax, Mods, ModsChances } from "../models/eft/common/tables/IBotType";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
export declare class BotWeaponGenerator {
|
|
||||||
private logger;
|
|
||||||
private hashUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private itemHelper;
|
|
||||||
private weightedRandomHelper;
|
|
||||||
private botGeneratorHelper;
|
|
||||||
private randomUtil;
|
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, botGeneratorHelper: BotGeneratorHelper, randomUtil: RandomUtil);
|
|
||||||
generateWeapon(equipmentSlot: string, weaponPool: Record<string, number>, modPool: Mods, modChances: ModsChances, magCounts: MinMax, botRole: string, isPmc: boolean, inventory: PmcInventory): void;
|
|
||||||
/** Checks if all required slots are occupied on a weapon and all it's mods */
|
|
||||||
private isWeaponValid;
|
|
||||||
/**
|
|
||||||
* Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets.
|
|
||||||
* Additionally, adds extra bullets to SecuredContainer
|
|
||||||
*
|
|
||||||
* @param {*} weaponMods
|
|
||||||
* @param {*} weaponTemplate
|
|
||||||
* @param {*} magCounts
|
|
||||||
* @param {*} ammoTpl
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
private generateExtraMagazines;
|
|
||||||
private addBullets;
|
|
||||||
/**
|
|
||||||
* Finds and returns tpl of ammo that should be used, while making sure it's compatible
|
|
||||||
*
|
|
||||||
* @param {*} weaponMods
|
|
||||||
* @param {*} weaponTemplate
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
private getCompatibleAmmo;
|
|
||||||
/** Fill existing magazines to full, while replacing their contents with specified ammo */
|
|
||||||
private fillExistingMagazines;
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
import { ContainerHelper } from "../helpers/ContainerHelper";
|
|
||||||
import { GameEventHelper } from "../helpers/GameEventHelper";
|
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { PresetHelper } from "../helpers/PresetHelper";
|
|
||||||
import { RagfairServerHelper } from "../helpers/RagfairServerHelper";
|
|
||||||
import { ILooseLoot, SpawnpointTemplate } from "../models/eft/common/ILooseLoot";
|
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
|
||||||
import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "../models/eft/common/tables/ILootBase";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
import { MathUtil } from "../utils/MathUtil";
|
|
||||||
import { ObjectId } from "../utils/ObjectId";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
export interface IContainerItem {
|
|
||||||
items: Item[];
|
|
||||||
width: number;
|
|
||||||
height: number;
|
|
||||||
}
|
|
||||||
export declare class LocationGenerator {
|
|
||||||
private logger;
|
|
||||||
private jsonUtil;
|
|
||||||
private objectId;
|
|
||||||
private randomUtil;
|
|
||||||
private ragfairServerHelper;
|
|
||||||
private itemHelper;
|
|
||||||
private mathUtil;
|
|
||||||
private gameEventHelper;
|
|
||||||
private containerHelper;
|
|
||||||
private presetHelper;
|
|
||||||
private configServer;
|
|
||||||
private locationConfig;
|
|
||||||
constructor(logger: ILogger, jsonUtil: JsonUtil, objectId: ObjectId, randomUtil: RandomUtil, ragfairServerHelper: RagfairServerHelper, itemHelper: ItemHelper, mathUtil: MathUtil, gameEventHelper: GameEventHelper, containerHelper: ContainerHelper, presetHelper: PresetHelper, configServer: ConfigServer);
|
|
||||||
generateContainerLoot(containerIn: IStaticContainerProps, staticForced: IStaticForcedProps[], staticLootDist: Record<string, IStaticLootDetails>, staticAmmoDist: Record<string, IStaticAmmoDetails[]>, locationName: string): IStaticContainerProps;
|
|
||||||
private getLooseLootMultiplerForLocation;
|
|
||||||
private getStaticLootMultiplerForLocation;
|
|
||||||
generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record<string, IStaticAmmoDetails[]>, locationName: string): SpawnpointTemplate[];
|
|
||||||
private createItem;
|
|
||||||
private getRandomCompatibleCaliberTemplateId;
|
|
||||||
private getRandomValidCaliber;
|
|
||||||
private drawAmmoTpl;
|
|
||||||
private createRandomMagCartridges;
|
|
||||||
private createCartidges;
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
export declare class PMCLootGenerator {
|
|
||||||
private itemHelper;
|
|
||||||
private databaseServer;
|
|
||||||
private configServer;
|
|
||||||
private pocketLootPool;
|
|
||||||
private backpackLootPool;
|
|
||||||
private botConfig;
|
|
||||||
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer);
|
|
||||||
generatePMCPocketLootPool(): string[];
|
|
||||||
generatePMCBackpackLootPool(): string[];
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
export declare class RagfairAssortGenerator {
|
|
||||||
private jsonUtil;
|
|
||||||
private hashUtil;
|
|
||||||
private itemHelper;
|
|
||||||
private databaseServer;
|
|
||||||
private generatedAssortItems;
|
|
||||||
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer);
|
|
||||||
/**
|
|
||||||
* Get an array of unique items that can be sold on the flea
|
|
||||||
* @returns array of unique items
|
|
||||||
*/
|
|
||||||
getAssortItems(): Item[];
|
|
||||||
private assortsAreGenerated;
|
|
||||||
/**
|
|
||||||
* Generate an array of items the flea can sell
|
|
||||||
* @returns array of unique items
|
|
||||||
*/
|
|
||||||
private generateRagfairAssortItems;
|
|
||||||
private createRagfairAssortItem;
|
|
||||||
}
|
|
@ -1,55 +0,0 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
|
||||||
import { PresetHelper } from "../helpers/PresetHelper";
|
|
||||||
import { RagfairServerHelper } from "../helpers/RagfairServerHelper";
|
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
|
||||||
import { IBarterScheme } from "../models/eft/common/tables/ITrader";
|
|
||||||
import { IRagfairOffer } from "../models/eft/ragfair/IRagfairOffer";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { FenceService } from "../services/FenceService";
|
|
||||||
import { RagfairOfferService } from "../services/RagfairOfferService";
|
|
||||||
import { RagfairPriceService } from "../services/RagfairPriceService";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
import { RagfairAssortGenerator } from "./RagfairAssortGenerator";
|
|
||||||
export declare class RagfairOfferGenerator {
|
|
||||||
private logger;
|
|
||||||
private jsonUtil;
|
|
||||||
private hashUtil;
|
|
||||||
private randomUtil;
|
|
||||||
private timeUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private ragfairServerHelper;
|
|
||||||
private saveServer;
|
|
||||||
private presetHelper;
|
|
||||||
private ragfairAssortGenerator;
|
|
||||||
private ragfairOfferService;
|
|
||||||
private ragfairPriceService;
|
|
||||||
private fenceService;
|
|
||||||
private itemHelper;
|
|
||||||
private configServer;
|
|
||||||
private ragfairConfig;
|
|
||||||
constructor(logger: ILogger, jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, ragfairServerHelper: RagfairServerHelper, saveServer: SaveServer, presetHelper: PresetHelper, ragfairAssortGenerator: RagfairAssortGenerator, ragfairOfferService: RagfairOfferService, ragfairPriceService: RagfairPriceService, fenceService: FenceService, itemHelper: ItemHelper, configServer: ConfigServer);
|
|
||||||
createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece?: boolean): IRagfairOffer;
|
|
||||||
private getTraderId;
|
|
||||||
private getRating;
|
|
||||||
private getRatingGrowing;
|
|
||||||
private getOfferEndTime;
|
|
||||||
/**
|
|
||||||
* Create multiple offers for items by using a unique list of items we've generated previously
|
|
||||||
* @param expiredOffers
|
|
||||||
*/
|
|
||||||
generateDynamicOffers(expiredOffers?: Item[]): void;
|
|
||||||
generateTraderOffers(traderID: string): void;
|
|
||||||
private getItemCondition;
|
|
||||||
private addMissingCondition;
|
|
||||||
private getOfferRequirements;
|
|
||||||
/**
|
|
||||||
* Create a flea offer and store it in the Ragfair server offers array
|
|
||||||
*/
|
|
||||||
createFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece?: boolean): IRagfairOffer;
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { IWeatherData } from "../models/eft/weather/IWeatherData";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class WeatherGenerator {
|
|
||||||
private weightedRandomHelper;
|
|
||||||
private randomUtil;
|
|
||||||
private timeUtil;
|
|
||||||
private configServer;
|
|
||||||
private weatherConfig;
|
|
||||||
constructor(weightedRandomHelper: WeightedRandomHelper, randomUtil: RandomUtil, timeUtil: TimeUtil, configServer: ConfigServer);
|
|
||||||
calculateTime(data: IWeatherData): IWeatherData;
|
|
||||||
generateWeather(data: IWeatherData): IWeatherData;
|
|
||||||
private getWeightedFog;
|
|
||||||
private getWeightedRain;
|
|
||||||
private getRandomFloat;
|
|
||||||
private getRandomInt;
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { ItemHelper } from "./ItemHelper";
|
|
||||||
import { QuestHelper } from "./QuestHelper";
|
|
||||||
export declare class AssortHelper {
|
|
||||||
private logger;
|
|
||||||
private itemHelper;
|
|
||||||
private databaseServer;
|
|
||||||
private questHelper;
|
|
||||||
constructor(logger: ILogger, itemHelper: ItemHelper, databaseServer: DatabaseServer, questHelper: QuestHelper);
|
|
||||||
removeItemFromAssort(assort: ITraderAssort, itemID: string): ITraderAssort;
|
|
||||||
stripQuestAssort(pmcProfile: IPmcData, sessionId: string, traderId: string, assort: ITraderAssort): ITraderAssort;
|
|
||||||
stripLoyaltyAssort(pmcProfile: IPmcData, sessionId: string, traderId: string, assort: ITraderAssort): ITraderAssort;
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
|
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/IPmcData";
|
|
||||||
import { Mods, ModsChances } from "../models/eft/common/tables/IBotType";
|
|
||||||
import { Item, Upd } from "../models/eft/common/tables/IItem";
|
|
||||||
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
import { ContainerHelper } from "./ContainerHelper";
|
|
||||||
import { InventoryHelper } from "./InventoryHelper";
|
|
||||||
import { ItemHelper } from "./ItemHelper";
|
|
||||||
export declare class BotGeneratorHelper {
|
|
||||||
private logger;
|
|
||||||
private jsonUtil;
|
|
||||||
private hashUtil;
|
|
||||||
private randomUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private durabilityLimitsHelper;
|
|
||||||
private itemHelper;
|
|
||||||
private inventoryHelper;
|
|
||||||
private containerHelper;
|
|
||||||
private configServer;
|
|
||||||
private botConfig;
|
|
||||||
constructor(logger: ILogger, jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, containerHelper: ContainerHelper, configServer: ConfigServer);
|
|
||||||
generateModsForItem(items: Item[], modPool: Mods, parentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances, isPmc?: boolean): Item[];
|
|
||||||
/**
|
|
||||||
* With the shotgun revolver (60db29ce99594040e04c4a27) 12.12 introduced CylinderMagazines.
|
|
||||||
* Those magazines (e.g. 60dc519adf4c47305f6d410d) have a "Cartridges" entry with a _max_count=0.
|
|
||||||
* Ammo is not put into the magazine directly but assigned to the magazine's slots: The "camora_xxx" slots.
|
|
||||||
* This function is a helper called by generateModsForItem for mods with parent type "CylinderMagazine"
|
|
||||||
*
|
|
||||||
* @param {object} items The items where the CylinderMagazine's camora are appended to
|
|
||||||
* @param {object} modPool modPool which should include available cartrigdes
|
|
||||||
* @param {string} parentId The CylinderMagazine's UID
|
|
||||||
* @param {object} parentTemplate The CylinderMagazine's template
|
|
||||||
*/
|
|
||||||
private fillCamora;
|
|
||||||
generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: any): {
|
|
||||||
"upd"?: Upd;
|
|
||||||
};
|
|
||||||
private getModTplFromItemDb;
|
|
||||||
isItemIncompatibleWithCurrentItems(items: Item[], tplToCheck: string, equipmentSlot: string): boolean;
|
|
||||||
/** Adds an item with all its childern into specified equipmentSlots, wherever it fits.
|
|
||||||
* Returns a `boolean` indicating success. */
|
|
||||||
addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], parentId: string, parentTpl: string, itemWithChildren: Item[], inventory: PmcInventory): boolean;
|
|
||||||
private itemAllowedInContainer;
|
|
||||||
}
|
|
||||||
export declare class ExhaustableArray<T> {
|
|
||||||
private itemPool;
|
|
||||||
private randomUtil;
|
|
||||||
private jsonUtil;
|
|
||||||
private pool;
|
|
||||||
constructor(itemPool: T[], randomUtil: RandomUtil, jsonUtil: JsonUtil);
|
|
||||||
getRandomValue(): T;
|
|
||||||
getFirstValue(): T;
|
|
||||||
hasValues(): boolean;
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
import { Difficulty } from "../models/eft/common/tables/IBotType";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
export declare class BotHelper {
|
|
||||||
private logger;
|
|
||||||
private jsonUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private randomUtil;
|
|
||||||
private configServer;
|
|
||||||
private botConfig;
|
|
||||||
constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, configServer: ConfigServer);
|
|
||||||
getBotDifficultySettings(type: string, difficulty: string): Difficulty;
|
|
||||||
getPmcDifficultySettings(type: string, difficulty: string): Difficulty;
|
|
||||||
randomisePmcHostility(difficultySettings: Difficulty): void;
|
|
||||||
isBotPmc(botRole: string): boolean;
|
|
||||||
isBotBoss(botRole: string): boolean;
|
|
||||||
isBotFollower(botRole: string): boolean;
|
|
||||||
addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void;
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
export declare class FindSlotResult {
|
|
||||||
success: boolean;
|
|
||||||
x: any;
|
|
||||||
y: any;
|
|
||||||
rotation: boolean;
|
|
||||||
constructor(success?: boolean, x?: any, y?: any, rotation?: boolean);
|
|
||||||
}
|
|
||||||
export declare class ContainerHelper {
|
|
||||||
private locateSlot;
|
|
||||||
findSlotForItem(container2D: number[][], itemWidth: number, itemHeight: number): FindSlotResult;
|
|
||||||
fillContainerMapWithItem(container2D: number[][], x: number, y: number, itemW: number, itemH: number, rotate: boolean): any;
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
import { Dialogue, MessageContent, MessagePreview } from "../models/eft/profile/IAkiProfile";
|
|
||||||
import { MessageType } from "../models/enums/MessageType";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { ItemHelper } from "./ItemHelper";
|
|
||||||
import { NotificationSendHelper } from "./NotificationSendHelper";
|
|
||||||
import { NotifierHelper } from "./NotifierHelper";
|
|
||||||
export declare class DialogueHelper {
|
|
||||||
private hashUtil;
|
|
||||||
private saveServer;
|
|
||||||
private databaseServer;
|
|
||||||
private notifierHelper;
|
|
||||||
private notificationSendHelper;
|
|
||||||
private itemHelper;
|
|
||||||
constructor(hashUtil: HashUtil, saveServer: SaveServer, databaseServer: DatabaseServer, notifierHelper: NotifierHelper, notificationSendHelper: NotificationSendHelper, itemHelper: ItemHelper);
|
|
||||||
createMessageContext(templateId: string, messageType: MessageType, maxStoreTime: number): MessageContent;
|
|
||||||
addDialogueMessage(dialogueID: string, messageContent: MessageContent, sessionID: string, rewards?: any[]): void;
|
|
||||||
getMessagePreview(dialogue: Dialogue): MessagePreview;
|
|
||||||
getMessageItemContents(messageID: string, sessionID: string): any[];
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
import { BotHelper } from "./BotHelper";
|
|
||||||
export declare class DurabilityLimitsHelper {
|
|
||||||
private randomUtil;
|
|
||||||
private botHelper;
|
|
||||||
private configServer;
|
|
||||||
private botConfig;
|
|
||||||
constructor(randomUtil: RandomUtil, botHelper: BotHelper, configServer: ConfigServer);
|
|
||||||
getRandomisedMaxWeaponDurability(itemTemplate: ITemplateItem, botRole: string): number;
|
|
||||||
getRandomisedMaxArmorDurability(itemTemplate: ITemplateItem, botRole: string): number;
|
|
||||||
getRandomisedWeaponDurability(itemTemplate: ITemplateItem, botRole: string, maxDurability: number): number;
|
|
||||||
getRandomisedArmorDurability(itemTemplate: ITemplateItem, botRole: string, maxDurability: number): number;
|
|
||||||
private generateMaxWeaponDurability;
|
|
||||||
private generateMaxPmcArmorDurability;
|
|
||||||
private getLowestMaxWeaponFromConfig;
|
|
||||||
private getHighestMaxWeaponDurabilityFromConfig;
|
|
||||||
private generateWeaponDurability;
|
|
||||||
private generateArmorDurability;
|
|
||||||
private getMinWeaponDeltaFromConfig;
|
|
||||||
private getMaxWeaponDeltaFromConfig;
|
|
||||||
private getMinArmorDeltaFromConfig;
|
|
||||||
private getMaxArmorDeltaFromConfig;
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
import { BotGenerator } from "../generators/BotGenerator";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { FenceService } from "../services/FenceService";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
import { Watermark } from "../utils/Watermark";
|
|
||||||
import { ItemHelper } from "./ItemHelper";
|
|
||||||
import { ProfileHelper } from "./ProfileHelper";
|
|
||||||
export declare class ExtendedProfileHelper extends ProfileHelper {
|
|
||||||
private botGenerator;
|
|
||||||
constructor(jsonUtil: JsonUtil, watermark: Watermark, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, fenceService: FenceService, botGenerator: BotGenerator);
|
|
||||||
generatePlayerScav(sessionID: string): IPmcData;
|
|
||||||
private getScavSkills;
|
|
||||||
private removeSecureContainer;
|
|
||||||
private getDefaultScavSkills;
|
|
||||||
private getScavStats;
|
|
||||||
private getScavLevel;
|
|
||||||
private getScavExperience;
|
|
||||||
private setScavCooldownTimer;
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
export declare class GameEventHelper {
|
|
||||||
private databaseServer;
|
|
||||||
constructor(databaseServer: DatabaseServer);
|
|
||||||
get EVENT(): Record<string, string>;
|
|
||||||
get christmasEventItems(): string[];
|
|
||||||
itemIsChristmasRelated(itemId: string): boolean;
|
|
||||||
christmasEventEnabled(): boolean;
|
|
||||||
}
|
|
@ -1,33 +0,0 @@
|
|||||||
declare class LookupItem {
|
|
||||||
byId: Record<number, string>;
|
|
||||||
byParent: Record<string, string[]>;
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
export declare class LookupCollection {
|
|
||||||
items: LookupItem;
|
|
||||||
categories: LookupItem;
|
|
||||||
constructor();
|
|
||||||
}
|
|
||||||
export declare class HandbookHelper {
|
|
||||||
private lookup;
|
|
||||||
hydrateLookup(lookup: LookupCollection): void;
|
|
||||||
getTemplatePrice(x: string): number;
|
|
||||||
templatesWithParent(x: string): string[];
|
|
||||||
isCategory(x: string): boolean;
|
|
||||||
childrenCategories(x: string): string[];
|
|
||||||
/**
|
|
||||||
* Gets Currency to Ruble conversion Value
|
|
||||||
* @param {number} value
|
|
||||||
* @param {string} currencyFrom
|
|
||||||
* @returns number
|
|
||||||
*/
|
|
||||||
inRUB(value: number, currencyFrom: string): number;
|
|
||||||
/**
|
|
||||||
* Gets Ruble to Currency conversion Value
|
|
||||||
* @param {number} value
|
|
||||||
* @param {string} currencyTo
|
|
||||||
* @returns number
|
|
||||||
*/
|
|
||||||
fromRUB(value: number, currencyTo: string): number;
|
|
||||||
}
|
|
||||||
export {};
|
|
@ -1,23 +0,0 @@
|
|||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
||||||
import { ISyncHealthRequestData } from "../models/eft/health/ISyncHealthRequestData";
|
|
||||||
import { IAkiProfile } from "../models/eft/profile/IAkiProfile";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class HealthHelper {
|
|
||||||
private jsonUtil;
|
|
||||||
private logger;
|
|
||||||
private timeUtil;
|
|
||||||
private saveServer;
|
|
||||||
private configServer;
|
|
||||||
private healthConfig;
|
|
||||||
constructor(jsonUtil: JsonUtil, logger: ILogger, timeUtil: TimeUtil, saveServer: SaveServer, configServer: ConfigServer);
|
|
||||||
resetVitality(sessionID: string): IAkiProfile;
|
|
||||||
saveVitality(pmcData: IPmcData, info: ISyncHealthRequestData, sessionID: string): void;
|
|
||||||
private saveHealth;
|
|
||||||
private saveEffects;
|
|
||||||
private addEffect;
|
|
||||||
private isEmpty;
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
import { IPmcData, Production, Productive } from "../models/eft/common/IPmcData";
|
|
||||||
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
|
||||||
import { StageBonus } from "../models/eft/hideout/IHideoutArea";
|
|
||||||
import { IHideoutContinousProductionStartRequestData } from "../models/eft/hideout/IHideoutContinousProductionStartRequestData";
|
|
||||||
import { IHideoutSingleProductionStartRequestData } from "../models/eft/hideout/IHideoutSingleProductionStartRequestData";
|
|
||||||
import { IHideoutTakeProductionRequestData } from "../models/eft/hideout/IHideoutTakeProductionRequestData";
|
|
||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
|
||||||
import { ItemEventRouter } from "../routers/ItemEventRouter";
|
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
|
||||||
import { PlayerService } from "../services/PlayerService";
|
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
import { InventoryHelper } from "./InventoryHelper";
|
|
||||||
import { ProfileHelper } from "./ProfileHelper";
|
|
||||||
export declare class HideoutHelper {
|
|
||||||
private logger;
|
|
||||||
private hashUtil;
|
|
||||||
private timeUtil;
|
|
||||||
private randomUtil;
|
|
||||||
private databaseServer;
|
|
||||||
private itemEventRouter;
|
|
||||||
private httpResponse;
|
|
||||||
private profileHelper;
|
|
||||||
private inventoryHelper;
|
|
||||||
private playerService;
|
|
||||||
private configServer;
|
|
||||||
static BITCOIN_FARM: string;
|
|
||||||
private WATER_COLLECTOR;
|
|
||||||
private BITCOIN;
|
|
||||||
private EXPEDITIONARY_FUEL_TANK;
|
|
||||||
static NAME_BACKENDCOUNTERS_CRAFTING: string;
|
|
||||||
static SKILL_NAME_HIDEOUT: string;
|
|
||||||
static HOUR_FOR_SKILL_CRAFTING: number;
|
|
||||||
static SKILL_NAME_CRAFITING: string;
|
|
||||||
private hideoutConfig;
|
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, itemEventRouter: ItemEventRouter, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, playerService: PlayerService, configServer: ConfigServer);
|
|
||||||
registerProduction(pmcData: IPmcData, body: IHideoutSingleProductionStartRequestData | IHideoutContinousProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
/**
|
|
||||||
* This convinience function intialies new Production Object
|
|
||||||
* with all the constants.
|
|
||||||
*/
|
|
||||||
initProduction(recipeId: string, productionTime: number): Production;
|
|
||||||
isProductionType(productive: Productive): productive is Production;
|
|
||||||
applyPlayerUpgradesBonuses(pmcData: IPmcData, bonus: StageBonus): void;
|
|
||||||
private applySkillXPBoost;
|
|
||||||
updatePlayerHideout(sessionID: string): void;
|
|
||||||
private updateWaterCollector;
|
|
||||||
private doesWaterCollectorHaveFilter;
|
|
||||||
private updateFuel;
|
|
||||||
private updateWaterFilters;
|
|
||||||
private getAreaUpdObject;
|
|
||||||
private updateAirFilters;
|
|
||||||
private updateBitcoinFarm;
|
|
||||||
private getBTCSlots;
|
|
||||||
private getManagementSkillsSlots;
|
|
||||||
private hasManagementSkillSlots;
|
|
||||||
private getHideoutManagementSkill;
|
|
||||||
private getHideoutManagementConsumptionBonus;
|
|
||||||
isProduction(productive: Productive): productive is Production;
|
|
||||||
getBTC(pmcData: IPmcData, body: IHideoutTakeProductionRequestData, sessionID: string): IItemEventRouterResponse;
|
|
||||||
getRandomAmountRewardForScavCase(itemToCalculate: ITemplateItem): number;
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user