Compare commits
50 Commits
Author | SHA1 | Date | |
---|---|---|---|
509cdff8b6 | |||
30744551f0 | |||
23ab7efadf | |||
c3866d0360 | |||
a1f8fe37a1 | |||
cc58998345 | |||
90db74d535 | |||
cce9f573ba | |||
37d356736c | |||
41c3dd6c83 | |||
df9a522516 | |||
c145035717 | |||
1fc77d6bdf | |||
7d9783d7b5 | |||
4f863a37b0 | |||
5ec21767c5 | |||
74de872205 | |||
a4d907a76b | |||
2c7493853f | |||
96301881d1 | |||
b9c77b1c13 | |||
c85b851a38 | |||
efb5872836 | |||
280c1c6021 | |||
e6765e8c5b | |||
8d67fcf901 | |||
49455958e9 | |||
49cdcbc984 | |||
fff75ca63e | |||
1a80b7b26e | |||
2c37fd2276 | |||
a85fd833b9 | |||
34bcd62d14 | |||
53cd6cc232 | |||
8a0e32a251 | |||
3d56c6119c | |||
053294c48a | |||
2488092fc9 | |||
070beec63b | |||
5201f75fd7 | |||
b6cd8d20c1 | |||
fd596acbb6 | |||
37e9e9becb | |||
bfe7c598bd | |||
76f406baa5 | |||
de120ff607 | |||
065c5098b9 | |||
c932d2b1e0 | |||
245754fe4a | |||
b7107e1a0e |
4
.gitignore
vendored
4
.gitignore
vendored
@ -29,5 +29,5 @@ config.json.bk
|
||||
desktop.ini
|
||||
*.zip
|
||||
*.js
|
||||
/Valens-AIO/Valens-AIO_*/**/*.*
|
||||
/Valens-AIO/Valens-AIO_*/*.*
|
||||
/Valens-AIO_*/**/*.*
|
||||
/Valens-AIO_*/*.*
|
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.
|
Binary file not shown.
@ -1,484 +0,0 @@
|
||||
{
|
||||
"DebugMode": false,
|
||||
|
||||
"ammo":
|
||||
{
|
||||
"ammoStacks":
|
||||
{
|
||||
"grenadeCartridges": 1,
|
||||
"marksmanCartridges": 40,
|
||||
"pistolCartridges": 50,
|
||||
"rifleCartridges": 60,
|
||||
"shotgunCartridges": 20
|
||||
}
|
||||
},
|
||||
|
||||
"bots":
|
||||
{
|
||||
"bossChance":
|
||||
{
|
||||
"activated": false,
|
||||
"chance": 100
|
||||
},
|
||||
|
||||
"maxBotCap": 20,
|
||||
|
||||
"pmc":
|
||||
{
|
||||
"chanceSameSideIsHostile": 50,
|
||||
"containersOnPMCs": true,
|
||||
"isUsec": 50,
|
||||
"lootNValue": 3,
|
||||
"maxBackpackLootTotalRub": 150000,
|
||||
"maxPocketLootTotalRub": 50000,
|
||||
"maxVestLootTotalRub": 50000,
|
||||
|
||||
"convertIntoPmcChance":
|
||||
{
|
||||
"assault":
|
||||
{
|
||||
"min": 15,
|
||||
"max": 40
|
||||
},
|
||||
"cursedAssault":
|
||||
{
|
||||
"min": 15,
|
||||
"max": 40
|
||||
},
|
||||
"pmcBot":
|
||||
{
|
||||
"min": 15,
|
||||
"max": 30
|
||||
},
|
||||
"exUsec":
|
||||
{
|
||||
"min": 5,
|
||||
"max": 20
|
||||
}
|
||||
},
|
||||
|
||||
"difficultyWeights":
|
||||
{
|
||||
"difficulty": "asonline",
|
||||
"useWeights": false,
|
||||
"weights":
|
||||
{
|
||||
"easy": 20,
|
||||
"normal": 58,
|
||||
"hard": 15,
|
||||
"impossible": 7
|
||||
}
|
||||
},
|
||||
|
||||
"looseWeaponInBackpackChance": 15,
|
||||
"looseWeaponInBackpackLoot":
|
||||
{
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
|
||||
"scav":
|
||||
{
|
||||
"lootNValue": 4
|
||||
}
|
||||
},
|
||||
|
||||
"containers":
|
||||
{
|
||||
"commonContainers":
|
||||
{
|
||||
"enabled": false,
|
||||
"AMMO_CASE":
|
||||
{
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"cellsH": 7,
|
||||
"cellsV": 7
|
||||
},
|
||||
|
||||
"DOCUMENTS_CASE":
|
||||
{
|
||||
"width": 2,
|
||||
"height": 1,
|
||||
"cellsH": 4,
|
||||
"cellsV": 4
|
||||
},
|
||||
|
||||
"DOGTAG_CASE":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 10,
|
||||
"cellsV": 10
|
||||
},
|
||||
|
||||
"GRENADE_CASE":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"cellsH": 8,
|
||||
"cellsV": 8
|
||||
},
|
||||
|
||||
"INJECTOR_CASE":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 3,
|
||||
"cellsV": 3
|
||||
},
|
||||
|
||||
"ITEM_CASE":
|
||||
{
|
||||
"width": 4,
|
||||
"height": 4,
|
||||
"cellsH": 8,
|
||||
"cellsV": 8
|
||||
},
|
||||
|
||||
"KEY_TOOL":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 4,
|
||||
"cellsV": 4
|
||||
},
|
||||
|
||||
"KEYCARD_HOLDER":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 3,
|
||||
"cellsV": 3
|
||||
},
|
||||
|
||||
"SCAV_JUNKBOX":
|
||||
{
|
||||
"width": 4,
|
||||
"height": 4,
|
||||
"cellsH": 14,
|
||||
"cellsV": 14
|
||||
},
|
||||
|
||||
"MAGAZINE_CASE":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 2,
|
||||
"cellsH": 7,
|
||||
"cellsV": 7
|
||||
},
|
||||
|
||||
"MEDICINE_CASE":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"cellsH": 7,
|
||||
"cellsV": 7
|
||||
},
|
||||
|
||||
"MONEY_CASE":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 2,
|
||||
"cellsH": 7,
|
||||
"cellsV": 7
|
||||
},
|
||||
|
||||
"HOLODILNICK_THERMAL_BAG":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"cellsH": 8,
|
||||
"cellsV": 8
|
||||
},
|
||||
|
||||
"PISTOL_CASE":
|
||||
{
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"cellsH": 4,
|
||||
"cellsV": 3
|
||||
},
|
||||
|
||||
"SICC_ORGANIZATIONAL_POUCH":
|
||||
{
|
||||
"width": 2,
|
||||
"height": 1,
|
||||
"cellsH": 5,
|
||||
"cellsV": 5
|
||||
},
|
||||
|
||||
"SIMPLE_WALLET":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 2,
|
||||
"cellsV": 2
|
||||
},
|
||||
|
||||
"THICC_ITEM_CASE":
|
||||
{
|
||||
"width": 5,
|
||||
"height": 3,
|
||||
"cellsH": 14,
|
||||
"cellsV": 14
|
||||
},
|
||||
|
||||
"THICC_WEAPON_CASE":
|
||||
{
|
||||
"width": 5,
|
||||
"height": 2,
|
||||
"cellsH": 6,
|
||||
"cellsV": 15
|
||||
},
|
||||
|
||||
"WEAPON_CASE":
|
||||
{
|
||||
"width": 5,
|
||||
"height": 2,
|
||||
"cellsH": 5,
|
||||
"cellsV": 10
|
||||
},
|
||||
|
||||
"WZ_WALLET":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 2,
|
||||
"cellsV": 2
|
||||
}
|
||||
},
|
||||
|
||||
"securedContainers":
|
||||
{
|
||||
"enabled": false,
|
||||
"ALPHA":
|
||||
{
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"cellsH": 2,
|
||||
"cellsV": 2
|
||||
},
|
||||
|
||||
"BETA":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 2,
|
||||
"cellsH": 3,
|
||||
"cellsV": 2
|
||||
},
|
||||
|
||||
"EPSILON":
|
||||
{
|
||||
"width": 4,
|
||||
"height": 2,
|
||||
"cellsH": 4,
|
||||
"cellsV": 2
|
||||
},
|
||||
|
||||
"GAMMA":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"cellsH": 3,
|
||||
"cellsV": 3
|
||||
},
|
||||
|
||||
"KAPPA":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"cellsH": 3,
|
||||
"cellsV": 4
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"flea":
|
||||
{
|
||||
"minUserLevel": 15,
|
||||
|
||||
"blacklist":
|
||||
{
|
||||
"enableBsgList": true,
|
||||
"enableQuestList": true
|
||||
},
|
||||
|
||||
"condition":
|
||||
{
|
||||
"conditionChance": 0.2,
|
||||
"min": 0.6,
|
||||
"max": 1.0
|
||||
},
|
||||
|
||||
"currencies":
|
||||
{
|
||||
"roubles": 78,
|
||||
"dollars": 20,
|
||||
"euros": 2
|
||||
},
|
||||
|
||||
"offerItemCount":
|
||||
{
|
||||
"min": 8,
|
||||
"max": 15
|
||||
},
|
||||
|
||||
"reputation":
|
||||
{
|
||||
"gain": 0.0000002,
|
||||
"loss": 0.0000002
|
||||
},
|
||||
|
||||
"time":
|
||||
{
|
||||
"baseSellTime": 15,
|
||||
"minSellTime": 5,
|
||||
"maxSellTime": 15
|
||||
}
|
||||
},
|
||||
|
||||
"globals":
|
||||
{
|
||||
|
||||
"damagePerMeter": 9,
|
||||
"safeHeight": 3,
|
||||
"maxLoyaltyTraders": false,
|
||||
"timeBeforeDeployLocal": 10,
|
||||
|
||||
"matchEnd":
|
||||
{
|
||||
"survivedExpRequirement": 200,
|
||||
"survivedSecondsRequirement": 420,
|
||||
"survivedExpReward": 300,
|
||||
"miaExpReward": 200,
|
||||
"runnerExpReward": 200,
|
||||
"leftMult": 0,
|
||||
"miaMult": 1,
|
||||
"survivedMult": 1.3,
|
||||
"runnerMult": 0.5,
|
||||
"killedMult": 1,
|
||||
"headShotMult": 1.2,
|
||||
"expOnDamageAllHealth": 50
|
||||
}
|
||||
},
|
||||
|
||||
"hideout":
|
||||
{
|
||||
"airFilterUnitFlowRate": 0.0047222222222222,
|
||||
"constructionTime": 1,
|
||||
"generatorFuelFlowRate": 0.0013194444444444,
|
||||
"gpuBoostRate": 0.041225,
|
||||
"productionTime": 1,
|
||||
"scavCaseTime": 1
|
||||
},
|
||||
|
||||
"insurance":
|
||||
{
|
||||
"insuranceMultiplier":
|
||||
{
|
||||
"prapor": 0.16,
|
||||
"therapist": 0.25
|
||||
},
|
||||
"returnChancePercent":
|
||||
{
|
||||
"prapor": 80,
|
||||
"therapist": 85
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
"items":
|
||||
{
|
||||
"standardStash":
|
||||
{
|
||||
"vertical": 28,
|
||||
"horizontal": 10
|
||||
},
|
||||
|
||||
"behindStash":
|
||||
{
|
||||
"vertical": 38,
|
||||
"horizontal": 10
|
||||
},
|
||||
|
||||
"escapeStash":
|
||||
{
|
||||
"vertical": 48,
|
||||
"horizontal": 10
|
||||
},
|
||||
|
||||
"eodStash":
|
||||
{
|
||||
"vertical": 68,
|
||||
"horizontal": 10
|
||||
},
|
||||
|
||||
"examinedByDefault": false,
|
||||
"removeBackpackFilter": true,
|
||||
"removeKeyUsageMax": false,
|
||||
"roublesMaxStack": 500000,
|
||||
"dollarsMaxStack": 50000,
|
||||
"eurosMaxStack": 50000,
|
||||
"weightModifier": 1
|
||||
},
|
||||
|
||||
"locations":
|
||||
{
|
||||
"allExtractsAvailable": false,
|
||||
"exfilTime": 8,
|
||||
"extractionsExtended": false,
|
||||
"noExtractRestrictions": false
|
||||
},
|
||||
|
||||
"loot":
|
||||
{
|
||||
"containersInMarkedRoom": true,
|
||||
"looseLootMultiplier": 1,
|
||||
"staticLootMultiplier": 1
|
||||
},
|
||||
|
||||
"progression":
|
||||
{
|
||||
"enabled": true
|
||||
},
|
||||
|
||||
"quests":
|
||||
{
|
||||
"onlyFoundInRaid": true
|
||||
},
|
||||
|
||||
"raid":
|
||||
{
|
||||
"carExtractBaseStandingGain": 0.25,
|
||||
"chompiesBossFix": true,
|
||||
"fixOpenZones": true,
|
||||
"scavExtractGain": 0.01,
|
||||
"timeLimit": 60,
|
||||
"aiAmount": "asonline",
|
||||
"aiDifficulty": "asonline",
|
||||
"bossEnabled": true,
|
||||
"scavWars": false,
|
||||
"taggedAndCursed": false,
|
||||
"enablePve": true
|
||||
},
|
||||
|
||||
"prewipeEvents":
|
||||
{
|
||||
"allBossesOnReserve": false,
|
||||
"allTradersSellCheapItems": false,
|
||||
"gluharOnLabs": false,
|
||||
"killaOnFactory": false,
|
||||
"makeObdolbosPowerful": false
|
||||
},
|
||||
|
||||
"weapons":
|
||||
{
|
||||
"jam": false,
|
||||
"misfeed": false,
|
||||
"misfire": false,
|
||||
"overheat": false,
|
||||
"slide": false
|
||||
}
|
||||
}
|
@ -1,334 +0,0 @@
|
||||
export interface Config
|
||||
{
|
||||
DebugMode: boolean
|
||||
ammo: Ammo
|
||||
bots: Bots
|
||||
containers: Containers
|
||||
flea: Flea
|
||||
globals: Globals
|
||||
hideout: Hideout
|
||||
insurance: Insurance
|
||||
items: Items
|
||||
locations: Locations
|
||||
loot: Loot
|
||||
progression: Progression
|
||||
raid: Raid
|
||||
quests: Quests
|
||||
prewipeEvents: PrewipeEvents
|
||||
weapons: Weapons
|
||||
}
|
||||
|
||||
export interface Ammo
|
||||
{
|
||||
ammoStacks: AmmoStacks
|
||||
}
|
||||
|
||||
export interface AmmoStacks
|
||||
{
|
||||
grenadeCartridges: number
|
||||
marksmanCartridges: number
|
||||
pistolCartridges: number
|
||||
rifleCartridges: number
|
||||
shotgunCartridges: number
|
||||
}
|
||||
|
||||
export interface Bots
|
||||
{
|
||||
bossChance: BossChance
|
||||
maxBotCap: number
|
||||
pmc: Pmc
|
||||
scav: Scav
|
||||
}
|
||||
|
||||
export interface BossChance
|
||||
{
|
||||
activated: boolean
|
||||
chance: number
|
||||
}
|
||||
|
||||
export interface Pmc
|
||||
{
|
||||
chanceSameSideIsHostile: number
|
||||
containersOnPMCs: boolean
|
||||
isUsec: number
|
||||
lootNValue: number
|
||||
maxBackpackLootTotalRub: number
|
||||
maxPocketLootTotalRub: number
|
||||
maxVestLootTotalRub: number
|
||||
difficultyWeights: DifficultyWeights
|
||||
convertIntoPmcChance: ConvertIntoPmcChance
|
||||
looseWeaponInBackpackChance: number
|
||||
looseWeaponInBackpackLoot: LooseWeapon
|
||||
}
|
||||
|
||||
export interface DifficultyWeights
|
||||
{
|
||||
difficulty: string
|
||||
useWeights: boolean
|
||||
weights: Weights
|
||||
}
|
||||
|
||||
export interface Weights
|
||||
{
|
||||
easy: number
|
||||
normal: number
|
||||
hard: number
|
||||
impossible: number
|
||||
}
|
||||
|
||||
export interface ConvertIntoPmcChance
|
||||
{
|
||||
assault: PmcChance
|
||||
cursedAssault: PmcChance
|
||||
pmcBot : PmcChance
|
||||
exUsec : PmcChance
|
||||
}
|
||||
|
||||
export interface PmcChance
|
||||
{
|
||||
min: number
|
||||
max: number
|
||||
}
|
||||
|
||||
export interface LooseWeapon
|
||||
{
|
||||
min: number
|
||||
max: number
|
||||
}
|
||||
|
||||
export interface Scav
|
||||
{
|
||||
lootNValue: number
|
||||
}
|
||||
|
||||
export interface Containers
|
||||
{
|
||||
commonContainers: CommonContainers
|
||||
securedContainers: SecuredContainers
|
||||
}
|
||||
|
||||
export interface CommonContainers
|
||||
{
|
||||
enabled: boolean
|
||||
ammoCase: Case
|
||||
docsCase: Case
|
||||
dogsCase: Case
|
||||
grenadeCase: Case
|
||||
injectorCase: Case
|
||||
itemCase: Case
|
||||
keyTool: Case
|
||||
keycardHolder: Case
|
||||
scavJunkbox: Case
|
||||
magsCase: Case
|
||||
medsCase: Case
|
||||
moneyCase: Case
|
||||
holodilnick: Case
|
||||
pistolCase: Case
|
||||
siccCase: Case
|
||||
wallet: Case
|
||||
thiccItemCase: Case
|
||||
thiccWeaponCase: Case
|
||||
weaponCase: Case
|
||||
wzWallet: Case
|
||||
}
|
||||
|
||||
export interface SecuredContainers
|
||||
{
|
||||
enabled: boolean
|
||||
alpha: Case
|
||||
beta: Case
|
||||
epsilon: Case
|
||||
gamma: Case
|
||||
kappa: Case
|
||||
}
|
||||
|
||||
export interface Case
|
||||
{
|
||||
width: number
|
||||
height: number
|
||||
cellsH: number
|
||||
cellsV: number
|
||||
}
|
||||
|
||||
export interface Flea
|
||||
{
|
||||
minUserLevel: number
|
||||
blacklist: Blacklist
|
||||
condition: Condition
|
||||
currencies: Currencies
|
||||
offerItemCount: OfferItemCount
|
||||
reputation: Reputation
|
||||
time: Time
|
||||
}
|
||||
|
||||
export interface Blacklist
|
||||
{
|
||||
enableBsgList: boolean
|
||||
enableQuestList: boolean
|
||||
}
|
||||
|
||||
export interface Condition
|
||||
{
|
||||
conditionChance: number
|
||||
min: number
|
||||
max: number
|
||||
}
|
||||
|
||||
export interface Currencies
|
||||
{
|
||||
roubles: number
|
||||
dollars: number
|
||||
euros: number
|
||||
}
|
||||
|
||||
export interface OfferItemCount
|
||||
{
|
||||
min: number
|
||||
max: number
|
||||
}
|
||||
|
||||
export interface Reputation
|
||||
{
|
||||
gain: number
|
||||
loss: number
|
||||
}
|
||||
|
||||
export interface Time
|
||||
{
|
||||
baseSellTime: number
|
||||
minSellTime: number
|
||||
maxSellTime: number
|
||||
}
|
||||
|
||||
export interface Globals
|
||||
{
|
||||
damagePerMeter: number
|
||||
safeHeight: number
|
||||
maxLoyaltyTraders: boolean
|
||||
timeBeforeDeployLocal: number
|
||||
matchEnd: MatchEnd
|
||||
}
|
||||
|
||||
export interface MatchEnd
|
||||
{
|
||||
survivedExpRequirement: number
|
||||
survivedSecondsRequirement: number
|
||||
survivedExpReward: number
|
||||
miaExpReward: number
|
||||
runnerExpReward: number
|
||||
leftMult: number
|
||||
miaMult: number
|
||||
survivedMult: number
|
||||
runnerMult: number
|
||||
killedMult: number
|
||||
headShotMult: number
|
||||
expOnDamageAllHealth: number
|
||||
}
|
||||
|
||||
export interface Hideout
|
||||
{
|
||||
airFilterUnitFlowRate: number
|
||||
constructionTime: number
|
||||
generatorFuelFlowRate: number
|
||||
gpuBoostRate: number
|
||||
productionTime: number
|
||||
scavCaseTime: number
|
||||
}
|
||||
|
||||
export interface Insurance
|
||||
{
|
||||
insuranceMultiplier: InsuranceMultiplier
|
||||
returnChancePercent: ReturnChancePercent
|
||||
}
|
||||
|
||||
export interface InsuranceMultiplier
|
||||
{
|
||||
prapor: number
|
||||
therapist: number
|
||||
}
|
||||
|
||||
export interface ReturnChancePercent
|
||||
{
|
||||
prapor: number
|
||||
therapist: number
|
||||
}
|
||||
|
||||
export interface Items
|
||||
{
|
||||
standardStash: Stash
|
||||
behindStash: Stash
|
||||
escapeStash: Stash
|
||||
eodStash: Stash
|
||||
examinedByDefault: boolean
|
||||
removeBackpackFilter: boolean
|
||||
removeKeyUsageMax: boolean
|
||||
dollarsMaxStack: number
|
||||
eurosMaxStack: number
|
||||
roublesMaxStack: number
|
||||
weightModifier: number
|
||||
}
|
||||
|
||||
export interface Stash
|
||||
{
|
||||
vertical: number
|
||||
horizontal: number
|
||||
}
|
||||
|
||||
export interface Locations
|
||||
{
|
||||
allExtractsAvailable: boolean
|
||||
exfilTime: number
|
||||
extractionsExtended: boolean
|
||||
noExtractRestrictions: boolean
|
||||
}
|
||||
|
||||
export interface Loot
|
||||
{
|
||||
containersInMarkedRoom: boolean
|
||||
looseLootMultiplier: number
|
||||
staticLootMultiplier: number
|
||||
}
|
||||
|
||||
export interface Progression
|
||||
{
|
||||
enabled: boolean
|
||||
}
|
||||
|
||||
export interface Quests
|
||||
{
|
||||
onlyFoundInRaid: boolean
|
||||
}
|
||||
|
||||
export interface Raid
|
||||
{
|
||||
carExtractBaseStandingGain: number
|
||||
chompiesBossFix: boolean
|
||||
fixOpenZones: boolean
|
||||
scavExtractGain: number
|
||||
timeLimit: number
|
||||
aiAmount: string
|
||||
aiDifficulty: string
|
||||
bossEnabled: boolean
|
||||
scavWars: boolean
|
||||
taggedAndCursed: boolean
|
||||
enablePve: boolean
|
||||
}
|
||||
|
||||
export interface PrewipeEvents
|
||||
{
|
||||
allBossesOnReserve: boolean
|
||||
allTradersSellCheapItems: boolean
|
||||
gluharOnLabs: boolean
|
||||
killaOnFactory: boolean
|
||||
makeObdolbosPowerful: boolean
|
||||
}
|
||||
|
||||
export interface Weapons
|
||||
{
|
||||
jam: boolean
|
||||
misfeed: boolean
|
||||
misfire: boolean
|
||||
overheat: boolean
|
||||
slide: boolean
|
||||
}
|
||||
|
@ -1,39 +0,0 @@
|
||||
/*import { Config } from "../config/config";
|
||||
import { Logger } from "./logger";
|
||||
import { IAirdropConfig } from "@spt-aki/models/spt/config/IAirdropConfig";
|
||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||
|
||||
export class Airdrop
|
||||
{
|
||||
private modConfig: Config = require("../config/config.jsonc");
|
||||
private logger: Logger;
|
||||
private databaseServer: IDatabaseTables;
|
||||
private airdropConfig: IAirdropConfig;
|
||||
|
||||
constructor(logger: Logger, databaseServer: DatabaseServer, airdropConfig: IAirdropConfig)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.tables = databaseServer.getTables();
|
||||
this.airdropConfig = airdropConfig;
|
||||
}
|
||||
|
||||
public updateAirdrops();
|
||||
{
|
||||
if (this.modConfig.airdropChancePercent != 25)
|
||||
{
|
||||
this.airdropConfig.airdropChancePercent["bigmap"] = this.modConfig.airdrop.airdropChancePercent.bigmap;
|
||||
this.airdropConfig.airdropChancePercent["woods"] = this.modConfig.airdrop.airdropChancePercent.woods;
|
||||
this.airdropConfig.airdropChancePercent["lighthouse"] = this.modConfig.airdrop.airdropChancePercent.lighthouse;
|
||||
this.airdropConfig.airdropChancePercent["shoreline"] = this.modConfig.airdrop.airdropChancePercent.shoreline;
|
||||
this.airdropConfig.airdropChancePercent["interchange"] = this.modConfig.airdrop.airdropChancePercent.interchange;
|
||||
this.airdropConfig.airdropChancePercent["reserve"] = this.modConfig.airdrop.airdropChancePercent.reserve;
|
||||
this.logger.info(`Customs Airdrop Chance is ${this.modConfig.airdrop.airdropChancePercent.bigmap}`);
|
||||
this.logger.info(`Woods Airdrop Chance is ${this.modConfig.airdrop.airdropChancePercent.woods}`);
|
||||
this.logger.info(`Lighthouse Airdrop Chance is ${this.modConfig.airdrop.airdropChancePercent.lighthouse}`);
|
||||
this.logger.info(`Shoreline Airdrop Chance is ${this.modConfig.airdrop.airdropChancePercent.shoreline}`);
|
||||
this.logger.info(`Interchange Airdrop Chance is ${this.modConfig.airdrop.airdropChancePercent.interchange}`);
|
||||
this.logger.info(`Reserve Airdrop Chance is ${this.modConfig.airdrop.airdropChancePercent.reserve}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
@ -1,68 +0,0 @@
|
||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||
import { Logger } from "./logger";
|
||||
import { Grenade, MarksmanCaliber, PistolCaliber, RifleCaliber, Shotguns } from "./ammotypes";
|
||||
import { Config } from "../config/config";
|
||||
|
||||
export class Ammo
|
||||
{
|
||||
private modConfig: Config = require("../config/config.json")
|
||||
private logger: Logger;
|
||||
private tables: DatabaseServer;
|
||||
|
||||
constructor(logger: Logger, databaseServer: DatabaseServer)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.tables = databaseServer.getTables();
|
||||
}
|
||||
|
||||
public updateAmmo(): void
|
||||
{
|
||||
const items = this.tables.templates.items;
|
||||
const mod = this.modConfig.ammo;
|
||||
|
||||
if (mod.ammoStacks.grenadeCartridges != 1)
|
||||
{
|
||||
for (const value of Object.values(Grenade))
|
||||
{
|
||||
items[value]._props.StackMaxSize = mod.ammoStacks.grenadeCartridges
|
||||
this.logger.info(`Grenade Cartridges Max Stacks set to ${mod.ammoStacks.grenadeCartridges}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (mod.ammoStacks.marksmanCartridges != 40)
|
||||
{
|
||||
for (const value of Object.values(MarksmanCaliber))
|
||||
{
|
||||
items[value]._props.StackMaxSize = mod.ammoStacks.marksmanCartridges
|
||||
this.logger.info(`Marksman Cartridges Max Stacks set to ${mod.ammoStacks.marksmanCartridges}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (mod.ammoStacks.pistolCartridges != 50)
|
||||
{
|
||||
for (const value of Object.values(PistolCaliber))
|
||||
{
|
||||
items[value]._props.StackMaxSize = mod.ammoStacks.pistolCartridges
|
||||
this.logger.info(`Pistol Cartridges Max Stacks set to ${mod.ammoStacks.pistolCartridges}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (mod.ammoStacks.rifleCartridges != 60)
|
||||
{
|
||||
for (const value of Object.values(RifleCaliber))
|
||||
{
|
||||
items[value]._props.StackMaxSize = mod.ammoStacks.rifleCartridges
|
||||
this.logger.info(`Rifle Cartridges Max Stacks set to ${mod.ammoStacks.rifleCartridges}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (mod.ammoStacks.shotgunCartridges != 20)
|
||||
{
|
||||
for (const value of Object.values(Shotguns))
|
||||
{
|
||||
items[value]._props.StackMaxSize = mod.ammoStacks.shotgunCartridges
|
||||
this.logger.info(`Shotgun Cartridges Max Stacks set to ${mod.ammoStacks.shotgunCartridges}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,189 +0,0 @@
|
||||
export enum Grenade
|
||||
{
|
||||
M386_HE_GRENADE = "5ede475b549eed7c6d5c18fb",
|
||||
M576_MP_APERS_GRENADE = "5ede475339ee016e8c534742",
|
||||
M433_HEDP_GRENADE = "5f0c892565703e5c461894e9",
|
||||
M406_HE_GRENADE = "5ede4739e0350d05467f73e8",
|
||||
M381_HE_GRENADE = "5ede474b0c226a66f5402622",
|
||||
M441_HE_GRENADE = "5ede47405b097655935d7d16"
|
||||
}
|
||||
|
||||
export enum MarksmanCaliber
|
||||
{
|
||||
M62_TRACER = "5a608bf24f39f98ffc77720e",
|
||||
M80 = "58dd3ad986f77403051cba8f",
|
||||
M61 = "5a6086ea4f39f99cd479502f",
|
||||
BCP_FMJ = "5e023e53d4353e3302577c4c",
|
||||
ULTRA_NOSLER = "5e023e88277cce2b522ff2b1",
|
||||
TCW_SP = "5e023e6e34d52a55c3304f71",
|
||||
M993 = "5efb0c1bd79ff02a1f5e68d9",
|
||||
TAC_X = "5fc382b6d6fa9c00c571bbc3",
|
||||
UCW = "5fc382c1016cce60e8341b20",
|
||||
AP = "5fc382a9d724d907e2077dab",
|
||||
FMJ = "5fc275cf85fd526b824a571a",
|
||||
SNB_GZH = "560d61e84bdc2da74d8b4571",
|
||||
LPS_GZH = "5887431f2459777e1612938f",
|
||||
PS_GZH = "59e77a2386f7742ee578960a",
|
||||
T46M_GZH = "5e023cf8186a883be655e54f",
|
||||
BT_GZH = "5e023d34e8a400319a28ed44",
|
||||
BS_GZH = "5e023d48186a883be655e551"
|
||||
}
|
||||
|
||||
export enum PistolCaliber
|
||||
{
|
||||
AP_SX = "5ba26835d4351e0035628ff5",
|
||||
ACTION_SX = "5ba26812d4351e003201fef1",
|
||||
FMJ_SX = "5ba2678ad4351e44f824b344",
|
||||
SUBSONIC_SX = "5ba26844d4351e00334c9475",
|
||||
SS198LF = "5cc80f79e4a949033c7343b2",
|
||||
R37_F = "5cc86832d7f00c000d3a6e6c",
|
||||
SS190 = "5cc80f38e4a949001152b560",
|
||||
R37_X = "5cc86840d7f00c002412c56c",
|
||||
L191 = "5cc80f53e4a949000e1ea4f8",
|
||||
SS197SR = "5cc80f8fe4a949033b0224a2",
|
||||
SB193 = "5cc80f67e4a949035e43bbba",
|
||||
FMJ43 = "5735ff5c245977640e39ba7e",
|
||||
LRN = "573601b42459776410737435",
|
||||
P_GL = "5736026a245977644601dc61",
|
||||
PST_GZH762 = "573603562459776430731618",
|
||||
LRNPC = "573602322459776445391df1",
|
||||
AKBS = "5735fdcd2459776445391d61",
|
||||
PT_GZH = "573603c924597764442bd9cb",
|
||||
PM_SP8_GZH = "5737218f245977612125ba51",
|
||||
P_GZH18 = "573719762459775a626ccbc1",
|
||||
PSTM_GZH = "57371aab2459775a77142f22",
|
||||
RG028_GZH = "573720e02459776143012541",
|
||||
BZHT_GZH = "573718ba2459775a75491131",
|
||||
PM_PSV = "5737207f24597760ff7b25f2",
|
||||
SP7_GZH = "57372140245977611f70ee91",
|
||||
PBM_GZH = "573719df2459775a626ccbc2",
|
||||
PSO_GZH18 = "57371f8d24597761006c6a81",
|
||||
PST_GZH18 = "5737201124597760fc4431f1",
|
||||
PS_GS_PPO = "57371f2b24597761224311f1",
|
||||
PRS_GS = "57371eb62459776125652ac1",
|
||||
PPT_GZH = "57371e4124597760ff7b25f1",
|
||||
PPE_GZH = "57371b192459775a9f58a5e0",
|
||||
PSO_GZH = "58864a4f2459770fcc257101",
|
||||
PST_GZH19 = "56d59d3ad2720bdb418b4577",
|
||||
GREEN_TRACER = "5c3df7d588a4501f290594e5",
|
||||
RIP19 = "5c0d56a986f774449d5de529",
|
||||
AP_63 = "5c925fa22e221601da359b7b",
|
||||
LUGER_CCI = "5a3c16fe86f77452b62de32a",
|
||||
PBP_GZH = "5efb0da7a29a85116f6ea05f",
|
||||
QUAKEMAKER = "5efb0e16aeb21837e749c7ff",
|
||||
P_GZH = "5a26abfac4a28232980eabff",
|
||||
PS_GZH = "5a269f97c4a282000b151807",
|
||||
PE_GZH = "5a26ac06c4a282000c5a90a8",
|
||||
BT_GZH = "5a26ac0ec4a28200741e1e18",
|
||||
FMJ = "62330b3ed4dc74626d570b95",
|
||||
HOLLOW_POINT = "62330bfadc5883093563729b",
|
||||
SOFT_POINT = "62330c40bdd19b369e1e53d1",
|
||||
JACKET_HP = "62330c18744e5e31df12f516",
|
||||
MATCH_FMJ = "5e81f423763d9f754677bf2e",
|
||||
HYDRA_SHOK = "5efb0fc6aeb21837e749c801",
|
||||
LASERMATCH_FMJ = "5efb0d4f4bc50b58e81710f3",
|
||||
AP = "5efb0cabfb3e451d70735af5",
|
||||
RIP45 = "5ea2a8e200685063ec28c05a"
|
||||
}
|
||||
|
||||
export enum RifleCaliber
|
||||
{
|
||||
PS_GS = "56dff3afd2720bba668b4567",
|
||||
SP = "56dff421d2720b5f5a8b4567",
|
||||
PPBS_GS_IGOLNIK = "5c0d5e4486f77478390952fe",
|
||||
BS_7N40 = "61962b617c6c7b169525f168",
|
||||
PRS_GS = "56dff338d2720bbd668b4569",
|
||||
BT_GS = "56dff061d2720bb5668b4567",
|
||||
US_GS = "56dff4ecd2720b5f5a8b4568",
|
||||
BP_GS_545 = "56dfef82d2720bbd668b4567",
|
||||
HP_545 = "56dff216d2720bbd668b4568",
|
||||
BS_GS = "56dff026d2720bb8668b4567",
|
||||
T_GS = "56dff4a2d2720bbd668b456a",
|
||||
PP_GS = "56dff2ced2720bb4668b4567",
|
||||
FMJ_545 = "56dff0bed2720bb0668b4567",
|
||||
M856 = "59e68f6f86f7746c9f75e846",
|
||||
MK255_MOD_0_RRLP = "59e6918f86f7746c9f75e849",
|
||||
M995 = "59e690b686f7746c9f75e848",
|
||||
M855A1 = "54527ac44bdc2d36668b4567",
|
||||
M856A1 = "59e6906286f7746c9f75e847",
|
||||
M855 = "54527a984bdc2d4e668b4567",
|
||||
HP_556 = "59e6927d86f77411da468256",
|
||||
FMJ_556 = "59e6920f86f77411d82aa167",
|
||||
WARMAGEDDON = "5c0d5ae286f7741e46554302",
|
||||
MK_318_MOD_0_SOST = "60194943740c5d77f6705eea",
|
||||
SSA_AP = "601949593ae8f707c4608daa",
|
||||
M62_TRACER = "619636be6db0f2477964e710",
|
||||
BCP_FMJ = "5fbe3ffdf8b6a877a729ea82",
|
||||
AP = "5fd20ff893a8961fc660a954",
|
||||
V_MAX = "6196364158ef8c428c287d9f",
|
||||
WHISPER = "6196365d58ef8c428c287da1",
|
||||
PS_GZH = "5656d7c34bdc2d9d198b4587",
|
||||
HP_762 = "59e4d3d286f774176a36250a",
|
||||
US_GZH = "59e4d24686f7741776641ac7",
|
||||
T45M1_GZH = "59e4cf5286f7741778269d8a",
|
||||
BP_GZH = "59e0d99486f7744a32234762",
|
||||
MAI_AP = "601aa3d2b2bcb34913271e6d",
|
||||
SP5_GS = "57a0dfb82459774d3078b56c",
|
||||
BP_GS = "5c0d688c86f77413ae3407b2",
|
||||
SP6_GS = "57a0e5022459774d1673f889",
|
||||
SPP_GS = "5c0d668f86f7747ccb7f13b2",
|
||||
PAB9_GS = "61962d879bb3d20b0946d385",
|
||||
FMJ_366 = "59e6542b86f77411dc52a77a",
|
||||
GEKSA = "59e6658b86f77411d949b250",
|
||||
EKO = "59e655cb86f77411dc52a77b",
|
||||
APM = "5f0596629e22f464da6bbdd9",
|
||||
PS12 = "5cadf6ddae9215051e1c23b2",
|
||||
PS12B = "5cadf6eeae921500134b2799",
|
||||
PS12A = "5cadf6e5ae921500113bb973"
|
||||
}
|
||||
|
||||
export enum Shotguns
|
||||
{
|
||||
BUCKSHOT_7MM = "560d5e524bdc2d25448b4571",
|
||||
MAGNUM_85MM = "5d6e6806a4b936088465b17e",
|
||||
RIP = "5c0d591486f7744c505b416f",
|
||||
BMG_SLUG_50CAL = "5d6e68c4a4b9361b93413f79",
|
||||
BUCKSHOT_525MM = "5d6e6772a4b936088465b17c",
|
||||
EXPRESS_65MM = "5d6e67fba4b9361bc73bc779",
|
||||
FLECHETTE = "5d6e6911a4b9361bd5780d52",
|
||||
FTX_CUSTOM_LITE_SLUG = "5d6e68e6a4b9361c140bcfe0",
|
||||
AP20_ARMOR_PIERCING_SLUG = "5d6e68a8a4b9360b6c0d54e2",
|
||||
DUAL_SABOT_SLUG = "5d6e68dea4b9361bcc29e659",
|
||||
POLEVA_6U_SLUG_12GA = "5d6e689ca4b9361bc8618956",
|
||||
POLEVA_3_SLUG_12GA = "5d6e6891a4b9361bd473feea",
|
||||
GRIZZLY_40_SLUG = "5d6e6869a4b9361c140bcfde",
|
||||
SUPERFORMANCE_HP_SLUG = "5d6e68d1a4b93622fe60e845",
|
||||
COPPER_SABOT_PREMIER_HP_SLUG = "5d6e68b3a4b9361bca7e50b5",
|
||||
LEAD_SLUG = "58820d1224597753c90aeb13",
|
||||
BUCKSHOT_75MM = "5a38ebd9c4a282000d722a5b",
|
||||
STAR_SLUG = "5d6e6a05a4b93618084f58d0",
|
||||
BUCKSHOT_73MM = "5d6e69c7a4b9360b6c0d54e4",
|
||||
DEVASTATOR_SLUG = "5d6e6a5fa4b93614ec501745",
|
||||
BUCKSHOT_56MM = "5d6e695fa4b936359b35d852",
|
||||
POLEVA_6U_SLUG_20GA = "5d6e6a42a4b9364f07165f52",
|
||||
POLEVA_3_SLUG_20GA = "5d6e6a53a4b9361bd473feec",
|
||||
BUCKSHOT_62MM = "5d6e69b9a4b9361bc8618958",
|
||||
SHRAPNEL10_BUCKSHOT = "5e85a9a6eacf8c039e4e2ac1",
|
||||
SHRAPNEL25_BUCKSHOT = "5f647f31b6238e5dd066e196",
|
||||
ZVEZDA_FLASHBANG = "5e85a9f4add9fe03027d9bf1",
|
||||
BARRIKADA_SLUG = "5e85aa1a988a8701445df1f5"
|
||||
}
|
||||
|
||||
export enum Ammo30x29
|
||||
{
|
||||
VOG_30 = "5d70e500a4b9364de70d38ce"
|
||||
}
|
||||
|
||||
export enum Ammo127x108
|
||||
{
|
||||
B32 = "5cde8864d7f00c0010373be1",
|
||||
BZT_44M = "5d2f2ab648f03550091993ca"
|
||||
}
|
||||
|
||||
export enum Ammo26x75
|
||||
{
|
||||
GREEN_FLARE = "62389aaba63f32501b1b444f",
|
||||
RED_FLARE = "62389ba9a63f32501b1b4451",
|
||||
WHITE_FLARE = "62389bc9423ed1685422dc57",
|
||||
YELLOW_FLARE = "62389be94d5d474bf712e709"
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
export enum CommonContainers
|
||||
{
|
||||
AMMO_CASE = "5aafbde786f774389d0cbc0f",
|
||||
DOCUMENTS_CASE = "590c60fc86f77412b13fddcf",
|
||||
DOGTAG_CASE = "5c093e3486f77430cb02e593",
|
||||
GRENADE_CASE = "5e2af55f86f7746d4159f07c",
|
||||
INJECTOR_CASE = "619cbf7d23893217ec30b689",
|
||||
ITEM_CASE = "59fb042886f7746c5005a7b2",
|
||||
KEY_TOOL = "59fafd4b86f7745ca07e1232",
|
||||
KEYCARD_HOLDER = "619cbf9e0a7c3a1a2731940a",
|
||||
SCAV_JUNKBOX = "5b7c710788a4506dec015957",
|
||||
MAGAZINE_CASE = "5c127c4486f7745625356c13",
|
||||
MEDICINE_CASE = "5aafbcd986f7745e590fff23",
|
||||
MONEY_CASE = "59fb016586f7746d0d4b423a",
|
||||
HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3",
|
||||
PISTOL_CASE = "567143bf4bdc2d1a0f8b4567",
|
||||
SICC_ORGANIZATIONAL_POUCH = "5d235bb686f77443f4331278",
|
||||
SIMPLE_WALLET = "5783c43d2459774bbe137486",
|
||||
THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482",
|
||||
THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25",
|
||||
WEAPON_CASE = "59fb023c86f7746d0d4b423c",
|
||||
WZ_WALLET = "60b0f6c058e0b0481a09ad11"
|
||||
}
|
||||
|
||||
export enum SecuredContainers
|
||||
{
|
||||
ALPHA = "544a11ac4bdc2d470e8b456a",
|
||||
BETA = "5857a8b324597729ab0a0e7d",
|
||||
EPSILON = "59db794186f77448bc595262",
|
||||
GAMMA = "5857a8bc2459772bad15db29",
|
||||
KAPPA = "5c093ca986f7740a1867ab12"
|
||||
}
|
@ -1,82 +0,0 @@
|
||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||
import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig";
|
||||
import { Logger } from "./logger";
|
||||
import { Config } from "../config/config";
|
||||
|
||||
export class Flea
|
||||
{
|
||||
private modConfig: Config = require("../config/config.json");
|
||||
private logger: Logger;
|
||||
private ragfairConfig: IRagfairConfig;
|
||||
private tables: DatabaseServer;
|
||||
|
||||
|
||||
constructor (logger: Logger, ragfairConfig: IRagfairConfig, databaseServer: DatabaseServer)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.ragfairConfig = ragfairConfig;
|
||||
this.tables = databaseServer.getTables();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public updateFlea(): void
|
||||
{
|
||||
const mod = this.modConfig.flea;
|
||||
const global = this.tables.globals.config.RagFair;
|
||||
const ragfair = this.ragfairConfig.dynamic;
|
||||
|
||||
if (mod.minUserLevel != 15)
|
||||
{
|
||||
global.minUserLevel = mod.minUserLevel;
|
||||
this.logger.info(`Fleamarket unlocked at level ${mod.minUserLevel}`)
|
||||
}
|
||||
|
||||
|
||||
if (!mod.blacklist.enableBsgList || !mod.blacklist.enableQuestList)
|
||||
{
|
||||
ragfair.blacklist.enableBsgList = mod.blacklist.enableBsgList;
|
||||
ragfair.blacklist.enableQuestList = mod.blacklist.enableQuestList;
|
||||
this.logger.info("Fleamarket Blacklists patched");
|
||||
}
|
||||
|
||||
if (mod.condition.conditionChance != 0.2 || mod.condition.min != 0.6 || mod.condition.max != 1)
|
||||
{
|
||||
ragfair.condition.conditionChance = mod.conditionChance;
|
||||
ragfair.condition.min = mod.min;
|
||||
ragfair.condition.max = mod.max;
|
||||
this.logger.info("Fleamarket Condition patched");
|
||||
}
|
||||
|
||||
if (mod.currencies.roubles != 78 || mod.currencies.dollars != 20 || mod.currencies.euros != 2)
|
||||
{
|
||||
ragfair.currencies["5449016a4bdc2d6f028b456f"] = mod.currencies.roubles;
|
||||
ragfair.currencies["5696686a4bdc2da3298b456a"] = mod.currencies.dollars;
|
||||
ragfair.currencies["569668774bdc2da2298b4568"] = mod.currencies.euros;
|
||||
this.logger.info("Fleamarket Currencies patched")
|
||||
}
|
||||
|
||||
if (mod.offerItemCount.min != 8 || mod.offerItemCount.max != 15)
|
||||
{
|
||||
ragfair.offerItemCount.min = mod.offerItemCount.min;
|
||||
ragfair.offerItemCount.max = mod.offerItemCount.max;
|
||||
this.logger.info("Fleamarket Offer Item Count patched");
|
||||
}
|
||||
|
||||
if (mod.reputation.gain != 0.0000002 || mod.reputation.loss != 0.0000002)
|
||||
{
|
||||
ragfair.offerItemCount.min = mod.offerItemCount.min;
|
||||
ragfair.offerItemCount.max = mod.offerItemCount.max;
|
||||
this.logger.info("Fleamarket Reputation patched");
|
||||
}
|
||||
|
||||
if (mod.time.baseSellTime != 15 || mod.time.minSellTime != 5 || mod.time.maxSellTime != 15)
|
||||
{
|
||||
const sell = this.ragfairConfig.sell;
|
||||
sell.time.base = mod.time.baseSellTime;
|
||||
sell.time.min = mod.time.minSellTime;
|
||||
sell.time.max = mod.time.maxSellTime;
|
||||
this.logger.info("Fleamarket Sell Times patched");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||
import { Logger } from "./logger";
|
||||
import { Config } from "../config/config";
|
||||
|
||||
export class Hideout
|
||||
{
|
||||
private modConfig: Config = require("../config/config.json")
|
||||
private logger: Logger;
|
||||
private tables: DatabaseServer;
|
||||
|
||||
constructor(logger: Logger, databaseServer: DatabaseServer)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.tables = databaseServer.getTables();
|
||||
}
|
||||
|
||||
public updateHideout(): void
|
||||
{
|
||||
const mod = this.modConfig.hideout;
|
||||
|
||||
if (mod.constructionTime != 1)
|
||||
{
|
||||
this.updateConstructionTime();
|
||||
this.logger.info(`Construction Time Patched to ${mod.constructionTime} `);
|
||||
}
|
||||
|
||||
if (mod.productionTime != 1)
|
||||
{
|
||||
this.updateProductionTime();
|
||||
this.logger.info(`Production Time Patched to ${mod.productionTime} `);
|
||||
}
|
||||
|
||||
if (mod.scavCaseTime != 1)
|
||||
{
|
||||
this.updateScavCase();
|
||||
this.logger.info(`Scav Case TIme Patched to ${mod.scavCaseTime}`);
|
||||
}
|
||||
|
||||
if (mod.airFilterUnitFlowRate != 0.0047222222222222
|
||||
||mod.generatorFuelFlowRate != 0.0013194444444444
|
||||
||mod.gpuBoostRate != 0.041225)
|
||||
{
|
||||
const settings = this.tables.hideout.settings;
|
||||
settings.airFilterUnitFlowRate = mod.airFilterUnitFlowRate;
|
||||
settings.generatorFuelFlowRate = mod.generatorFuelFlowRate;
|
||||
settings.gpuBoostRate = mod.gpuBoostRate;
|
||||
this.logger.info(`Air Filter Flow Rate set to ${mod.airFilterUnitFlowRate}`);
|
||||
this.logger.info(`Generator Fuel Flow Rate set to ${mod.generatorFuelFlowRate}`);
|
||||
this.logger.info(`GPU Boost Rate set to ${mod.gpuBoostRate}`);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private updateConstructionTime()
|
||||
{
|
||||
for (const area of this.tables.hideout.areas)
|
||||
{
|
||||
for (const stage in area.stages)
|
||||
{
|
||||
const stageData = area.stages[stage];
|
||||
stageData.constructionTime *= this.modConfig.hideout.constructionTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private updateProductionTime()
|
||||
{
|
||||
for (const production of this.tables.hideout.production)
|
||||
{
|
||||
production.productionTime *= this.modConfig.hideout.productionTime;
|
||||
}
|
||||
}
|
||||
|
||||
private updateScavCase()
|
||||
{
|
||||
for (const scavCase of this.tables.hideout.scavcase)
|
||||
{
|
||||
scavCase.ProductionTime *= this.modConfig.hideout.scavCaseTime;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
import { IInsuranceConfig } from "@spt-aki/models/spt/config/IInsuranceConfig";
|
||||
import { Config } from "../config/config";
|
||||
import { Logger } from "./logger";
|
||||
|
||||
export class Insurance
|
||||
{
|
||||
private modConfig: Config = require("../config/config.json");
|
||||
private logger: Logger;
|
||||
private insuranceConfig: IInsuranceConfig;
|
||||
|
||||
|
||||
constructor(logger:Logger, insuranceConfig: IInsuranceConfig)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.insuranceConfig = insuranceConfig;
|
||||
}
|
||||
|
||||
public updateInsurance(): void
|
||||
{
|
||||
const mod = this.modConfig.insurance;
|
||||
|
||||
if (mod.insuranceMultiplier.prapor != 0.16 || mod.insuranceMultiplier.therapist != 0.25)
|
||||
{
|
||||
this.insuranceConfig.insuranceMultiplier["54cb50c76803fa8b248b4571"] = mod.insuranceMultiplier.prapor;
|
||||
this.insuranceConfig.insuranceMultiplier["54cb57776803fa99248b456e"] = mod.insuranceMultiplier.therapist;
|
||||
this.logger.info(`Prapor Insurance Price Multiplier Set to ${mod.insuranceMultiplier.prapor}`);
|
||||
} this.logger.info(`Therapist Insurance Price Multiplier Set to ${mod.insuranceMultiplier.therapist}`);
|
||||
|
||||
if (mod.returnChancePercent.prapor != 80 || mod.returnChancePercent.therapist != 85)
|
||||
{
|
||||
this.insuranceConfig.returnChancePercent["54cb50c76803fa8b248b4571"] = mod.returnChancePercent.prapor;
|
||||
this.insuranceConfig.returnChancePercent["54cb57776803fa99248b456e"] = mod.returnChancePercent.therapist;
|
||||
this.logger.info(`Prapor Insurance Return Chance Set to ${mod.returnChancePercent.prapor}`);
|
||||
this.logger.info(`Therapist Insurance Return Chance set to ${mod.returnChancePercent.therapist}`);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,157 +0,0 @@
|
||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||
import { Config } from "../config/config";
|
||||
import { Logger } from "./logger";
|
||||
|
||||
export class Items
|
||||
{
|
||||
private modConfig: Config = require("../config/config.json")
|
||||
private logger: Logger;
|
||||
private tables: DatabaseServer;
|
||||
private mod: any;
|
||||
private items: any;
|
||||
|
||||
constructor(logger: Logger, databaseServer: DatabaseServer)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.tables = databaseServer.getTables();
|
||||
}
|
||||
|
||||
public updateItems(): void
|
||||
{
|
||||
|
||||
this.items = this.tables.templates.items;
|
||||
this.mod = this.modConfig.items;
|
||||
|
||||
if (this.mod.removeKeyUsageMax)
|
||||
{
|
||||
this.removeKeyUsageMax();
|
||||
this.logger.info("Key Usage Limit Removed");
|
||||
}
|
||||
|
||||
// Weight Modifier. Multiplier of Weight *= modConfig.weightModifier
|
||||
if (this.mod.weightModifier != 1)
|
||||
{
|
||||
this.updateWeight();
|
||||
this.logger.info(`Weight Multipler patched to ${this.mod.weightModifier}`);
|
||||
}
|
||||
|
||||
// Removes the ExcludedFilter on Backpacks
|
||||
// which in turn enables common containers to spawn in the loot pool of AI.
|
||||
if (this.mod.removeBackpackFilter)
|
||||
{
|
||||
this.updateBackpacks();
|
||||
this.logger.info(`Backpack Restrictions Removed: ${this.mod.removeBackpackFilter}`)
|
||||
}
|
||||
|
||||
// Standard Stash Size Changes
|
||||
if (this.mod.standardStash.vertical != 28 || this.mod.standardStash.horizontal != 10)
|
||||
{
|
||||
this.items["566abbc34bdc2d92178b4576"]._props.Grids[0]._props.cellsV = this.mod.standardStash.vertical;
|
||||
this.items["566abbc34bdc2d92178b4576"]._props.Grids[0]._props.cellsH = this.mod.standardStash.horizontal;
|
||||
this.logger.info(`Standard Stash Vertical changed to ${this.mod.standardStash.vertical}`);
|
||||
this.logger.info(`Standard Stash Horizontal changed to ${this.mod.standardStash.horizontal}`);
|
||||
}
|
||||
|
||||
// Left Behind Stash Size Changes
|
||||
if (this.mod.behindStash.vertical != 38 || this.mod.behindStash.horizontal != 10)
|
||||
{
|
||||
this.items["5811ce572459770cba1a34ea"]._props.Grids[0]._props.cellsV = this.mod.behindStash.vertical;
|
||||
this.items["5811ce572459770cba1a34ea"]._props.Grids[0]._props.cellsH = this.mod.behindStash.horizontal;
|
||||
this.logger.info(`Left Behind Stash Vertical changed to ${this.mod.behindStash.vertical}`);
|
||||
this.logger.info(`Left Behind Stash Horizontal changed to ${this.mod.behindStash.horizontal}`);
|
||||
}
|
||||
|
||||
// Prepare for Escape Stash Size Changes
|
||||
if (this.mod.escapeStash.vertical != 48 || this.mod.escapeStash.horizontal != 10)
|
||||
{
|
||||
this.items["5811ce662459770f6f490f32"]._props.Grids[0]._props.cellsV = this.mod.escapeStash.vertical;
|
||||
this.items["5811ce662459770f6f490f32"]._props.Grids[0]._props.cellsH = this.mod.escapeStash.horizontal;
|
||||
this.logger.info(`Prepare for Escape Stash Vertical changed to ${this.mod.escapeStash.vertical}`);
|
||||
this.logger.info(`Prepare for Escape Stash Horizontal changed to ${this.mod.escapeStash.horizontal}`);
|
||||
}
|
||||
|
||||
// Edge of Darkness Stash Size Changes
|
||||
if (this.mod.eodStash.vertical != 68 || this.mod.eodStash.horizontal != 10)
|
||||
{
|
||||
this.items["5811ce772459770e9e5f9532"]._props.Grids[0]._props.cellsV = this.mod.eodStash.vertical;
|
||||
this.items["5811ce772459770e9e5f9532"]._props.Grids[0]._props.cellsH = this.mod.eodStash.horizontal;
|
||||
this.logger.info(`Edge of Darkness Stash Vertical changed to ${this.mod.eodStash.vertical}`);
|
||||
this.logger.info(`Edge of Darkness Stash Horizontal changed to ${this.mod.eodStash.horizontal}`);
|
||||
}
|
||||
|
||||
// Toggles true/false the Examined By Default config on all items in database/templates/items.json
|
||||
if (this.mod.examinedByDefault)
|
||||
{
|
||||
this.examinedByDefault();
|
||||
this.logger.info(`Examined By Default is ${this.mod.examinedByDefault}`);
|
||||
}
|
||||
|
||||
// Roubles Max Stack
|
||||
if (this.mod.roublesMaxStack != 500000)
|
||||
{
|
||||
this.items["5449016a4bdc2d6f028b456f"]._props.StackMaxSize = this.modConfig.items.roublesMaxStack;
|
||||
this.logger.info(`Rouble Max Stack set to ${this.mod.roublesMaxStack}`, true);
|
||||
}
|
||||
|
||||
// Dollars Max Stack
|
||||
if (this.mod.dollarsMaxStack != 50000)
|
||||
{
|
||||
this.items["5696686a4bdc2da3298b456a"]._props.StackMaxSize = this.modConfig.items.dollarsMaxStack;
|
||||
this.logger.info(`Dollar Max Stack set to ${this.mod.dollarsMaxStack}`, true);
|
||||
}
|
||||
|
||||
// Euros Max Stack
|
||||
if (this.mod.eurosMaxStack != 50000)
|
||||
{
|
||||
this.items["569668774bdc2da2298b4568"]._props.StackMaxSize = this.modConfig.items.eurosMaxStack;
|
||||
this.logger.info(`Euro Max Stack set to ${this.mod.eurosMaxStack}`, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Functions Functions.
|
||||
|
||||
// Updates the weight modifier (as a multiplier) for all items in database/templates/items.json
|
||||
private updateWeight(): void
|
||||
{
|
||||
for (const item in this.items)
|
||||
{
|
||||
if (this.items[item]._props?.Weight)
|
||||
{
|
||||
this.items[item]._props.Weight *= this.mod.weightModifier;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Updates backpacks and removes any values in the ExcludedFilter under props > Grids > props > filters > ExcludedFilter in database/templates/items.json
|
||||
private updateBackpacks(): void
|
||||
{
|
||||
for (const item in this.items)
|
||||
{
|
||||
if (this.items[item]._parent === "5448e53e4bdc2d60728b4567")
|
||||
{
|
||||
this.items[item]._props.Grids[0]._props.filters[0].ExcludedFilter = [];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Updates the Examined By Default modifier for all items in database/templates/items.json to either True or False depending on the config value.
|
||||
private examinedByDefault(): void
|
||||
{
|
||||
for (const item in this.items)
|
||||
{
|
||||
this.items[item]._props.ExaminedByDefault = this.mod.examinedByDefault;
|
||||
}
|
||||
}
|
||||
|
||||
private removeKeyUsageMax(): void
|
||||
{
|
||||
for (const item in this.items)
|
||||
{
|
||||
if (this.items[item]._parent === "5c99f98d86f7745c314214b3")
|
||||
{
|
||||
this.items[item]._props.MaximumNumberOfUsage = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,130 +0,0 @@
|
||||
import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig";
|
||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||
import { Config } from "../config/config";
|
||||
import { Logger } from "./logger";
|
||||
|
||||
export class Loot
|
||||
{
|
||||
private modConfig: Config = require("../config/config.json");
|
||||
private logger: Logger;
|
||||
private tables: DatabaseServer;
|
||||
private locationConfig: ILocationConfig;
|
||||
|
||||
constructor (logger: Logger, databaseServer: DatabaseServer, locationConfig: ILocationConfig)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.locationConfig = locationConfig;
|
||||
this.tables = databaseServer.getTables();
|
||||
}
|
||||
|
||||
public updateLoot(): void
|
||||
{
|
||||
const mod = this.modConfig.loot;
|
||||
|
||||
if (mod.looseLootMultiplier > 1)
|
||||
{
|
||||
for (const map in this.locationConfig.looseLootMultiplier)
|
||||
{
|
||||
this.locationConfig.looseLootMultiplier[map] = mod.looseLootMultiplier;
|
||||
}
|
||||
this.logger.info(`Loose Loot Multiplier: ${mod.looseLootMultiplier}`);
|
||||
}
|
||||
|
||||
if (mod.staticLootMultiplier > 1)
|
||||
{
|
||||
for (const map in this.locationConfig.staticLootMultiplier)
|
||||
{
|
||||
this.locationConfig.staticLootMultiplier[map] = mod.staticLootMultiplier;
|
||||
}
|
||||
this.logger.info(`Static Loot Multiplier: ${mod.staticLootMultiplier}`);
|
||||
}
|
||||
|
||||
if (mod.containersInMarkedRoom)
|
||||
{
|
||||
this.containersInMarkedRoom();
|
||||
this.logger.info(`Containers In Marked Room: ${mod.containersInMarkedRoom}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes the loot database/tables to include containers in marked rooms.
|
||||
*
|
||||
* @variable containersInMarkedRoom Enables common containers (items case, weapon case, etc.) in Marked Rooms.
|
||||
*/
|
||||
private containersInMarkedRoom(): void
|
||||
{
|
||||
// Customs Marked Room Loot.
|
||||
let spawnPoints = this.tables.locations.bigmap.looseLoot.spawnpoints;
|
||||
const cstmsmarked1 = spawnPoints.find(x=>x.template.Id==="Loot 135 (10)1203364");
|
||||
const cstmsmarked2 = spawnPoints.find(x=>x.template.Id==="Loot 135 (9)1198014");
|
||||
const cstmsmarked3 = spawnPoints.find(x=>x.template.Id==="Loot 135 (8)1207194");
|
||||
|
||||
cstmsmarked1.itemDistribution.push(...this.containers());
|
||||
cstmsmarked2.itemDistribution.push(...this.containers());
|
||||
cstmsmarked3.itemDistribution.push(...this.containers());
|
||||
|
||||
// Reserve Marked Room Loot.
|
||||
spawnPoints = this.tables.locations.rezervbase.looseLoot.spawnpoints;
|
||||
const rsrvRBBK1 = spawnPoints.find(x=>x.template.Id==="Loot 135 (10)49516");
|
||||
const rsrvRBBK2 = spawnPoints.find(x=>x.template.Id==="Loot 135 (8)69186");
|
||||
const rsrvRBBK3 = spawnPoints.find(x=>x.template.Id==="Loot 135 (9)39600");
|
||||
|
||||
const rsrvRBPKPM1 = spawnPoints.find(x=>x.template.Id==="cult_Loot 135 (11)56822");
|
||||
const rsrvRBPKPM2 = spawnPoints.find(x=>x.template.Id==="cult_Loot 135 (12)56254");
|
||||
|
||||
const rsrvRBVO1 = spawnPoints.find(x=>x.template.Id==="Loot 135 (10)60780");
|
||||
const rsrvRBVO2 = spawnPoints.find(x=>x.template.Id==="Loot 135 (11)55578");
|
||||
const rsrvRBVO3 = spawnPoints.find(x=>x.template.Id==="Loot 135 (12)55522");
|
||||
|
||||
rsrvRBBK1.itemDistribution.push(...this.containers());
|
||||
rsrvRBBK2.itemDistribution.push(...this.containers());
|
||||
rsrvRBBK3.itemDistribution.push(...this.containers());
|
||||
|
||||
rsrvRBPKPM1.itemDistribution.push(...this.containers());
|
||||
rsrvRBPKPM2.itemDistribution.push(...this.containers());
|
||||
|
||||
rsrvRBVO1.itemDistribution.push(...this.containers());
|
||||
rsrvRBVO2.itemDistribution.push(...this.containers());
|
||||
rsrvRBVO3.itemDistribution.push(...this.containers());
|
||||
|
||||
// Lighthouse Marked Room Loot ... Lighthouse Marked Has No Cases; Only Jewelry/Electronics.
|
||||
/*const lhouseBdrm = spawnPoints.find(x=>x.template.Id==="");
|
||||
|
||||
lhouseBdrm.itemDistribution.push(...this.containers());*/
|
||||
}
|
||||
|
||||
private containers(): any[]
|
||||
{
|
||||
/* Container "id"s
|
||||
* S I C C pouch: 5d235bb686f77443f4331278
|
||||
* Magazine Case: 5c127c4486f7745625356c13
|
||||
* Weapon Case: 59fb023c86f7746d0d4b423c
|
||||
* T H I C C Weapon Case: 5b6d9ce188a4501afc1b2b25
|
||||
* Item Case: 59fb042886f7746c5005a7b2
|
||||
* T H I C C Item Case: 5c0a840b86f7742ffa4f2482
|
||||
* Money case: 59fb016586f7746d0d4b423a
|
||||
* Mr Holodilnick Thermal Bag: 5c093db286f7740a1b2617e3
|
||||
* Medicine case: 5aafbcd986f7745e590fff23
|
||||
* Lucky scav junkbox: 5b7c710788a4506dec015957
|
||||
* Grenade case: 5e2af55f86f7746d4159f07c
|
||||
* Secure container: 5448bf274bdc2dfc2f8b456a
|
||||
*/
|
||||
|
||||
const lootItems = [];
|
||||
lootItems.push({"tpl": "5d235bb686f77443f4331278", "relativeProbability": 12});
|
||||
lootItems.push({"tpl": "5c127c4486f7745625356c13", "relativeProbability": 25});
|
||||
lootItems.push({"tpl": "59fb023c86f7746d0d4b423c", "relativeProbability": 13});
|
||||
lootItems.push({"tpl": "5b6d9ce188a4501afc1b2b25", "relativeProbability": 10});
|
||||
lootItems.push({"tpl": "59fb042886f7746c5005a7b2", "relativeProbability": 13});
|
||||
lootItems.push({"tpl": "5c0a840b86f7742ffa4f2482", "relativeProbability": 10});
|
||||
lootItems.push({"tpl": "59fb016586f7746d0d4b423a", "relativeProbability": 25});
|
||||
lootItems.push({"tpl": "5c093db286f7740a1b2617e3", "relativeProbability": 30});
|
||||
lootItems.push({"tpl": "5aafbcd986f7745e590fff23", "relativeProbability": 30});
|
||||
lootItems.push({"tpl": "5b7c710788a4506dec015957", "relativeProbability": 15});
|
||||
lootItems.push({"tpl": "5e2af55f86f7746d4159f07c", "relativeProbability": 23});
|
||||
lootItems.push({"tpl": "5448bf274bdc2dfc2f8b456a", "relativeProbability": 9});
|
||||
|
||||
return lootItems;
|
||||
}
|
||||
}
|
||||
|
@ -1,291 +0,0 @@
|
||||
import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig";
|
||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||
import { Logger } from "./logger";
|
||||
import { Config } from "../config/config";
|
||||
|
||||
export class Progression
|
||||
{
|
||||
private modConfig: Config = require("../config/config.json");
|
||||
private logger: Logger;
|
||||
private botConfig: IBotConfig;
|
||||
private tables: DatabaseServer;
|
||||
|
||||
constructor(logger: Logger, databaseServer: DatabaseServer, botConfig: IBotConfig)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.botConfig = botConfig;
|
||||
this.tables = databaseServer.getTables();
|
||||
}
|
||||
|
||||
public updateProgression(): void
|
||||
{
|
||||
|
||||
// modConfig variables
|
||||
const mod = this.modConfig.progression;
|
||||
|
||||
|
||||
// Server side variables
|
||||
|
||||
|
||||
if (mod.enabled)
|
||||
{
|
||||
this.generateProgression();
|
||||
this.logger.info("Progressional Gear Changes Injected");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Functions start here
|
||||
|
||||
|
||||
private generateProgression()
|
||||
{
|
||||
const primaryWeaponArrayLL1 = ["574d967124597745970e7c94", "57d14d2524597714373db789", "57f4c844245977379d5c14d1", "59984ab886f7743e98271174", "5ea03f7400685063ec28bfa8", "5ae08f0a5acfc408fb1398a1", "5bfd297f0db834001a669119", "59d6088586f774275f37482f", "583990e32459771419544dd2", "59e6152586f77473dc057aa1", "5c07c60e0db834002330051f", "5a38e6bac4a2826c6e06d79b", "56dee2bdd2720bc8328b4567", "5447a9cd4bdc2dbd208b4567", "5d2f0d8048f0356c925bc3b0", "5d2f0d8048f0356c925bc3b0", "5fc3e272f8b6a877a729eac5", "58948c8e86f77409493f7266", "5644bd2b4bdc2d3b4c8b4572", "59e6687d86f77411d949b251", "54491c4f4bdc2db1078b4568", "5ba26383d4351e00334c93d9", "587e02ff24597743df3deaeb", "5c501a4d2e221602b412b540", "60db29ce99594040e04c4a27", "5580223e4bdc2d1c128b457f", "61f7c9e189e6fb1a5e3ea78d", "5e870397991fd70db46995c8", "5de652c31b7e3716273428be"];
|
||||
const primaryWeaponArrayLL2 = primaryWeaponArrayLL1.concat(...["5839a40f24597726f856b511", "59ff346386f77477562ff5e2", "5ab8e9fcd8ce870019439434", "5bf3e03b0db834001d2c4a9c", "55801eed4bdc2d89578b4588", "5fbcc1d9016cce60e8341ab3", "628b5638ad252a16da6dd245", "5f2a9575926fd9352339381f", "5a7828548dc32e5a9c28b516", "60339954d62c9b14ed777c06", "6184055050224f204c1da540", "623063e994fc3f7b302a9696", "5e00903ae9dc277128008b87", "5ac66cb05acfc40198510a10", "5aafa857e5b5b00018480968", "5cc82d76e24e8d00134b4b83", "5bfea6e90db834001b7347f3", "576165642459773c7a400233", "606dae0ab0e443224b421bb7"]);
|
||||
const primaryWeaponArrayLL3 = primaryWeaponArrayLL2.concat(...["5ac66d725acfc43b321d4b60", "5a0ec13bfcdbcb00165aa685", "5abcbc27d8ce8700182eceeb", "5ac4cd105acfc40016339859", "5ac66d2e5acfc43b321d4b53", "5ac66d9b5acfc4001633997a", "5beed0f50db834001c062b12", "57838ad32459774a17445cd2", "5c46fbd72e2216398b5a8c9c", "5e848cc2988a8701445df1e8", "5d43021ca4b9362eab4b5e25", "588892092459774ac91d4b11", "5c488a752e221602b412af63", "5b0bbe4e5acfc40dc528a72d", "618428466ef05c2ce828f218", "5a367e5dc4a282000e49738f", "5df8ce05b11454561e39243b", "6176aca650224f204c1da3fb", "628a60ae6b1d481ff772e9c8", "6183afd850224f204c1da514", "6165ac306ef05c2ce828ef74", "6259b864ebedf17603599e88"]);
|
||||
|
||||
const holsterArrayLL1 = ["5448bd6b4bdc2dfc2f8b4569", "571a12c42459771f627b58a0", "576a581d2459771e7b1bc4f1", "5a17f98cfcdbcb0980087290", "5e81c3cbac2bb513793cdc75", "5cadc190ae921500103bb3b6", "56d59856d2720bd8418b456a", "5a7ae0c351dfba0017554310"];
|
||||
const holsterArrayLL2 = holsterArrayLL1.concat(...["61a4c8884f95bc3b2c5dc96f", "56e0598dd2720bb5668b45a6", "59f98b4986f7746f546d2cef", "602a9740da11d6478d5a06dc", "6193a720f8ee7e52e42109ed"]);
|
||||
const holsterArrayLL3 = holsterArrayLL2.concat(...["5abccb7dd8ce87001773e277", "5d3eb3b0a4b93615055e84d2", "5b1fa9b25acfc40018633c01"]);
|
||||
|
||||
|
||||
const backpackArrayLL1 = ["5ab8ee7786f7742d8f33f0b9", "544a5cde4bdc2d39388b456b", "5e9dcf5986f7746c417435b3", "5ab8f04f86f774585f4237d8", "5ca20d5986f774331e7c9602"];
|
||||
const backpackArrayLL2 = backpackArrayLL1.concat(...["545cdae64bdc2d39198b4568", "60a2828e8689911a226117f9", "618bb76513f5097c8d5aa2d5", "5f5e467b0bc58666c37e7821", "5ab8ebf186f7742d8b372e80"]);
|
||||
const backpackArrayLL3 = backpackArrayLL2.concat(...["5f5e46b96bdad616ad46d613", "5d5d940f86f7742797262046", "60a272cc93ef783291411d8e", "6034d103ca006d2dca39b3f0", "619cf0335771dd3c390269ae", "628e1ffc83ec92260c0f437f"]);
|
||||
|
||||
|
||||
const tacticalVestArrayLL1 = ["5929a2a086f7744f4b234d43", "5e4abc1f86f774069619fbaa", "6034d0230ca681766b6a0fb5", "6034cf5fffd42c541047f72e", "572b7adb24597762ae139821", "5c0e3eb886f7742015526062"];
|
||||
const tacticalVestArrayLL2 = tacticalVestArrayLL1.concat(...["5d5d8ca986f7742798716522", "544a5caa4bdc2d1a388b4568", "5c0e446786f7742013381639", "592c2d1a86f7746dbe2af32a", "5d5d85c586f774279a21cbdb", "59e7643b86f7742cbf2c109", "5b44c8ea86f7742d1627baf1", "5ca20abf86f77418567a43f2", "5d5d646386f7742797261fd9", "5fd4c60f875c30179f5d04c2", "60a6220e953894617404b00a", "61bc85697113f767765c7fe7", "603648ff5a45383c122086ac", "5e4abfed86f77406a2713cf7"]);
|
||||
const tacticalVestArrayLL3 = tacticalVestArrayLL2.concat(...["60a3c70cde5f453f634816a3", "5648a69d4bdc2ded0b8b457b", "5ab8dced86f774646209ec87", "5ab8dab586f77441cd04f2a2", "60a621c49c197e4e8c4455e6", "5b44cad286f77402a54ae7e5", "5c0e6a1586f77404597b4965", "5c0e722886f7740458316a57", "5c0e746986f7741453628fe5", "5d5d87f786f77427997cfaef", "5df8a42886f77412640e2e75", "628d0618d1ba6e4fa07ce5a4", "61bcc89aef0f505f0c6cd0fc", "628dc750b910320f4c27a732", "628cd624459354321c4b7fa2"]);
|
||||
|
||||
|
||||
const earpieceArrayLL1 = ["5b432b965acfc47a8774094e", "6033fa48ffd42c541047f728"];
|
||||
const earpieceArrayLL2 = earpieceArrayLL1.concat(...["5645bcc04bdc2d363b8b4572", "5aa2ba71e5b5b000137b758f"]);
|
||||
const earpieceArrayLL3 = earpieceArrayLL2.concat(...["5a16b9fffcdbcb0176308b34"]);
|
||||
|
||||
|
||||
const headwearArrayLL1 = ["5a7c4850e899ef00150be885", "5aa7d193e5b5b000171d063f", "5c06c6a80db834001b735491", "59e7711e86f7746cae05fbe1", "5ac4c50d5acfc40019262e87", "5645bc214bdc2d363b8b4571", "5aa2a7e8e5b5b00016327c16", "5b40e61f5acfc4001a599bec", "5aa2b87de5b5b00016327c25", "5b40e5e25acfc4001a599bea"];
|
||||
const headwearArrayLL2 = headwearArrayLL1.concat(...["5aa7d03ae5b5b00016327db5", "5d5e7d28a4b936645d161203", "5aa7e454e5b5b0214e506fa2", "5aa7e3abe5b5b000171d064d", "5b40e4035acfc47a87740943", "5b432d215acfc4771e1c6624", "5f60e784f2bcbb675b00dac7", "5aa2ba19e5b5b00014028f4e", "5b43271c5acfc432ff4dce65", "60b52e5bc7d8103275739d67", "5a16b672fcdbcb001912fa83"]);
|
||||
const headwearArrayLL3 = headwearArrayLL2.concat(...["5ac8d6885acfc400180ae7b0", "5a154d5cfcdbcb001a3b00da", "5e00c1ad86f774747333222c", "5b40e3f35acfc40016388218", "5b4329f05acfc47a86086aa1", "5d6d3716a4b9361bc8618872", "5aa2b9ede5b5b000137b758b", "5c091a4e0db834001d5addc8", "5f60e7788adaa7100c3adb49", "5f60e6403b85f6263c14558c", "5aa7e373e5b5b000137b76f0"]);
|
||||
|
||||
|
||||
const armorVestArrayLL1 = ["5df8a2ca86f7740bfe6df777", "5ab8e4ed86f7742d8e50c7fa", "5648a7494bdc2d9d488b4583", "5c0e5bab86f77461f55ed1f3", "5c0e5edb86f77461f55ed1f7", "62a09d79de7ac81993580530"];
|
||||
const armorVestArrayLL2 = armorVestArrayLL1.concat(...["5b44d22286f774172b0c9de8", "5c0e51be86f774598e797894"])
|
||||
const armorVestArrayLL3 = armorVestArrayLL2.concat(...["5f5f41476bdad616ad46d631", "545cdb794bdc2d3a198b456a", "5ab8e79e86f7742d8b372e78", "5b44d0de86f774503d30cba8", "5c0e53c886f7747fa54205c7", "5c0e57ba86f7747fa141986d", "5ca2151486f774244a3b8d30", "609e8540d5c319764c2bc2e9"]);
|
||||
|
||||
const eyewearArrayLL1 = ["5aa2b986e5b5b00014028f4c", "557ff21e4bdc2d89578b4586", "5b432be65acfc433000ed01f"];
|
||||
const eyewearArrayLL2 = eyewearArrayLL1.concat(...["5d5fca1ea4b93635fd598c07"]);
|
||||
const eyewearArrayLL3 = eyewearArrayLL2.concat(...["603409c80ca681766b6a0fb2", "5c0d32fcd174af02a1659c75", "5d6d2e22a4b9361bd5780d05"]);
|
||||
|
||||
const armBandArrayLL1 = ["5b3f16c486f7747c327f55f7", "5b3f3ade86f7746b6b790d8e", "5b3f3af486f774679e752c1f", "5b3f3b0186f774021a2afef7", "5b3f3b0e86f7746752107cda"];
|
||||
const armBandArrayLL2 = armBandArrayLL1;
|
||||
const armBandArrayLL3 = armBandArrayLL2.concat(...["619bdf9cc9546643a67df6f8", "619bc61e86e01e16f839a999", "619bdfd4c9546643a67df6fa", "619bdd8886e01e16f839a99c", "60b0f988c4449e4cb624c1da", "5f9949d869e2777a0e779ba5"]);
|
||||
|
||||
const faceCoverArrayLL1 = ["572b7f1624597762ae139822"];
|
||||
const faceCoverArrayLL2 = faceCoverArrayLL1.concat(...["5ab8f39486f7745cd93a1cca", "5b4325355acfc40019478126"]);
|
||||
const faceCoverArrayLL3 = faceCoverArrayLL2.concat(...["5ab8f85d86f7745cd93a1cf5", "5b432f3d5acfc4704b4a1dfb"]);
|
||||
|
||||
const ammo127x55ArrayLL3 = ["5cadf6e5ae921500113bb973", "5cadf6eeae921500134b2799"];
|
||||
|
||||
const ammo762x54ArrayLL1 = ["5887431f2459777e1612938f"];
|
||||
const ammo762x54ArrayLL2 = ammo762x54ArrayLL1.concat(...["5e023cf8186a883be655e54f"]);
|
||||
const ammo762x54ArrayLL3 = ammo762x54ArrayLL2.concat(...["59e77a2386f7742ee578960a", "560d61e84bdc2da74d8b4571"]);
|
||||
|
||||
const ammo762x51ArrayLL1 = ["5e023e6e34d52a55c3304f71"];
|
||||
const ammo762x51ArrayLL2 = ammo762x51ArrayLL1.concat(...["5e023e53d4353e3302577c4c"]);
|
||||
const ammo762x51ArrayLL3 = ammo762x51ArrayLL2.concat(...["58dd3ad986f77403051cba8f", "5a608bf24f39f98ffc77720e", "5a6086ea4f39f99cd479502f"]);
|
||||
|
||||
const ammo762x39ArrayLL1 = ["5656d7c34bdc2d9d198b4587", "59e4d3d286f774176a36250a"];
|
||||
const ammo762x39ArrayLL2 = ammo762x39ArrayLL1.concat(...["59e4cf5286f7741778269d8a"]);
|
||||
const ammo762x39ArrayLL3 = ammo762x39ArrayLL2.concat(...["59e4d24686f7741776641ac7", "59e0d99486f7744a32234762"]);
|
||||
|
||||
const ammo762x35ArrayLL2 = ["5fbe3ffdf8b6a877a729ea82"];
|
||||
const ammo762x35ArrayLL3 = ammo762x35ArrayLL2.concat(...["6196365d58ef8c428c287da1", "619636be6db0f2477964e710"]);
|
||||
|
||||
const ammo762x25TTArrayLL1 = ["5735fdcd2459776445391d61", "5735ff5c245977640e39ba7e", "573601b42459776410737435", "573602322459776445391df1"];
|
||||
const ammo762x25TTArrayLL2 = ammo762x25TTArrayLL1.concat(...["5736026a245977644601dc61", "573603c924597764442bd9cb"]);
|
||||
const ammo762x25TTArrayLL3 = ammo762x25TTArrayLL2.concat(...["573603562459776430731618"]);
|
||||
|
||||
const ammo366TKMArrayLL1 = ["59e6542b86f77411dc52a77a", "59e655cb86f77411dc52a77b"];
|
||||
const ammo366TKMArrayLL2 = ammo366TKMArrayLL1.concat(...["59e6658b86f77411d949b250"]);
|
||||
const ammo366TKMArrayLL3 = ammo366TKMArrayLL2.concat(...["5f0596629e22f464da6bbdd9"]);
|
||||
|
||||
const ammo556x45ArrayLL1 = ["59e6920f86f77411d82aa167", "54527a984bdc2d4e668b4567", "59e68f6f86f7746c9f75e846", "59e6927d86f77411da468256"];
|
||||
const ammo556x45ArrayLL2 = ammo556x45ArrayLL1.concat(...["59e6918f86f7746c9f75e849", "59e6906286f7746c9f75e847"]);
|
||||
const ammo556x45ArrayLL3 = ammo556x45ArrayLL2.concat(...["60194943740c5d77f6705eea", "59e690b686f7746c9f75e848", "5c0d5ae286f7741e46554302"]);
|
||||
|
||||
const ammo545x39ArrayLL1 = ["56dff338d2720bbd668b4569", "56dff4a2d2720bbd668b456a", "56dff3afd2720bba668b4567"];
|
||||
const ammo545x39ArrayLL2 = ammo545x39ArrayLL1.concat(...["56dff2ced2720bb4668b4567", "56dff4ecd2720b5f5a8b4568", "56dff421d2720b5f5a8b4567"]);
|
||||
const ammo545x39ArrayLL3 = ammo545x39ArrayLL2.concat(...["56dfef82d2720bbd668b4567", "56dff061d2720bb5668b4567", "56dff026d2720bb8668b4567", "5c0d5e4486f77478390952fe"]);
|
||||
|
||||
const ammo57x28ArrayLL2 = ["5cc80f8fe4a949033b0224a2"];
|
||||
const ammo57x28ArrayLL3 = ammo57x28ArrayLL2.concat(...["5cc80f38e4a949001152b560", "5cc80f53e4a949000e1ea4f8", "5cc80f67e4a949035e43bbba", "5cc80f79e4a949033c7343b2", "5cc86840d7f00c002412c56c"]);
|
||||
|
||||
const ammo46x30ArrayLL1 = ["5ba26812d4351e003201fef1"];
|
||||
const ammo46x30ArrayLL2 = ammo46x30ArrayLL1;
|
||||
const ammo46x30ArrayLL3 = ammo46x30ArrayLL2.concat(...["5ba2678ad4351e44f824b344", "5ba26844d4351e00334c9475"]);
|
||||
|
||||
const ammo9x18ArrayLL1 = ["573719762459775a626ccbc1", "57371e4124597760ff7b25f1", "57371eb62459776125652ac1", "57371f2b24597761224311f1", "5737201124597760fc4431f1", "5737207f24597760ff7b25f2"];
|
||||
const ammo9x18ArrayLL2 = ammo9x18ArrayLL1.concat(...["57371b192459775a9f58a5e0"]);
|
||||
const ammo9x18ArrayLL3 = ammo9x18ArrayLL2.concat(...["573718ba2459775a75491131", "573719df2459775a626ccbc2", "57371aab2459775a77142f22", "573720e02459776143012541", "57372140245977611f70ee91", "5737218f245977612125ba51"]);
|
||||
|
||||
const ammo9x19ArrayLL1 = ["58864a4f2459770fcc257101", "5c3df7d588a4501f290594e5"];
|
||||
const ammo9x19ArrayLL2 = ammo9x19ArrayLL1.concat(...["56d59d3ad2720bdb418b4577"]);
|
||||
const ammo9x19ArrayLL3 = ammo9x19ArrayLL2.concat(...["5c925fa22e221601da359b7b", "5efb0e16aeb21837e749c7ff", "5efb0da7a29a85116f6ea05f"]);
|
||||
|
||||
const ammo9x21ArrayLL2 = ["5a26abfac4a28232980eabff"];
|
||||
const ammo9x21ArrayLL3 = ammo9x21ArrayLL2.concat(...["5a269f97c4a282000b151807", "5a26ac06c4a282000c5a90a8"]);
|
||||
|
||||
const ammo9x39ArrayLL2 = ["57a0dfb82459774d3078b56c"];
|
||||
const ammo9x39ArrayLL3 = ammo9x39ArrayLL2.concat(...["57a0e5022459774d1673f889", "5c0d688c86f77413ae3407b2", "5c0d668f86f7747ccb7f13b2"]);
|
||||
|
||||
const ammo9x33RArrayLL2 = ["62330b3ed4dc74626d570b95", "62330bfadc5883093563729b", "62330c40bdd19b369e1e53d1"];
|
||||
const ammo9x33RArrayLL3 = ammo9x33RArrayLL2.concat(...["62330c18744e5e31df12f516"]);
|
||||
|
||||
const ammo1143x23ACPArrayLL1 = ["5e81f423763d9f754677bf2e"];
|
||||
const ammo1143x23ACPArrayLL2 = ammo1143x23ACPArrayLL1.concat(...["5efb0d4f4bc50b58e81710f3"]);
|
||||
const ammo1143x23ACPArrayLL3 = ammo1143x23ACPArrayLL2.concat(...["5efb0cabfb3e451d70735af5", "5efb0fc6aeb21837e749c801"]);
|
||||
|
||||
const ammo12x70ArrayLL1 = ["560d5e524bdc2d25448b4571", "5d6e6772a4b936088465b17c", "5d6e67fba4b9361bc73bc779", "58820d1224597753c90aeb13", "5d6e6869a4b9361c140bcfde", "5d6e6891a4b9361bd473feea", ];
|
||||
const ammo12x70ArrayLL2 = ammo12x70ArrayLL1.concat(...["5d6e6806a4b936088465b17e", "5d6e689ca4b9361bc8618956", "5d6e68e6a4b9361c140bcfe0"]);
|
||||
const ammo12x70ArrayLL3 = ammo12x70ArrayLL2.concat(...["5d6e68b3a4b9361bca7e50b5", "5d6e68dea4b9361bcc29e659", "5d6e68a8a4b9360b6c0d54e2", "5d6e6911a4b9361bd5780d52", "5d6e68c4a4b9361b93413f79", "5c0d591486f7744c505b416f"]);
|
||||
|
||||
const ammo20x70ArrayLL1 = ["5a38ebd9c4a282000d722a5b", "5d6e695fa4b936359b35d852", "5d6e6a42a4b9364f07165f52", "5d6e6a53a4b9361bd473feec"];
|
||||
const ammo20x70ArrayLL2 = ammo20x70ArrayLL1.concat(...["5d6e69b9a4b9361bc8618958", "5d6e69c7a4b9360b6c0d54e4"]);
|
||||
const ammo20x70ArrayLL3 = ammo20x70ArrayLL2.concat(...["5d6e6a05a4b93618084f58d0", "5d6e6a5fa4b93614ec501745"]);
|
||||
|
||||
const ammo23x75ArrayLL3 = ["5e85a9a6eacf8c039e4e2ac1", "5f647f31b6238e5dd066e196"];
|
||||
|
||||
|
||||
const progressionWhitelistLL1: IBotConfig.Equipment.whitelist.EquipmentFilterDetails =
|
||||
{
|
||||
"levelRange":
|
||||
{
|
||||
"min": 1,
|
||||
"max": 15
|
||||
},
|
||||
"equipment":
|
||||
{
|
||||
"FirstPrimaryWeapon": [...primaryWeaponArrayLL1],
|
||||
"Holster": [...holsterArrayLL1],
|
||||
"Backpack": [...backpackArrayLL1],
|
||||
"TacticalVest": [...tacticalVestArrayLL1],
|
||||
"Earpiece": [...earpieceArrayLL1],
|
||||
"Headwear": [...headwearArrayLL1],
|
||||
"ArmorVest": [...armorVestArrayLL1],
|
||||
"Eyewear": [...eyewearArrayLL1],
|
||||
"ArmBand": [...armBandArrayLL1],
|
||||
"FaceCover": [...faceCoverArrayLL1]
|
||||
},
|
||||
"cartridge":
|
||||
{
|
||||
"Caliber762x54R": [...ammo762x54ArrayLL1],
|
||||
"Caliber762x51": [...ammo762x51ArrayLL1],
|
||||
"Caliber762x39": [...ammo762x39ArrayLL1],
|
||||
"Caliber762x25TT": [...ammo762x25TTArrayLL1],
|
||||
"Caliber366TKM": [...ammo366TKMArrayLL1],
|
||||
"Caliber556x45NATO": [...ammo556x45ArrayLL1],
|
||||
"Caliber545x39": [...ammo545x39ArrayLL1],
|
||||
"Caliber46x30": [...ammo46x30ArrayLL1],
|
||||
"Caliber1143x23ACP": [...ammo1143x23ACPArrayLL1],
|
||||
"Caliber9x19PARA": [...ammo9x19ArrayLL1],
|
||||
"Caliber9x18PM": [...ammo9x18ArrayLL1],
|
||||
"Caliber12g": [...ammo12x70ArrayLL1],
|
||||
"Caliber20g": [...ammo20x70ArrayLL1]
|
||||
}
|
||||
}
|
||||
|
||||
const progressionWhitelistLL2: IBotConfig.Equipment.whitelist.EquipmentFilterDetails =
|
||||
{
|
||||
"levelRange":
|
||||
{
|
||||
"min": 16,
|
||||
"max": 25
|
||||
},
|
||||
"equipment":
|
||||
{
|
||||
"FirstPrimaryWeapon": [...primaryWeaponArrayLL2],
|
||||
"Holster": [...holsterArrayLL2],
|
||||
"Backpack": [...backpackArrayLL2],
|
||||
"TacticalVest": [...tacticalVestArrayLL2],
|
||||
"Earpiece": [...earpieceArrayLL2],
|
||||
"Headwear": [...headwearArrayLL2],
|
||||
"ArmorVest": [...armorVestArrayLL2],
|
||||
"Eyewear": [...eyewearArrayLL2],
|
||||
"ArmBand": [...armBandArrayLL2],
|
||||
"FaceCover": [...faceCoverArrayLL2]
|
||||
},
|
||||
"cartridge":
|
||||
{
|
||||
"Caliber762x54R": [...ammo762x54ArrayLL2],
|
||||
"Caliber762x51": [...ammo762x51ArrayLL2],
|
||||
"Caliber762x39": [...ammo762x39ArrayLL2],
|
||||
"Caliber762x35": [...ammo762x35ArrayLL2],
|
||||
"Caliber762x25TT": [...ammo762x25TTArrayLL2],
|
||||
"Caliber366TKM": [...ammo366TKMArrayLL2],
|
||||
"Caliber556x45NATO": [...ammo556x45ArrayLL2],
|
||||
"Caliber545x39": [...ammo545x39ArrayLL2],
|
||||
"Caliber57x28": [...ammo57x28ArrayLL2],
|
||||
"Caliber46x30": [...ammo46x30ArrayLL2],
|
||||
"Caliber1143x23ACP": [...ammo1143x23ACPArrayLL2],
|
||||
"Caliber9x39": [...ammo9x39ArrayLL2],
|
||||
"Caliber9x33R": [...ammo9x33RArrayLL2],
|
||||
"Caliber9x21": [...ammo9x21ArrayLL2],
|
||||
"Caliber9x19PARA": [...ammo9x19ArrayLL2],
|
||||
"Caliber9x18PM": [...ammo9x18ArrayLL2],
|
||||
"Caliber12g": [...ammo12x70ArrayLL2],
|
||||
"Caliber20g": [...ammo20x70ArrayLL2]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const progressionWhitelistLL3: IBotConfig.Equipment.whitelist.EquipmentFilterDetails =
|
||||
{
|
||||
"levelRange":
|
||||
{
|
||||
"min": 26,
|
||||
"max": 36
|
||||
},
|
||||
"equipment":
|
||||
{
|
||||
"FirstPrimaryWeapon": [...primaryWeaponArrayLL3],
|
||||
"Holster": [...holsterArrayLL3],
|
||||
"Backpack": [...backpackArrayLL3],
|
||||
"TacticalVest": [...tacticalVestArrayLL3],
|
||||
"Earpiece": [...earpieceArrayLL3],
|
||||
"Headwear": [...headwearArrayLL3],
|
||||
"ArmorVest": [...armorVestArrayLL3],
|
||||
"Eyewear": [...eyewearArrayLL3],
|
||||
"ArmBand": [...armBandArrayLL3],
|
||||
"FaceCover": [...faceCoverArrayLL3]
|
||||
},
|
||||
"cartridge":
|
||||
{
|
||||
"Caliber127x55": [...ammo127x55ArrayLL3],
|
||||
"Caliber762x54R": [...ammo762x54ArrayLL3],
|
||||
"Caliber762x51": [...ammo762x51ArrayLL3],
|
||||
"Caliber762x39": [...ammo762x39ArrayLL3],
|
||||
"Caliber762x35": [...ammo762x35ArrayLL3],
|
||||
"Caliber762x25TT": [...ammo762x25TTArrayLL3],
|
||||
"Caliber366TKM": [...ammo366TKMArrayLL3],
|
||||
"Caliber556x45NATO": [...ammo556x45ArrayLL3],
|
||||
"Caliber545x39": [...ammo545x39ArrayLL3],
|
||||
"Caliber57x28": [...ammo57x28ArrayLL3],
|
||||
"Caliber46x30": [...ammo46x30ArrayLL3],
|
||||
"Caliber1143x23ACP": [...ammo1143x23ACPArrayLL3],
|
||||
"Caliber9x39": [...ammo9x39ArrayLL3],
|
||||
"Caliber9x33R": [...ammo9x33RArrayLL3],
|
||||
"Caliber9x21": [...ammo9x21ArrayLL3],
|
||||
"Caliber9x19PARA": [...ammo9x19ArrayLL3],
|
||||
"Caliber9x18PM": [...ammo9x18ArrayLL3],
|
||||
"Caliber12g": [...ammo12x70ArrayLL3],
|
||||
"Caliber20g": [...ammo20x70ArrayLL3],
|
||||
"Caliber23x75": [...ammo23x75ArrayLL3]
|
||||
}
|
||||
}
|
||||
|
||||
this.botConfig.equipment.pmc.whitelist.push(progressionWhitelistLL1);
|
||||
this.botConfig.equipment.pmc.whitelist.push(progressionWhitelistLL2);
|
||||
this.botConfig.equipment.pmc.whitelist.push(progressionWhitelistLL3);
|
||||
}
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
import { Logger } from "./logger";
|
||||
import { Config } from "../config/config";
|
||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||
|
||||
export class Quests
|
||||
{
|
||||
private modConfig: Config = require("../config/config.json");
|
||||
private logger: Logger;
|
||||
private tables: DatabaseServer;
|
||||
|
||||
constructor(logger: Logger, databaseServer: DatabaseServer)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.tables = databaseServer.getTables();
|
||||
}
|
||||
|
||||
public updateQuests(): void
|
||||
{
|
||||
if (!this.modConfig.quests.onlyFoundInRaid)
|
||||
{
|
||||
this.onlyFoundInRaid();
|
||||
this.logger.info("Quest Items No Longer Need Be Found In Raid");
|
||||
}
|
||||
}
|
||||
|
||||
// Updates the weight modifier (as a multiplier) for all items in database/templates/items.json
|
||||
private onlyFoundInRaid(): void
|
||||
{
|
||||
const quests = this.tables.templates.quests;
|
||||
|
||||
for (const questid in quests)
|
||||
{
|
||||
const questsAvailableForFinishConditions = quests[questid].conditions.AvailableForFinish;
|
||||
const findItemConditions = questsAvailableForFinishConditions.find(x=>x.parent === "FindItem");
|
||||
|
||||
if (!findItemConditions)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (findItemConditions._props.onlyFoundInRaid)
|
||||
{
|
||||
findItemConditions._props.onlyFoundInRaid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||
import { Config } from "../config/config";
|
||||
import { Logger } from "./logger";
|
||||
|
||||
export class Weapons
|
||||
{
|
||||
private modConfig: Config = require("../config/config.json")
|
||||
private logger: Logger;
|
||||
private tables: DatabaseServer;
|
||||
private mod: any;
|
||||
private weapons: any;
|
||||
|
||||
constructor(logger:Logger, databaseServer: DatabaseServer)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.tables = databaseServer.getTables();
|
||||
}
|
||||
|
||||
public updateWeapons(): void
|
||||
{
|
||||
this.mod = this.modConfig.weapons;
|
||||
|
||||
if (this.mod.overheat || this.mod.jam || this.mod.slide || this.mod.misfeed || this.mod.misfire)
|
||||
{
|
||||
this.weaponMalfunctions();
|
||||
this.logger.info("Weapon Malfunctions Patched", true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private weaponMalfunctions(): void
|
||||
{
|
||||
const items = this.tables.templates.items;
|
||||
|
||||
for (const id in items)
|
||||
{
|
||||
const base = items[id];
|
||||
|
||||
//Weapons malfunctions
|
||||
|
||||
if (this.mod.jam && base._props.AllowJam)
|
||||
{
|
||||
base._props.AllowJam = false;
|
||||
}
|
||||
|
||||
if (this.mod.misfire && base._props.AllowMisfire)
|
||||
{
|
||||
base._props.AllowMisfire = false;
|
||||
}
|
||||
|
||||
if (this.mod.feed && base._props.AllowFeed)
|
||||
{
|
||||
base._props.AllowFeed = false;
|
||||
}
|
||||
|
||||
if (this.mod.overheat && base._props.AllowOverheat)
|
||||
{
|
||||
base._props.AllowOverheat = false;
|
||||
}
|
||||
|
||||
if (this.mod.slide && base._props.AllowSlide)
|
||||
{
|
||||
base._props.AllowSlide = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
import { OnLoad } from "../di/OnLoad";
|
||||
import { IHttpServer } from "../models/spt/server/IHttpServer";
|
||||
export declare class HttpCallbacks extends OnLoad {
|
||||
protected httpServer: IHttpServer;
|
||||
constructor(httpServer: IHttpServer);
|
||||
onLoad(): void;
|
||||
getRoute(): string;
|
||||
getImage(): string;
|
||||
}
|
23
Valens-AIO/types/callbacks/InraidCallbacks.d.ts
vendored
23
Valens-AIO/types/callbacks/InraidCallbacks.d.ts
vendored
@ -1,23 +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 { IAirdropConfig } from "../models/spt/config/IAirdropConfig";
|
||||
import { IInRaidConfig } from "../models/spt/config/IInRaidConfig";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
||||
export declare class InraidCallbacks {
|
||||
protected inraidController: InraidController;
|
||||
protected httpResponse: HttpResponseUtil;
|
||||
protected configServer: ConfigServer;
|
||||
protected airdropConfig: IAirdropConfig;
|
||||
protected inraidConfig: IInRaidConfig;
|
||||
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,9 +0,0 @@
|
||||
import { OnLoadOnUpdate } from "../di/OnLoadOnUpdate";
|
||||
import { SaveServer } from "../servers/SaveServer";
|
||||
export declare class SaveCallbacks extends OnLoadOnUpdate {
|
||||
protected saveServer: SaveServer;
|
||||
constructor(saveServer: SaveServer);
|
||||
onLoad(): void;
|
||||
getRoute(): string;
|
||||
onUpdate(secondsSinceLastRun: number): boolean;
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
export declare enum ContextVariableType {
|
||||
SESSION_ID = 0,
|
||||
MATCH_INFO = 1
|
||||
}
|
35
Valens-AIO/types/controllers/BotController.d.ts
vendored
35
Valens-AIO/types/controllers/BotController.d.ts
vendored
@ -1,35 +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 { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
export declare class BotController {
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected botGenerator: BotGenerator;
|
||||
protected botHelper: BotHelper;
|
||||
protected configServer: ConfigServer;
|
||||
protected botConfig: IBotConfig;
|
||||
constructor(databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, configServer: ConfigServer);
|
||||
/**
|
||||
* Return the number of bot loadout varieties to be generated
|
||||
* @param type bot Type we want the loadout gen count for
|
||||
* @returns
|
||||
*/
|
||||
getBotPresetGenerationLimit(type: string): number;
|
||||
getBotCoreDifficulty(): IBotCore;
|
||||
/**
|
||||
* Get bot difficulty settings
|
||||
* adjust PMC settings to ensure they engage the correct bot types
|
||||
* @param type what bot the server is requesting settings for
|
||||
* @param difficulty difficulty level server requested settings for
|
||||
* @returns Difficulty object
|
||||
*/
|
||||
getBotDifficulty(type: string, difficulty: string): Difficulty;
|
||||
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string): Difficulty;
|
||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||
getBotCap(): number;
|
||||
}
|
@ -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, Message } from "../models/eft/profile/IAkiProfile";
|
||||
import { SaveServer } from "../servers/SaveServer";
|
||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
||||
export declare class DialogueController {
|
||||
protected httpResponse: HttpResponseUtil;
|
||||
protected saveServer: SaveServer;
|
||||
protected dialogueHelper: 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;
|
||||
protected messagesHaveUncollectedRewards(messages: Message[]): boolean;
|
||||
protected removeExpiredItems(sessionID: string): void;
|
||||
update(): void;
|
||||
}
|
28
Valens-AIO/types/controllers/GameController.d.ts
vendored
28
Valens-AIO/types/controllers/GameController.d.ts
vendored
@ -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 { IAkiProfile } from "../models/eft/profile/IAkiProfile";
|
||||
import { ICoreConfig } from "../models/spt/config/ICoreConfig";
|
||||
import { IHttpConfig } from "../models/spt/config/IHttpConfig";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
import { LocaleService } from "../services/LocaleService";
|
||||
import { ProfileFixerService } from "../services/ProfileFixerService";
|
||||
import { Watermark } from "../utils/Watermark";
|
||||
export declare class GameController {
|
||||
protected logger: ILogger;
|
||||
protected watermark: Watermark;
|
||||
protected httpServerHelper: HttpServerHelper;
|
||||
protected localeService: LocaleService;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected profileFixerService: ProfileFixerService;
|
||||
protected configServer: ConfigServer;
|
||||
protected httpConfig: IHttpConfig;
|
||||
protected coreConfig: ICoreConfig;
|
||||
constructor(logger: ILogger, watermark: Watermark, httpServerHelper: HttpServerHelper, localeService: LocaleService, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, configServer: ConfigServer);
|
||||
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string): void;
|
||||
protected logProfileDetails(fullProfile: IAkiProfile): void;
|
||||
getGameConfig(sessionID: string): IGameConfigResponse;
|
||||
getServer(): any[];
|
||||
}
|
102
Valens-AIO/types/controllers/HideoutController.d.ts
vendored
102
Valens-AIO/types/controllers/HideoutController.d.ts
vendored
@ -1,102 +0,0 @@
|
||||
import { ScavCaseRewardGenerator } from "../generators/ScavCaseRewardGenerator";
|
||||
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 { HideoutArea, Product } from "../models/eft/common/tables/IBotBase";
|
||||
import { HideoutUpgradeCompleteRequestData } from "../models/eft/hideout/HideoutUpgradeCompleteRequestData";
|
||||
import { IHideoutContinousProductionStartRequestData } from "../models/eft/hideout/IHideoutContinousProductionStartRequestData";
|
||||
import { IHideoutProduction } from "../models/eft/hideout/IHideoutProduction";
|
||||
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 { IHideoutConfig } from "../models/spt/config/IHideoutConfig";
|
||||
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 {
|
||||
protected logger: ILogger;
|
||||
protected hashUtil: HashUtil;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected inventoryHelper: InventoryHelper;
|
||||
protected saveServer: SaveServer;
|
||||
protected playerService: PlayerService;
|
||||
protected presetHelper: PresetHelper;
|
||||
protected paymentHelper: PaymentHelper;
|
||||
protected itemEventRouter: ItemEventRouter;
|
||||
protected httpResponse: HttpResponseUtil;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected hideoutHelper: HideoutHelper;
|
||||
protected scavCaseRewardGenerator: ScavCaseRewardGenerator;
|
||||
protected configServer: ConfigServer;
|
||||
protected static nameBackendCountersCrafting: string;
|
||||
protected hideoutConfig: IHideoutConfig;
|
||||
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, scavCaseRewardGenerator: ScavCaseRewardGenerator, configServer: ConfigServer);
|
||||
upgrade(pmcData: IPmcData, body: IHideoutUpgradeRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
upgradeComplete(pmcData: IPmcData, body: HideoutUpgradeCompleteRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Create item in hideout slot item array, remove item from player inventory
|
||||
* @param pmcData Profile data
|
||||
* @param addItemToHideoutRequest reqeust from client to place item in area slot
|
||||
* @param sessionID Session id
|
||||
* @returns IItemEventRouterResponse object
|
||||
*/
|
||||
putItemsInAreaSlots(pmcData: IPmcData, addItemToHideoutRequest: IHideoutPutItemInRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
takeItemsFromAreaSlots(pmcData: IPmcData, body: IHideoutTakeItemOutRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Find resource item in hideout area, add copy to player inventory, remove Item from hideout slot
|
||||
* @param sessionID Session id
|
||||
* @param pmcData Profile to update
|
||||
* @param removeResourceRequest client request
|
||||
* @param output response to send to client
|
||||
* @param hideoutArea Area fuel is being removed from
|
||||
* @returns IItemEventRouterResponse response
|
||||
*/
|
||||
protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse;
|
||||
toggleArea(pmcData: IPmcData, body: IHideoutToggleAreaRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
singleProductionStart(pmcData: IPmcData, body: IHideoutSingleProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Handles event after clicking 'start' on the scav case hideout page
|
||||
* @param pmcData player profile
|
||||
* @param body client request object
|
||||
* @param sessionID session id
|
||||
* @returns item event router response
|
||||
*/
|
||||
scavCaseProductionStart(pmcData: IPmcData, body: IHideoutScavCaseStartRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Add generated scav case rewards to player profile
|
||||
* @param pmcData player profile to add rewards to
|
||||
* @param rewards reward items to add to profile
|
||||
*/
|
||||
protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[]): void;
|
||||
continuousProductionStart(pmcData: IPmcData, body: IHideoutContinousProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
takeProduction(pmcData: IPmcData, body: IHideoutTakeProductionRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
protected handleRecipie(sessionID: string, recipe: IHideoutProduction, pmcData: IPmcData, body: IHideoutTakeProductionRequestData, output: IItemEventRouterResponse): IItemEventRouterResponse;
|
||||
/**
|
||||
* Handles giving rewards stored in player profile to player after clicking 'get rewards'
|
||||
* @param sessionID
|
||||
* @param pmcData
|
||||
* @param body
|
||||
* @param output
|
||||
* @returns
|
||||
*/
|
||||
protected handleScavCase(sessionID: string, pmcData: IPmcData, body: IHideoutTakeProductionRequestData, output: IItemEventRouterResponse): IItemEventRouterResponse;
|
||||
registerProduction(pmcData: IPmcData, body: IHideoutSingleProductionStartRequestData | IHideoutContinousProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
update(): void;
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
|
||||
import { HealthHelper } from "../helpers/HealthHelper";
|
||||
import { InRaidHelper } from "../helpers/InRaidHelper";
|
||||
import { ItemHelper } from "../helpers/ItemHelper";
|
||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||
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 { IInRaidConfig } from "../models/spt/config/IInRaidConfig";
|
||||
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";
|
||||
import { TimeUtil } from "../utils/TimeUtil";
|
||||
export declare class InraidController {
|
||||
protected saveServer: SaveServer;
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected questHelper: QuestHelper;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected playerScavGenerator: PlayerScavGenerator;
|
||||
protected healthHelper: HealthHelper;
|
||||
protected traderHelper: TraderHelper;
|
||||
protected insuranceService: InsuranceService;
|
||||
protected inRaidHelper: InRaidHelper;
|
||||
protected configServer: ConfigServer;
|
||||
protected inraidConfig: IInRaidConfig;
|
||||
constructor(saveServer: SaveServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, questHelper: QuestHelper, itemHelper: ItemHelper, profileHelper: ProfileHelper, playerScavGenerator: PlayerScavGenerator, healthHelper: HealthHelper, traderHelper: TraderHelper, insuranceService: InsuranceService, inRaidHelper: InRaidHelper, configServer: ConfigServer);
|
||||
addPlayer(sessionID: string, info: IRegisterPlayerRequestData): void;
|
||||
saveProgress(offraidData: ISaveProgressRequestData, sessionID: string): void;
|
||||
/**
|
||||
* Mark inventory items as FiR if player survived raid, otherwise remove FiR from them
|
||||
* @param offraidData Save Progress Request
|
||||
* @param pmcData player profile
|
||||
* @param isPlayerScav Was the player a pScav
|
||||
*/
|
||||
private markOrRemoveFoundInRaidItems;
|
||||
private handlePostRaidPlayerScavProcess;
|
||||
private handlePostRaidPlayerScavKarmaChanges;
|
||||
}
|
@ -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 {
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected logger: ILogger;
|
||||
protected locationGenerator: LocationGenerator;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected timeUtil: TimeUtil;
|
||||
constructor(jsonUtil: JsonUtil, logger: ILogger, locationGenerator: LocationGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil);
|
||||
get(location: string): ILocationBase;
|
||||
generate(name: string): ILocationBase;
|
||||
generateAll(): ILocationsGenerateAllResponse;
|
||||
}
|
@ -1,76 +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, Reward } 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 { IQuestConfig } 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 { LocaleService } from "../services/LocaleService";
|
||||
import { PlayerService } from "../services/PlayerService";
|
||||
import { TimeUtil } from "../utils/TimeUtil";
|
||||
export declare class QuestController {
|
||||
protected logger: ILogger;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected itemEventRouter: ItemEventRouter;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected dialogueHelper: DialogueHelper;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected questHelper: QuestHelper;
|
||||
protected questConditionHelper: QuestConditionHelper;
|
||||
protected playerService: PlayerService;
|
||||
protected localeService: LocaleService;
|
||||
protected configServer: ConfigServer;
|
||||
protected questConfig: IQuestConfig;
|
||||
constructor(logger: ILogger, timeUtil: TimeUtil, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, localeService: LocaleService, configServer: ConfigServer);
|
||||
/**
|
||||
* Get all quests visible to player
|
||||
* Exclude quests with incomplete preconditions (level/loyalty)
|
||||
* @param sessionID session id
|
||||
* @returns array of IQuest
|
||||
*/
|
||||
getClientQuests(sessionID: string): IQuest[];
|
||||
acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
acceptRepeatableQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Remove completed quest from profile
|
||||
* Add newly unlocked quests to profile
|
||||
* Also recalculate thier level due to exp rewards
|
||||
* @param pmcData Player profile
|
||||
* @param body completed quest request
|
||||
* @param sessionID session id
|
||||
* @returns ItemEvent response
|
||||
*/
|
||||
completeQuest(pmcData: IPmcData, body: ICompleteQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Send a popup to player on completion of a quest
|
||||
* @param sessionID session id
|
||||
* @param pmcData player profile
|
||||
* @param completedQuestId completed quest id
|
||||
* @param questRewards rewards given to player
|
||||
*/
|
||||
protected sendDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: Reward[]): void;
|
||||
/**
|
||||
* Returns a list of quests that should be failed when a quest is completed
|
||||
* @param completedQuestId quest completed id
|
||||
* @returns array of quests
|
||||
*/
|
||||
protected getQuestsFailedByCompletingQuest(completedQuestId: string): IQuest[];
|
||||
/**
|
||||
* Fail the quests provided
|
||||
* @param sessionID session id
|
||||
* @param pmcData player profile
|
||||
* @param questsToFail quests to fail
|
||||
*/
|
||||
protected failQuests(sessionID: string, pmcData: IPmcData, questsToFail: IQuest[]): void;
|
||||
handoverQuest(pmcData: IPmcData, body: IHandoverQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
}
|
@ -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 {
|
||||
protected logger: ILogger;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected traderAssortHelper: TraderAssortHelper;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected traderHelper: TraderHelper;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected traderAssortService: TraderAssortService;
|
||||
protected jsonUtil: 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[][]>;
|
||||
}
|
4
Valens-AIO/types/di/OnLoad.d.ts
vendored
4
Valens-AIO/types/di/OnLoad.d.ts
vendored
@ -1,4 +0,0 @@
|
||||
export declare class OnLoad {
|
||||
onLoad(): void;
|
||||
getRoute(): string;
|
||||
}
|
7
Valens-AIO/types/di/OnLoadOnUpdate.d.ts
vendored
7
Valens-AIO/types/di/OnLoadOnUpdate.d.ts
vendored
@ -1,7 +0,0 @@
|
||||
import { OnLoad } from "./OnLoad";
|
||||
import { OnUpdate } from "./OnUpdate";
|
||||
export declare class OnLoadOnUpdate implements OnLoad, OnUpdate {
|
||||
onUpdate(timeSinceLastRun: number): boolean;
|
||||
onLoad(): void;
|
||||
getRoute(): string;
|
||||
}
|
4
Valens-AIO/types/di/OnUpdate.d.ts
vendored
4
Valens-AIO/types/di/OnUpdate.d.ts
vendored
@ -1,4 +0,0 @@
|
||||
export declare class OnUpdate {
|
||||
onUpdate(timeSinceLastRun: number): boolean;
|
||||
getRoute(): string;
|
||||
}
|
5
Valens-AIO/types/di/Serializer.d.ts
vendored
5
Valens-AIO/types/di/Serializer.d.ts
vendored
@ -1,5 +0,0 @@
|
||||
import { IHttpServer } from "../models/spt/server/IHttpServer";
|
||||
export declare class Serializer {
|
||||
serialize(sessionID: string, req: any, resp: any, body: any, httpServer: IHttpServer): void;
|
||||
canHandle(something: string): boolean;
|
||||
}
|
96
Valens-AIO/types/generators/BotGenerator.d.ts
vendored
96
Valens-AIO/types/generators/BotGenerator.d.ts
vendored
@ -1,96 +0,0 @@
|
||||
import { BotHelper } from "../helpers/BotHelper";
|
||||
import { GameEventHelper } from "../helpers/GameEventHelper";
|
||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||
import { IGenerateBotsRequestData } from "../models/eft/bot/IGenerateBotsRequestData";
|
||||
import { Health as PmcHealth, IBotBase, Skills } from "../models/eft/common/tables/IBotBase";
|
||||
import { Health, IBotType, Inventory } from "../models/eft/common/tables/IBotType";
|
||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||
import { HashUtil } from "../utils/HashUtil";
|
||||
import { JsonUtil } from "../utils/JsonUtil";
|
||||
import { RandomUtil } from "../utils/RandomUtil";
|
||||
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
||||
declare namespace BotGenerator {
|
||||
interface IRandomisedBotLevelResult {
|
||||
level: number;
|
||||
exp: number;
|
||||
}
|
||||
}
|
||||
export declare class BotGenerator {
|
||||
protected logger: ILogger;
|
||||
protected hashUtil: HashUtil;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected botInventoryGenerator: BotInventoryGenerator;
|
||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||
protected botHelper: BotHelper;
|
||||
protected gameEventHelper: GameEventHelper;
|
||||
protected configServer: ConfigServer;
|
||||
protected botConfig: IBotConfig;
|
||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botEquipmentFilterService: BotEquipmentFilterService, botHelper: BotHelper, gameEventHelper: GameEventHelper, configServer: ConfigServer);
|
||||
/**
|
||||
* Generate a player scav bot object
|
||||
* @param role e.g. assault / pmcbot
|
||||
* @param difficulty easy/normal/hard/impossible
|
||||
* @param botTemplate base bot template to use (e.g. assault/pmcbot)
|
||||
* @returns
|
||||
*/
|
||||
generatePlayerScav(role: string, difficulty: string, botTemplate: IBotType): IBotBase;
|
||||
generate(sessionId: string, info: IGenerateBotsRequestData): IBotBase[];
|
||||
/**
|
||||
* Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check
|
||||
* @param botRole the bot role to check if should be a pmc
|
||||
* @returns true if should be a pmc
|
||||
*/
|
||||
protected shouldBotBePmc(botRole: string): boolean;
|
||||
/**
|
||||
* Get a randomised PMC side based on bot config value 'isUsec'
|
||||
* @returns pmc side as string
|
||||
*/
|
||||
protected getRandomisedPmcSide(): string;
|
||||
/**
|
||||
* Get a clone of the database\bots\base.json file
|
||||
* @returns IBotBase object
|
||||
*/
|
||||
protected getCloneOfBotBase(): IBotBase;
|
||||
protected generateBot(bot: IBotBase, role: string, node: IBotType, isPmc: boolean, isPlayerScav?: boolean): IBotBase;
|
||||
/**
|
||||
* Log the number of PMCs generated to the debug console
|
||||
*/
|
||||
protected logPmcGeneratedCount(output: IBotBase[]): void;
|
||||
protected generateRandomLevel(min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
|
||||
/**
|
||||
* Converts health object to the required format
|
||||
* @param healthObj health object from bot json
|
||||
* @param playerScav Is a pscav bot being generated
|
||||
* @returns PmcHealth object
|
||||
*/
|
||||
protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
|
||||
protected generateSkills(skillsObj: Skills): Skills;
|
||||
/**
|
||||
* Convert from pmc side (usec/bear) to the side as defined in the bot config (usecType/bearType)
|
||||
* @param pmcSide eft side (usec/bear)
|
||||
* @returns pmc side as defined in config
|
||||
*/
|
||||
protected getPmcRole(pmcSide: string): string;
|
||||
/**
|
||||
* Iterate through bots inventory and loot to find and remove christmas items (as defined in GameEventHelper)
|
||||
* @param nodeInventory Bots inventory to iterate over
|
||||
*/
|
||||
protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
|
||||
protected generateId(bot: IBotBase): IBotBase;
|
||||
protected generateInventoryID(profile: IBotBase): IBotBase;
|
||||
protected getPMCDifficulty(requestedDifficulty: string): string;
|
||||
/**
|
||||
* Add a side-specific (usec/bear) dogtag item to a bots inventory
|
||||
* @param bot bot to add dogtag to
|
||||
* @returns Bot with dogtag added
|
||||
*/
|
||||
protected generateDogtag(bot: IBotBase): IBotBase;
|
||||
}
|
||||
export {};
|
@ -1,24 +0,0 @@
|
||||
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
||||
import { Inventory, Chances, Generation, Mods } 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 {
|
||||
protected logger: ILogger;
|
||||
protected hashUtil: HashUtil;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected botWeaponGenerator: BotWeaponGenerator;
|
||||
protected botLootGenerator: BotLootGenerator;
|
||||
protected botGeneratorHelper: BotGeneratorHelper;
|
||||
protected weightedRandomHelper: 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;
|
||||
protected generateEquipment(equipmentSlot: string, equipmentPool: Record<string, number>, modPool: Mods, spawnChances: Chances, botRole: string, inventory: PmcInventory): void;
|
||||
protected generateInventoryBase(): PmcInventory;
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
import { ItemHelper } from "../helpers/ItemHelper";
|
||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||
export declare class PMCLootGenerator {
|
||||
protected itemHelper: ItemHelper;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected configServer: ConfigServer;
|
||||
protected pocketLootPool: string[];
|
||||
protected backpackLootPool: string[];
|
||||
protected botConfig: IBotConfig;
|
||||
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 {
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected hashUtil: HashUtil;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected generatedAssortItems: Item[];
|
||||
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[];
|
||||
protected assortsAreGenerated(): boolean;
|
||||
/**
|
||||
* Generate an array of items the flea can sell
|
||||
* @returns array of unique items
|
||||
*/
|
||||
protected generateRagfairAssortItems(): Item[];
|
||||
protected createRagfairAssortItem(tplId: string, id?: string): Item;
|
||||
}
|
@ -1,62 +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 { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
||||
import { IBarterScheme } from "../models/eft/common/tables/ITrader";
|
||||
import { IRagfairOffer } from "../models/eft/ragfair/IRagfairOffer";
|
||||
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||
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 { RagfairCategoriesService } from "../services/RagfairCategoriesService";
|
||||
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 {
|
||||
protected logger: ILogger;
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected hashUtil: HashUtil;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected ragfairServerHelper: RagfairServerHelper;
|
||||
protected saveServer: SaveServer;
|
||||
protected presetHelper: PresetHelper;
|
||||
protected ragfairAssortGenerator: RagfairAssortGenerator;
|
||||
protected ragfairOfferService: RagfairOfferService;
|
||||
protected ragfairPriceService: RagfairPriceService;
|
||||
protected ragfairCategoriesService: RagfairCategoriesService;
|
||||
protected fenceService: FenceService;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected configServer: ConfigServer;
|
||||
protected ragfairConfig: IRagfairConfig;
|
||||
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, ragfairCategoriesService: RagfairCategoriesService, fenceService: FenceService, itemHelper: ItemHelper, configServer: ConfigServer);
|
||||
createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
protected getTraderId(userID: string): string;
|
||||
protected getRating(userID: string): number;
|
||||
protected getRatingGrowing(userID: string): boolean;
|
||||
protected getOfferEndTime(userID: string, time: number): number;
|
||||
/**
|
||||
* 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;
|
||||
protected getItemCondition(userID: string, items: Item[], itemDetails: ITemplateItem): Item[];
|
||||
protected addMissingCondition(item: Item): Item;
|
||||
protected getOfferRequirements(items: Item[]): {
|
||||
count: number;
|
||||
_tpl: string;
|
||||
}[];
|
||||
/**
|
||||
* 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,33 +0,0 @@
|
||||
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
import { IWeatherData } from "../models/eft/weather/IWeatherData";
|
||||
import { IWeatherConfig } from "../models/spt/config/IWeatherConfig";
|
||||
import { RandomUtil } from "../utils/RandomUtil";
|
||||
import { TimeUtil } from "../utils/TimeUtil";
|
||||
export declare class WeatherGenerator {
|
||||
protected weightedRandomHelper: WeightedRandomHelper;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected configServer: ConfigServer;
|
||||
protected weatherConfig: IWeatherConfig;
|
||||
constructor(weightedRandomHelper: WeightedRandomHelper, randomUtil: RandomUtil, timeUtil: TimeUtil, configServer: ConfigServer);
|
||||
calculateTime(data: IWeatherData): IWeatherData;
|
||||
/**
|
||||
* Get server uptime seconds multiplied by a multiplier and add to current time as seconds
|
||||
* Format to BSGs requirements
|
||||
* @param computedDate current date
|
||||
* @returns formatted time
|
||||
*/
|
||||
protected getAcceleratedTime(computedDate: Date): string;
|
||||
/**
|
||||
* Get current time formatted to fit BSGs requirement
|
||||
* @param computedDate
|
||||
* @returns
|
||||
*/
|
||||
protected getNormalTime(computedDate: Date): string;
|
||||
generateWeather(data: IWeatherData): IWeatherData;
|
||||
protected getWeightedFog(): string;
|
||||
protected getWeightedRain(): number;
|
||||
protected getRandomFloat(node: string): number;
|
||||
protected getRandomInt(node: string): number;
|
||||
}
|
131
Valens-AIO/types/helpers/BotGeneratorHelper.d.ts
vendored
131
Valens-AIO/types/helpers/BotGeneratorHelper.d.ts
vendored
@ -1,131 +0,0 @@
|
||||
import { DurabilityLimitsHelper } from "../helpers/DurabilityLimitsHelper";
|
||||
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
||||
import { Mods, ModsChances } from "../models/eft/common/tables/IBotType";
|
||||
import { Item, Repairable, Upd } from "../models/eft/common/tables/IItem";
|
||||
import { Grid, ITemplateItem, Slot } from "../models/eft/common/tables/ITemplateItem";
|
||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||
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";
|
||||
import { ProbabilityHelper } from "./ProbabilityHelper";
|
||||
export declare class BotGeneratorHelper {
|
||||
protected logger: ILogger;
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected hashUtil: HashUtil;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected probabilityHelper: ProbabilityHelper;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected durabilityLimitsHelper: DurabilityLimitsHelper;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected inventoryHelper: InventoryHelper;
|
||||
protected containerHelper: ContainerHelper;
|
||||
protected configServer: ConfigServer;
|
||||
protected botConfig: IBotConfig;
|
||||
constructor(logger: ILogger, jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, probabilityHelper: ProbabilityHelper, databaseServer: DatabaseServer, durabilityLimitsHelper: DurabilityLimitsHelper, itemHelper: ItemHelper, inventoryHelper: InventoryHelper, containerHelper: ContainerHelper, configServer: ConfigServer);
|
||||
generateModsForItem(items: Item[], modPool: Mods, parentId: string, parentTemplate: ITemplateItem, modSpawnChances: ModsChances): Item[];
|
||||
/**
|
||||
* Is this magazine cylinder related (revolvers and grenade launchers)
|
||||
* @param magazineParentName the name of the magazines parent
|
||||
* @returns true if it is cylinder related
|
||||
*/
|
||||
magazineIsCylinderRelated(magazineParentName: string): boolean;
|
||||
/**
|
||||
* randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot
|
||||
* never return true for an item that has 0% spawn chance
|
||||
* @param itemSlot slot the item sits in
|
||||
* @param modSlot slot the mod sits in
|
||||
* @param modSpawnChances Chances for various mod spawns
|
||||
* @returns boolean true if it should spawn
|
||||
*/
|
||||
protected shouldModBeSpawned(itemSlot: Slot, modSlot: string, modSpawnChances: ModsChances): boolean;
|
||||
/**
|
||||
* Get a list of containers that hold ammo
|
||||
* e.g. mod_magazine
|
||||
* @returns string array
|
||||
*/
|
||||
protected getAmmoContainers(): string[];
|
||||
/**
|
||||
* Get the slot details for an item (chamber/cartridge/slot)
|
||||
* @param modSlot e.g patron_in_weapon
|
||||
* @param parentTemplate item template
|
||||
* @returns
|
||||
*/
|
||||
protected getModItemSlot(modSlot: string, parentTemplate: ITemplateItem): Slot;
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
protected fillCamora(items: Item[], modPool: Mods, parentId: string, parentTemplate: ITemplateItem): void;
|
||||
/**
|
||||
* Take a record of camoras and merge the compatable shells into one array
|
||||
* @param camorasWithShells camoras we want to merge into one array
|
||||
* @returns string array of shells fro luitple camora sources
|
||||
*/
|
||||
protected mergeCamoraPoolsTogether(camorasWithShells: Record<string, string[]>): string[];
|
||||
generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: any): {
|
||||
upd?: Upd;
|
||||
};
|
||||
/**
|
||||
* Create a repairable object for a weapon that containers durability + max durability properties
|
||||
* @param itemTemplate weapon object being generated for
|
||||
* @param botRole type of bot being generated for
|
||||
* @returns Repairable object
|
||||
*/
|
||||
protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole: string): Repairable;
|
||||
/**
|
||||
* Create a repairable object for an armor that containers durability + max durability properties
|
||||
* @param itemTemplate weapon object being generated for
|
||||
* @param botRole type of bot being generated for
|
||||
* @returns Repairable object
|
||||
*/
|
||||
protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole: string): Repairable;
|
||||
protected getModTplFromItemDb(modTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string;
|
||||
/**
|
||||
* Sort by spawn chance, highest to lowest, higher is more common
|
||||
* @param unsortedModArray String array to sort
|
||||
* @returns Sorted string array
|
||||
*/
|
||||
protected sortModArray(unsortedModArray: string[]): string[];
|
||||
/**
|
||||
* Can an item be added to an item without issue
|
||||
* @param items
|
||||
* @param tplToCheck
|
||||
* @param equipmentSlot
|
||||
* @returns true if possible
|
||||
*/
|
||||
isItemIncompatibleWithCurrentItems(items: Item[], tplToCheck: string, equipmentSlot: string): boolean;
|
||||
/**
|
||||
* Adds an item with all its childern into specified equipmentSlots, wherever it fits.
|
||||
* @param equipmentSlots
|
||||
* @param parentId
|
||||
* @param parentTpl
|
||||
* @param itemWithChildren
|
||||
* @param inventory
|
||||
* @returns a `boolean` indicating item was added
|
||||
*/
|
||||
addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], parentId: string, parentTpl: string, itemWithChildren: Item[], inventory: PmcInventory): boolean;
|
||||
protected itemAllowedInContainer(slot: Grid, itemTpl: string): boolean;
|
||||
}
|
||||
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;
|
||||
}
|
45
Valens-AIO/types/helpers/BotHelper.d.ts
vendored
45
Valens-AIO/types/helpers/BotHelper.d.ts
vendored
@ -1,45 +0,0 @@
|
||||
import { Difficulty, IBotType } from "../models/eft/common/tables/IBotType";
|
||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||
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 {
|
||||
protected logger: ILogger;
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected configServer: ConfigServer;
|
||||
protected botConfig: IBotConfig;
|
||||
constructor(logger: ILogger, jsonUtil: JsonUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, configServer: ConfigServer);
|
||||
getBotDifficultySettings(type: string, difficulty: string): Difficulty;
|
||||
getBotTemplate(role: string): IBotType;
|
||||
getPmcDifficultySettings(type: string, difficulty: string): Difficulty;
|
||||
/**
|
||||
* Randomise the chance the PMC will attack their own side
|
||||
* @param difficultySettings pmc difficulty settings
|
||||
*/
|
||||
randomisePmcHostility(difficultySettings: Difficulty): void;
|
||||
isBotPmc(botRole: string): boolean;
|
||||
isBotBoss(botRole: string): boolean;
|
||||
isBotFollower(botRole: string): boolean;
|
||||
/**
|
||||
* Add a bot to the FRIENDLY_BOT_TYPES array
|
||||
* @param difficultySettings bot settings to alter
|
||||
* @param typeToAdd bot type to add to friendly list
|
||||
*/
|
||||
addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void;
|
||||
/**
|
||||
* Add a bot to the ENEMY_BOT_TYPES array
|
||||
* @param difficultySettings bot settings to alter
|
||||
* @param typesToAdd bot type to add to enemy list
|
||||
*/
|
||||
addBotToEnemyList(difficultySettings: Difficulty, typesToAdd: string[], typeBeingEdited: string): void;
|
||||
/**
|
||||
* Add a bot to the REVENGE_BOT_TYPES array
|
||||
* @param difficultySettings bot settings to alter
|
||||
* @param typesToAdd bot type to add to revenge list
|
||||
*/
|
||||
addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void;
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
export declare class GameEventHelper {
|
||||
protected databaseServer: DatabaseServer;
|
||||
constructor(databaseServer: DatabaseServer);
|
||||
get events(): Record<string, string>;
|
||||
get christmasEventItems(): string[];
|
||||
itemIsChristmasRelated(itemId: string): boolean;
|
||||
christmasEventEnabled(): boolean;
|
||||
}
|
33
Valens-AIO/types/helpers/HandbookHelper.d.ts
vendored
33
Valens-AIO/types/helpers/HandbookHelper.d.ts
vendored
@ -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 {
|
||||
protected lookup: LookupCollection;
|
||||
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 {};
|
63
Valens-AIO/types/helpers/HideoutHelper.d.ts
vendored
63
Valens-AIO/types/helpers/HideoutHelper.d.ts
vendored
@ -1,63 +0,0 @@
|
||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||
import { Common, HideoutArea, Production, Productive } from "../models/eft/common/tables/IBotBase";
|
||||
import { Upd } from "../models/eft/common/tables/IItem";
|
||||
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 { IHideoutConfig } from "../models/spt/config/IHideoutConfig";
|
||||
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 {
|
||||
protected logger: ILogger;
|
||||
protected hashUtil: HashUtil;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected itemEventRouter: ItemEventRouter;
|
||||
protected httpResponse: HttpResponseUtil;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected inventoryHelper: InventoryHelper;
|
||||
protected playerService: PlayerService;
|
||||
protected configServer: ConfigServer;
|
||||
static bitcoinFarm: string;
|
||||
static waterCollector: string;
|
||||
static bitcoin: string;
|
||||
static expeditionaryFuelTank: string;
|
||||
protected hideoutConfig: IHideoutConfig;
|
||||
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;
|
||||
protected applySkillXPBoost(pmcData: IPmcData, bonus: StageBonus): void;
|
||||
updatePlayerHideout(sessionID: string): void;
|
||||
protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: HideoutArea, isGeneratorOn: boolean): void;
|
||||
protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean;
|
||||
protected updateFuel(generatorArea: HideoutArea, pmcData: IPmcData): HideoutArea;
|
||||
protected updateWaterFilters(waterFilterArea: HideoutArea, pwProd: Production, isGeneratorOn: boolean, pmcData: IPmcData): HideoutArea;
|
||||
protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number): Upd;
|
||||
protected updateAirFilters(airFilterArea: HideoutArea, pmcData: IPmcData): HideoutArea;
|
||||
protected updateBitcoinFarm(pmcData: IPmcData, btcFarmCGs: number, isGeneratorOn: boolean): Production;
|
||||
protected getBTCSlots(pmcData: IPmcData): number;
|
||||
protected getManagementSkillsSlots(): number;
|
||||
protected hasManagementSkillSlots(pmcData: IPmcData): boolean;
|
||||
protected getHideoutManagementSkill(pmcData: IPmcData): Common;
|
||||
protected getHideoutManagementConsumptionBonus(pmcData: IPmcData): number;
|
||||
isProduction(productive: Productive): productive is Production;
|
||||
getBTC(pmcData: IPmcData, body: IHideoutTakeProductionRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
}
|
115
Valens-AIO/types/helpers/QuestHelper.d.ts
vendored
115
Valens-AIO/types/helpers/QuestHelper.d.ts
vendored
@ -1,115 +0,0 @@
|
||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||
import { AvailableForConditions, AvailableForProps, IQuest, Reward } 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 { QuestStatus } from "../models/enums/QuestStatus";
|
||||
import { IQuestConfig } 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 { LocaleService } from "../services/LocaleService";
|
||||
import { HashUtil } from "../utils/HashUtil";
|
||||
import { JsonUtil } from "../utils/JsonUtil";
|
||||
import { TimeUtil } from "../utils/TimeUtil";
|
||||
import { DialogueHelper } from "./DialogueHelper";
|
||||
import { ItemHelper } from "./ItemHelper";
|
||||
import { PaymentHelper } from "./PaymentHelper";
|
||||
import { ProfileHelper } from "./ProfileHelper";
|
||||
import { RagfairServerHelper } from "./RagfairServerHelper";
|
||||
import { TraderHelper } from "./TraderHelper";
|
||||
export declare class QuestHelper {
|
||||
protected logger: ILogger;
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected hashUtil: HashUtil;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected itemEventRouter: ItemEventRouter;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected localeService: LocaleService;
|
||||
protected ragfairServerHelper: RagfairServerHelper;
|
||||
protected dialogueHelper: DialogueHelper;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected paymentHelper: PaymentHelper;
|
||||
protected traderHelper: TraderHelper;
|
||||
protected configServer: ConfigServer;
|
||||
protected questConfig: IQuestConfig;
|
||||
constructor(logger: ILogger, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, traderHelper: TraderHelper, configServer: ConfigServer);
|
||||
questStatus(pmcData: IPmcData, questID: string): QuestStatus;
|
||||
/**
|
||||
* returns true is the condition is satisfied
|
||||
*/
|
||||
evaluateLevel(pmcProfile: IPmcData, cond: AvailableForConditions): boolean;
|
||||
getDeltaQuests(before: IQuest[], after: IQuest[]): IQuest[];
|
||||
rewardSkillPoints(sessionID: string, pmcData: IPmcData, output: IItemEventRouterResponse, skillName: string, progress: number): void;
|
||||
getQuestLocale(questId: string): any;
|
||||
/**
|
||||
* Debug Routine for showing some information on the
|
||||
* quest list in question.
|
||||
*/
|
||||
dumpQuests(quests: any): void;
|
||||
loyaltyRequirementCheck(loyaltyRequirementProperties: AvailableForProps, profile: IPmcData): boolean;
|
||||
protected processReward(reward: Reward): any[];
|
||||
getQuestRewardItems(quest: IQuest, state: QuestStatus): Reward[];
|
||||
/**
|
||||
* Add quest with new state value to pmc profile
|
||||
* @param pmcData profile to add quest to
|
||||
* @param newState state the new quest should be in when added
|
||||
* @param acceptedQuest Details of quest being added
|
||||
*/
|
||||
addQuestToPMCData(pmcData: IPmcData, newState: QuestStatus, acceptedQuest: IAcceptQuestRequestData): void;
|
||||
acceptedUnlocked(acceptedQuestId: string, sessionID: string): IQuest[];
|
||||
failedUnlocked(failedQuestId: string, sessionID: string): IQuest[];
|
||||
applyMoneyBoost(quest: IQuest, moneyBoost: number): IQuest;
|
||||
changeItemStack(pmcData: IPmcData, id: string, value: number, sessionID: string, output: any): void;
|
||||
/**
|
||||
* Get List of All Quests as an array
|
||||
* @returns Array of IQuest objects
|
||||
*/
|
||||
questValues(): IQuest[];
|
||||
/**
|
||||
* Reest AvailableForStart conditions for quests
|
||||
* @param quests queststo clean
|
||||
* @returns quest array without conditions
|
||||
*/
|
||||
protected cleanQuestList(quests: IQuest[]): IQuest[];
|
||||
/**
|
||||
* Reset AvailableForStart conditions on a quest
|
||||
* @param quest quest to clean
|
||||
* @returns reset IQuest object
|
||||
*/
|
||||
cleanQuestConditions(quest: IQuest): IQuest;
|
||||
failQuest(pmcData: IPmcData, body: any, sessionID: string): any;
|
||||
/**
|
||||
* Get quest by id from database
|
||||
* @param questId questid to look for
|
||||
* @param pmcData player profile
|
||||
* @returns IQuest object
|
||||
*/
|
||||
getQuestFromDb(questId: string, pmcData: IPmcData): IQuest;
|
||||
getQuestLocaleIdFromDb(messageId: string): string;
|
||||
/**
|
||||
* Alter a quests state + Add a record to tis status timers object
|
||||
* @param pmcData Profile to update
|
||||
* @param newQuestState new state the qeust should be in
|
||||
* @param questId id of the quest to alter the status of
|
||||
*/
|
||||
updateQuestState(pmcData: IPmcData, newQuestState: QuestStatus, questId: string): void;
|
||||
/**
|
||||
* Give player quest rewards - Skills/exp/trader standing/items/assort unlocks
|
||||
* @param pmcData Player profile
|
||||
* @param body complete quest request
|
||||
* @param state State of the quest now its complete
|
||||
* @param sessionID Seession id
|
||||
* @returns array of reward objects
|
||||
*/
|
||||
applyQuestReward(pmcData: IPmcData, body: ICompleteQuestRequestData, state: QuestStatus, sessionID: string): Reward[];
|
||||
/**
|
||||
* Get the intel center bonus a player has
|
||||
* @param pmcData player profile
|
||||
* @returns bonus in percent
|
||||
*/
|
||||
protected getIntelCenterRewardBonus(pmcData: IPmcData): number;
|
||||
getFindItemIdForQuestItem(itemTpl: string): string;
|
||||
}
|
54
Valens-AIO/types/helpers/RagfairOfferHelper.d.ts
vendored
54
Valens-AIO/types/helpers/RagfairOfferHelper.d.ts
vendored
@ -1,54 +0,0 @@
|
||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
||||
import { IRagfairOffer } from "../models/eft/ragfair/IRagfairOffer";
|
||||
import { ISearchRequestData } from "../models/eft/ragfair/ISearchRequestData";
|
||||
import { IQuestConfig } from "../models/spt/config/IQuestConfig";
|
||||
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||
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 { LocaleService } from "../services/LocaleService";
|
||||
import { RagfairOfferService } from "../services/RagfairOfferService";
|
||||
import { HashUtil } from "../utils/HashUtil";
|
||||
import { TimeUtil } from "../utils/TimeUtil";
|
||||
import { DialogueHelper } from "./DialogueHelper";
|
||||
import { ItemHelper } from "./ItemHelper";
|
||||
import { PaymentHelper } from "./PaymentHelper";
|
||||
import { PresetHelper } from "./PresetHelper";
|
||||
import { ProfileHelper } from "./ProfileHelper";
|
||||
import { RagfairHelper } from "./RagfairHelper";
|
||||
import { RagfairServerHelper } from "./RagfairServerHelper";
|
||||
import { RagfairSortHelper } from "./RagfairSortHelper";
|
||||
export declare class RagfairOfferHelper {
|
||||
protected logger: ILogger;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected hashUtil: HashUtil;
|
||||
protected itemEventRouter: ItemEventRouter;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected saveServer: SaveServer;
|
||||
protected dialogueHelper: DialogueHelper;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected paymentHelper: PaymentHelper;
|
||||
protected presetHelper: PresetHelper;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected ragfairServerHelper: RagfairServerHelper;
|
||||
protected ragfairSortHelper: RagfairSortHelper;
|
||||
protected ragfairHelper: RagfairHelper;
|
||||
protected ragfairOfferService: RagfairOfferService;
|
||||
protected localeService: LocaleService;
|
||||
protected configServer: ConfigServer;
|
||||
protected static goodSoldTemplate: string;
|
||||
protected ragfairConfig: IRagfairConfig;
|
||||
protected questConfig: IQuestConfig;
|
||||
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, saveServer: SaveServer, dialogueHelper: DialogueHelper, itemHelper: ItemHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, localeService: LocaleService, configServer: ConfigServer);
|
||||
getValidOffers(info: ISearchRequestData, itemsToAdd: string[], assorts: Record<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
||||
getOffersForBuild(info: ISearchRequestData, itemsToAdd: string[], assorts: Record<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
||||
processOffers(sessionID: string): boolean;
|
||||
protected getProfileOffers(sessionID: string): IRagfairOffer[];
|
||||
protected deleteOfferByOfferId(sessionID: string, offerId: string): void;
|
||||
protected completeOffer(sessionID: string, offer: IRagfairOffer, boughtAmount: number): IItemEventRouterResponse;
|
||||
isDisplayableOffer(info: ISearchRequestData, itemsToAdd: string[], assorts: Record<string, ITraderAssort>, offer: IRagfairOffer, pmcProfile: IPmcData): boolean;
|
||||
}
|
16
Valens-AIO/types/helpers/RagfairSellHelper.d.ts
vendored
16
Valens-AIO/types/helpers/RagfairSellHelper.d.ts
vendored
@ -1,16 +0,0 @@
|
||||
import { SellResult } from "../models/eft/ragfair/IRagfairOffer";
|
||||
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
import { RandomUtil } from "../utils/RandomUtil";
|
||||
import { TimeUtil } from "../utils/TimeUtil";
|
||||
export declare class RagfairSellHelper {
|
||||
protected logger: ILogger;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected configServer: ConfigServer;
|
||||
protected ragfairConfig: IRagfairConfig;
|
||||
constructor(logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, configServer: ConfigServer);
|
||||
calculateSellChance(baseChance: number, offerPrice: number, requirementsPriceInRub: number): number;
|
||||
rollForSale(sellChance: number, count: number): SellResult[];
|
||||
}
|
1
Valens-AIO/types/ide/Compiler.d.ts
vendored
1
Valens-AIO/types/ide/Compiler.d.ts
vendored
@ -1 +0,0 @@
|
||||
import "reflect-metadata";
|
21
Valens-AIO/types/loaders/PostAkiModLoader.d.ts
vendored
21
Valens-AIO/types/loaders/PostAkiModLoader.d.ts
vendored
@ -1,21 +0,0 @@
|
||||
import { DependencyContainer } from "tsyringe";
|
||||
import { HandbookController } from "../controllers/HandbookController";
|
||||
import { IModLoader } from "../models/spt/mod/IModLoader";
|
||||
import { ModCompilerService } from "../services/ModCompilerService";
|
||||
import { VFS } from "../utils/VFS";
|
||||
import { BundleLoader } from "./BundleLoader";
|
||||
import { PreAkiModLoader } from "./PreAkiModLoader";
|
||||
export declare class PostAkiModLoader implements IModLoader {
|
||||
protected bundleLoader: BundleLoader;
|
||||
protected handbookController: HandbookController;
|
||||
protected vfs: VFS;
|
||||
protected modCompilerService: ModCompilerService;
|
||||
protected preAkiModLoader: PreAkiModLoader;
|
||||
constructor(bundleLoader: BundleLoader, handbookController: HandbookController, vfs: VFS, modCompilerService: ModCompilerService, preAkiModLoader: PreAkiModLoader);
|
||||
getBundles(local: boolean): string;
|
||||
getBundle(key: string, local: boolean): void;
|
||||
getModPath(mod: string): string;
|
||||
load(): void;
|
||||
protected executeMods(container: DependencyContainer): void;
|
||||
protected addBundles(): void;
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
export declare enum Effect {
|
||||
Fracture = "Fracture",
|
||||
LightBleeding = "LightBleeding",
|
||||
HeavyBleeding = "HeavyBleeding"
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
export interface IHideoutArea {
|
||||
_id: string;
|
||||
type: number;
|
||||
enabled: boolean;
|
||||
needsFuel: boolean;
|
||||
takeFromSlotLocked: boolean;
|
||||
craftGivesExp: boolean;
|
||||
stages: Record<string, Stage>;
|
||||
}
|
||||
export interface Stage {
|
||||
requirements: Requirement[];
|
||||
bonuses: StageBonus[];
|
||||
slots: number;
|
||||
constructionTime: number;
|
||||
description: string;
|
||||
}
|
||||
export interface Requirement {
|
||||
areaType?: number;
|
||||
requiredLevel?: number;
|
||||
type: string;
|
||||
templateId?: string;
|
||||
count?: number;
|
||||
isFunctional?: boolean;
|
||||
traderId?: string;
|
||||
loyaltyLevel?: number;
|
||||
skillName?: string;
|
||||
skillLevel?: number;
|
||||
}
|
||||
export interface StageBonus {
|
||||
value: number;
|
||||
passive: boolean;
|
||||
production: boolean;
|
||||
visible: boolean;
|
||||
skillType?: string;
|
||||
type: string;
|
||||
filter?: string[];
|
||||
icon?: string;
|
||||
id?: string;
|
||||
templateId?: string;
|
||||
}
|
@ -1 +0,0 @@
|
||||
export declare type IGetInsuranceCostResponseData = Record<string, Record<string, number>>;
|
@ -1,4 +0,0 @@
|
||||
export interface IAddItemRequestData {
|
||||
tid: string;
|
||||
items: any[];
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
import { ILoginRequestData } from "./ILoginRequestData";
|
||||
export declare type IRemoveProfileData = ILoginRequestData;
|
@ -1,28 +0,0 @@
|
||||
import { BotAmount } from "../../enums/BotAmount";
|
||||
import { BotDifficulty } from "../../enums/BotDifficulty";
|
||||
export interface IStartOfflineRaidRequestData {
|
||||
locationName: string;
|
||||
startTime: number;
|
||||
dateTime: string;
|
||||
gameSettings: GameSettings;
|
||||
}
|
||||
export interface GameSettings {
|
||||
timeAndWeatherSettings: TimeAndWeatherSettings;
|
||||
botsSettings: BotsSettings;
|
||||
wavesSettings: WavesSettings;
|
||||
}
|
||||
export interface TimeAndWeatherSettings {
|
||||
isRandomTime: boolean;
|
||||
isRandomWeather: boolean;
|
||||
}
|
||||
export interface BotsSettings {
|
||||
isEnabled: boolean;
|
||||
isScavWars: boolean;
|
||||
botAmount: BotAmount;
|
||||
}
|
||||
export interface WavesSettings {
|
||||
botDifficulty: BotDifficulty;
|
||||
isBosses: boolean;
|
||||
isTaggedAndCursed: boolean;
|
||||
wavesBotAmount: BotAmount;
|
||||
}
|
7
Valens-AIO/types/models/enums/BotAmount.d.ts
vendored
7
Valens-AIO/types/models/enums/BotAmount.d.ts
vendored
@ -1,7 +0,0 @@
|
||||
export declare enum BotAmount {
|
||||
AsOnline = "AsOnline",
|
||||
Low = "Low",
|
||||
Medium = "Medium",
|
||||
High = "High",
|
||||
Horde = "Horde"
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
export declare enum BotDifficulty {
|
||||
AsOnline = "AsOnline",
|
||||
Easy = "Easy",
|
||||
Medium = "Medium",
|
||||
Hard = "Hard",
|
||||
Impossible = "Impossible",
|
||||
Random = "Random"
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
export declare enum MemberCategory {
|
||||
Default = 0,
|
||||
Developer = 1,
|
||||
UniqueId = 2,
|
||||
Trader = 4,
|
||||
Group = 8,
|
||||
System = 16,
|
||||
ChatModerator = 32,
|
||||
ChatModeratorWithPermanentBan = 64,
|
||||
UnitTest = 128,
|
||||
Sherpa = 256,
|
||||
Emissary = 512
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
export declare enum QuestRewardType {
|
||||
Skill = "Skill",
|
||||
Experience = "Experience",
|
||||
TraderStanding = "TraderStanding",
|
||||
TraderUnlock = "TraderUnlock",
|
||||
Item = "Item",
|
||||
AssortmentUnlock = "AssortmentUnlock"
|
||||
}
|
5
Valens-AIO/types/models/enums/RaidMode.d.ts
vendored
5
Valens-AIO/types/models/enums/RaidMode.d.ts
vendored
@ -1,5 +0,0 @@
|
||||
export declare enum RaidMode {
|
||||
Online = "Online",
|
||||
Local = "Local",
|
||||
Coop = "Coop"
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
import { IStartOfflineRaidRequestData } from "../../eft/match/IStartOffineRaidRequestData";
|
||||
import { IEndOfflineRaidRequestData } from "../../eft/match/IEndOfflineRaidRequestData";
|
||||
import { INullResponseData } from "../../eft/httpResponse/INullResponseData";
|
||||
import { IGetBodyResponseData } from "../../eft/httpResponse/IGetBodyResponseData";
|
||||
import { IPmcData } from "../../eft/common/IPmcData";
|
||||
export interface IMatchCallbacks {
|
||||
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: any, 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;
|
||||
}
|
124
Valens-AIO/types/models/spt/config/IBotConfig.d.ts
vendored
124
Valens-AIO/types/models/spt/config/IBotConfig.d.ts
vendored
@ -1,124 +0,0 @@
|
||||
import { MinMax } from "../../common/MinMax";
|
||||
import { IBaseConfig } from "./IBaseConfig";
|
||||
export interface IBotConfig extends IBaseConfig {
|
||||
kind: "aki-bot";
|
||||
presetBatch: PresetBatch;
|
||||
bosses: string[];
|
||||
durability: Durability;
|
||||
lootNValue: LootNvalue;
|
||||
revenge: Record<string, string[]>;
|
||||
pmc: PmcConfig;
|
||||
itemSpawnLimits: Record<string, Record<string, number>>;
|
||||
equipment: Record<string, Equipment>;
|
||||
showTypeInNickname: boolean;
|
||||
maxBotCap: number;
|
||||
secureContainerAmmoStackCount: number;
|
||||
}
|
||||
export interface PresetBatch {
|
||||
assault: number;
|
||||
bossBully: number;
|
||||
bossGluhar: number;
|
||||
bossKilla: number;
|
||||
bossKojaniy: number;
|
||||
bossSanitar: number;
|
||||
bossTagilla: number;
|
||||
bossKnight: number;
|
||||
bossTest: number;
|
||||
cursedAssault: number;
|
||||
followerBully: number;
|
||||
followerGluharAssault: number;
|
||||
followerGluharScout: number;
|
||||
followerGluharSecurity: number;
|
||||
followerGluharSnipe: number;
|
||||
followerKojaniy: number;
|
||||
followerSanitar: number;
|
||||
followerTagilla: number;
|
||||
followerBirdEye: number;
|
||||
followerBigPipe: number;
|
||||
followerTest: number;
|
||||
marksman: number;
|
||||
pmcBot: number;
|
||||
sectantPriest: number;
|
||||
sectantWarrior: number;
|
||||
gifter: number;
|
||||
test: number;
|
||||
exUsec: number;
|
||||
}
|
||||
export interface Durability {
|
||||
default: DefaultDurability;
|
||||
pmc: PmcDurability;
|
||||
boss: BotDurability;
|
||||
follower: BotDurability;
|
||||
assault: BotDurability;
|
||||
cursedassault: BotDurability;
|
||||
marksman: BotDurability;
|
||||
pmcbot: BotDurability;
|
||||
exusec: BotDurability;
|
||||
sectantpriest: BotDurability;
|
||||
sectantwarrior: BotDurability;
|
||||
}
|
||||
export interface DefaultDurability {
|
||||
armor: DefaultArmor;
|
||||
weapon: WeaponDurability;
|
||||
}
|
||||
export interface DefaultArmor {
|
||||
maxDelta: number;
|
||||
minDelta: number;
|
||||
}
|
||||
export interface WeaponDurability {
|
||||
lowestMax: number;
|
||||
highestMax: number;
|
||||
maxDelta: number;
|
||||
minDelta: number;
|
||||
}
|
||||
export interface PmcDurability {
|
||||
armor: PmcDurabilityArmor;
|
||||
weapon: WeaponDurability;
|
||||
}
|
||||
export interface PmcDurabilityArmor {
|
||||
lowestMaxPercent: number;
|
||||
highestMaxPercent: number;
|
||||
maxDelta: number;
|
||||
minDelta: number;
|
||||
}
|
||||
export interface BotDurability {
|
||||
armor: ArmorDurability;
|
||||
weapon: WeaponDurability;
|
||||
}
|
||||
export interface ArmorDurability {
|
||||
maxDelta: number;
|
||||
minDelta: number;
|
||||
}
|
||||
export interface LootNvalue {
|
||||
scav: number;
|
||||
pmc: number;
|
||||
}
|
||||
export interface PmcConfig {
|
||||
dynamicLoot: PmcDynamicLoot;
|
||||
difficulty: string;
|
||||
looseWeaponInBackpackChancePercent: number;
|
||||
looseWeaponInBackpackLootMinMax: MinMax;
|
||||
isUsec: number;
|
||||
chanceSameSideIsHostilePercent: number;
|
||||
usecType: string;
|
||||
bearType: string;
|
||||
maxBackpackLootTotalRub: number;
|
||||
maxPocketLootTotalRub: number;
|
||||
maxVestLootTotalRub: number;
|
||||
convertIntoPmcChance: Record<string, MinMax>;
|
||||
enemyTypes: string[];
|
||||
}
|
||||
export interface PmcDynamicLoot {
|
||||
whitelist: string[];
|
||||
blacklist: string[];
|
||||
moneyStackLimits: Record<string, number>;
|
||||
}
|
||||
export interface Equipment {
|
||||
blacklist: EquipmentFilterDetails[];
|
||||
whitelist: EquipmentFilterDetails[];
|
||||
}
|
||||
export interface EquipmentFilterDetails {
|
||||
levelRange: MinMax;
|
||||
equipment: Record<string, string[]>;
|
||||
cartridge: Record<string, string[]>;
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
import { IBaseConfig } from "./IBaseConfig";
|
||||
export interface IInventoryConfig extends IBaseConfig {
|
||||
kind: "aki-inventory";
|
||||
newItemsMarkedFound: boolean;
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
import { IBaseConfig } from "./IBaseConfig";
|
||||
export interface ILocaleConfig extends IBaseConfig {
|
||||
kind: "aki-locale";
|
||||
desiredLocale: string;
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
import { IBaseConfig } from "./IBaseConfig";
|
||||
export interface IRepairConfig extends IBaseConfig {
|
||||
kind: "aki-repair";
|
||||
priceMultiplier: number;
|
||||
applyRandomizeDurabilityLoss: boolean;
|
||||
weaponSkillRepairGain: number;
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
import { IBaseConfig } from "./IBaseConfig";
|
||||
export interface ITraderConfig extends IBaseConfig {
|
||||
kind: "aki-trader";
|
||||
updateTime: UpdateTime[];
|
||||
updateTimeDefault: number;
|
||||
traderPriceMultipler: number;
|
||||
minDurabilityForSale: number;
|
||||
fence: FenceConfig;
|
||||
}
|
||||
export interface UpdateTime {
|
||||
traderId: string;
|
||||
seconds: number;
|
||||
}
|
||||
export interface FenceConfig {
|
||||
assortSize: number;
|
||||
maxPresetsCount: number;
|
||||
presetPriceMult: number;
|
||||
blacklist: string[];
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
export declare enum LogBackgroundColor {
|
||||
default = "",
|
||||
black = "blackBG",
|
||||
red = "redBG",
|
||||
green = "greenBG",
|
||||
yellow = "yellowBG",
|
||||
blue = "blueBG",
|
||||
magenta = "magentaBG",
|
||||
cyan = "cyanBG",
|
||||
white = "whiteBG"
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
export declare enum LogTextColor {
|
||||
black = "black",
|
||||
red = "red",
|
||||
green = "green",
|
||||
yellow = "yellow",
|
||||
blue = "blue",
|
||||
magenta = "magenta",
|
||||
cyan = "cyan",
|
||||
white = "white",
|
||||
gray = ""
|
||||
}
|
10
Valens-AIO/types/models/spt/mod/IMod.d.ts
vendored
10
Valens-AIO/types/models/spt/mod/IMod.d.ts
vendored
@ -1,10 +0,0 @@
|
||||
export declare namespace ModLoader {
|
||||
interface IMod {
|
||||
name: string;
|
||||
version: string;
|
||||
main?: string;
|
||||
author?: string;
|
||||
license: string;
|
||||
dependencies?: Record<string, string>;
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
/// <reference types="node" />
|
||||
import http, { ServerResponse } from "http";
|
||||
import { INotification } from "../../eft/notifier/INotifier";
|
||||
export interface IHttpServer {
|
||||
load(): void;
|
||||
getCookies(req: http.IncomingMessage): any;
|
||||
sendFile(resp: ServerResponse, file: any): void;
|
||||
isConnectionWebSocket(sessionID: string): boolean;
|
||||
sendResponse(sessionID: string, req: any, resp: any, body: Buffer): void;
|
||||
sendMessage(sessionID: string, output: INotification): void;
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
export interface ILocaleBase {
|
||||
global: Record<string, ILocaleGlobalBase>;
|
||||
menu: Record<string, string>;
|
||||
languages: ILanguageBase[];
|
||||
}
|
||||
export interface ILocaleGlobalBase {
|
||||
interface: Record<string, string>;
|
||||
enum: any[];
|
||||
mail: Record<string, string>;
|
||||
quest: Record<string, ILocaleQuest>;
|
||||
preset: Record<string, ILocalePreset>;
|
||||
handbook: Record<string, string>;
|
||||
season: Record<string, string>;
|
||||
customization: Record<string, ILocaleProps>;
|
||||
repeatableQuest: Record<string, string>;
|
||||
templates: ILocaleTemplateBase;
|
||||
locations: ILocaleLocationsBase;
|
||||
banners: ILocaleBannersBase;
|
||||
trading: ILocaleTradingBase;
|
||||
}
|
||||
export interface ILocaleQuest {
|
||||
name: string;
|
||||
description: string;
|
||||
note: string;
|
||||
failMessageText: string;
|
||||
startedMessageText: string;
|
||||
successMessageText: string;
|
||||
conditions: Record<string, string>;
|
||||
location: string;
|
||||
}
|
||||
export interface ILocalePreset {
|
||||
Name: string;
|
||||
}
|
||||
export interface ILocaleTemplateBase {
|
||||
templates: Record<string, ILocaleProps>;
|
||||
}
|
||||
export interface ILocaleLocationsBase {
|
||||
locations: Record<string, ILocaleProps>;
|
||||
}
|
||||
export interface ILocaleBannersBase {
|
||||
locations: Record<string, ILocaleProps>;
|
||||
}
|
||||
export interface ILocaleProps {
|
||||
Name: string;
|
||||
ShortName: string;
|
||||
Description: string;
|
||||
}
|
||||
export interface ILocaleTradingBase {
|
||||
locations: Record<string, ILocaleTradingProps>;
|
||||
}
|
||||
export interface ILocaleTradingProps {
|
||||
FullName: string;
|
||||
FirstName: string;
|
||||
Nickname: string;
|
||||
Location: string;
|
||||
Description: string;
|
||||
}
|
||||
export interface ILanguageBase {
|
||||
ShortName: string;
|
||||
Name: string;
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
import { Serializer } from "../../di/Serializer";
|
||||
import { BundleLoader } from "../../loaders/BundleLoader";
|
||||
import { IHttpServer } from "../../models/spt/server/IHttpServer";
|
||||
import { ILogger } from "../../models/spt/utils/ILogger";
|
||||
export declare class BundleSerializer extends Serializer {
|
||||
protected logger: ILogger;
|
||||
protected bundleLoader: BundleLoader;
|
||||
constructor(logger: ILogger, bundleLoader: BundleLoader);
|
||||
serialize(sessionID: string, req: any, resp: any, body: any, httpServer: IHttpServer): void;
|
||||
canHandle(route: string): boolean;
|
||||
}
|
51
Valens-AIO/types/servers/HttpServer.d.ts
vendored
51
Valens-AIO/types/servers/HttpServer.d.ts
vendored
@ -1,51 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
/// <reference types="node" />
|
||||
import http, { ServerResponse } from "http";
|
||||
import { ApplicationContext } from "../context/ApplicationContext";
|
||||
import { Serializer } from "../di/Serializer";
|
||||
import { HttpServerHelper } from "../helpers/HttpServerHelper";
|
||||
import { NotifierHelper } from "../helpers/NotifierHelper";
|
||||
import { INotification } from "../models/eft/notifier/INotifier";
|
||||
import { IHttpConfig } from "../models/spt/config/IHttpConfig";
|
||||
import { IHttpServer } from "../models/spt/server/IHttpServer";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { HttpRouter } from "../routers/HttpRouter";
|
||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
||||
import { JsonUtil } from "../utils/JsonUtil";
|
||||
import { RandomUtil } from "../utils/RandomUtil";
|
||||
import { ConfigServer } from "./ConfigServer";
|
||||
import { DatabaseServer } from "./DatabaseServer";
|
||||
export declare class HttpServer implements IHttpServer {
|
||||
protected httpRouter: HttpRouter;
|
||||
protected logger: ILogger;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected httpResponse: HttpResponseUtil;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected notifierHelper: NotifierHelper;
|
||||
protected httpServerHelper: HttpServerHelper;
|
||||
protected serializers: Serializer[];
|
||||
protected configServer: ConfigServer;
|
||||
protected applicationContext: ApplicationContext;
|
||||
constructor(httpRouter: HttpRouter, // TODO: delay required
|
||||
logger: ILogger, randomUtil: RandomUtil, jsonUtil: JsonUtil, httpResponse: HttpResponseUtil, databaseServer: DatabaseServer, notifierHelper: NotifierHelper, httpServerHelper: HttpServerHelper, serializers: Serializer[], configServer: ConfigServer, applicationContext: ApplicationContext);
|
||||
protected buffers: {};
|
||||
protected onReceive: {};
|
||||
protected onRespond: {};
|
||||
protected httpConfig: IHttpConfig;
|
||||
protected webSockets: {};
|
||||
protected websocketPingHandler: any;
|
||||
getCookies(req: http.IncomingMessage): any;
|
||||
resetBuffer(sessionID: string): void;
|
||||
putInBuffer(sessionID: any, data: any, bufLength: number): boolean;
|
||||
getFromBuffer(sessionID: string): any;
|
||||
sendZlibJson(resp: any, output: any, sessionID: string): void;
|
||||
sendMessage(sessionID: string, output: INotification): void;
|
||||
sendFile(resp: ServerResponse, file: any): void;
|
||||
isConnectionWebSocket(sessionID: string): boolean;
|
||||
sendResponse(sessionID: string, req: any, resp: any, body: Buffer): void;
|
||||
handleRequest(req: http.IncomingMessage, resp: http.ServerResponse): void;
|
||||
load(): void;
|
||||
protected getRandomisedMessage(): string;
|
||||
wsOnConnection(ws: any, req: any): void;
|
||||
}
|
28
Valens-AIO/types/servers/SaveServer.d.ts
vendored
28
Valens-AIO/types/servers/SaveServer.d.ts
vendored
@ -1,28 +0,0 @@
|
||||
import { IAkiProfile, Info } from "../models/eft/profile/IAkiProfile";
|
||||
import { HashUtil } from "../utils/HashUtil";
|
||||
import { JsonUtil } from "../utils/JsonUtil";
|
||||
import { VFS } from "../utils/VFS";
|
||||
import { SaveLoadRouter } from "../di/Router";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
export declare class SaveServer {
|
||||
protected vfs: VFS;
|
||||
protected saveLoadRouters: SaveLoadRouter[];
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected hashUtil: HashUtil;
|
||||
protected logger: ILogger;
|
||||
protected profileFilepath: string;
|
||||
protected profiles: {};
|
||||
protected onSave: {};
|
||||
protected saveMd5: {};
|
||||
constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, logger: ILogger);
|
||||
load(): void;
|
||||
save(): void;
|
||||
getProfile(sessionId: string): IAkiProfile;
|
||||
getProfiles(): Record<string, IAkiProfile>;
|
||||
deleteProfileById(sessionID: string): boolean;
|
||||
createProfile(profileInfo: Info): void;
|
||||
addProfile(profileDetails: IAkiProfile): void;
|
||||
loadProfile(sessionID: string): void;
|
||||
saveProfile(sessionID: string): void;
|
||||
removeProfile(sessionID: string): boolean;
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
import { IBotType } from "../models/eft/common/tables/IBotType";
|
||||
import { Equipment, EquipmentFilterDetails, IBotConfig } from "../models/spt/config/IBotConfig";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
export declare class BotEquipmentFilterService {
|
||||
protected logger: ILogger;
|
||||
protected configServer: ConfigServer;
|
||||
protected botConfig: IBotConfig;
|
||||
protected botEquipmentFilterlists: Record<string, Equipment>;
|
||||
constructor(logger: ILogger, configServer: ConfigServer);
|
||||
/**
|
||||
* Filter a bots data to exclude equipment and cartridges defines in the botConfig
|
||||
* @param baseBotNode bots json data to filter
|
||||
* @param playerLevel Level of the currently playing player
|
||||
* @param isPmc Is the bot we're filtering a PMC
|
||||
* @param role Role of the bot we're filtering
|
||||
*/
|
||||
filterBotEquipment(baseBotNode: IBotType, playerLevel: number, isPmc: boolean, role: string): void;
|
||||
/**
|
||||
* Get an object that contains equipment and cartridge blacklists for a specified bot type
|
||||
* @param botRole Role of the bot we want the blacklist for
|
||||
* @param playerLevel Level of the player
|
||||
* @returns EquipmentBlacklistDetails object
|
||||
*/
|
||||
protected getBotEquipmentBlacklist(botRole: string, playerLevel: number): EquipmentFilterDetails;
|
||||
/**
|
||||
* Get the whitelist for a specific bot type that's within the players level
|
||||
* @param botRole Bot type
|
||||
* @param playerLevel Players level
|
||||
* @returns EquipmentFilterDetails object
|
||||
*/
|
||||
protected getBotEquipmentWhitelist(botRole: string, playerLevel: number): EquipmentFilterDetails;
|
||||
/**
|
||||
* Filter bot equipment based on blacklist and whitelist from config/bot.json
|
||||
* Prioritises whitelist first, if one is found blacklist is ignored
|
||||
* @param baseBotNode bot .json file to update
|
||||
* @param blacklist equipment blacklist
|
||||
* @returns Filtered bot file
|
||||
*/
|
||||
protected filterEquipment(baseBotNode: IBotType, blacklist: EquipmentFilterDetails, whitelist: EquipmentFilterDetails): void;
|
||||
/**
|
||||
* Filter bot cartridges based on blacklist and whitelist from config/bot.json
|
||||
* Prioritises whitelist first, if one is found blacklist is ignored
|
||||
* @param baseBotNode bot .json file to update
|
||||
* @param blacklist equipment on this list should be excluded from the bot
|
||||
* @param whitelist equipment on this list should be used exclusivly
|
||||
* @returns Filtered bot file
|
||||
*/
|
||||
protected filterCartridges(baseBotNode: IBotType, blacklist: EquipmentFilterDetails, whitelist: EquipmentFilterDetails): void;
|
||||
}
|
39
Valens-AIO/types/services/FenceService.d.ts
vendored
39
Valens-AIO/types/services/FenceService.d.ts
vendored
@ -1,39 +0,0 @@
|
||||
import { HandbookHelper } from "../helpers/HandbookHelper";
|
||||
import { ItemHelper } from "../helpers/ItemHelper";
|
||||
import { PresetHelper } from "../helpers/PresetHelper";
|
||||
import { FenceLevel } from "../models/eft/common/IGlobals";
|
||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
||||
import { ITraderConfig } from "../models/spt/config/ITraderConfig";
|
||||
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";
|
||||
export declare class FenceService {
|
||||
protected logger: ILogger;
|
||||
protected hashUtil: HashUtil;
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected handbookHelper: HandbookHelper;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected presetHelper: PresetHelper;
|
||||
protected configServer: ConfigServer;
|
||||
protected fenceAssort: ITraderAssort;
|
||||
protected traderConfig: ITraderConfig;
|
||||
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemHelper: ItemHelper, presetHelper: PresetHelper, configServer: ConfigServer);
|
||||
protected setFenceAssort(fenceAssort: ITraderAssort): void;
|
||||
getFenceAssorts(): ITraderAssort;
|
||||
hasExpiredCache(refreshAssort: boolean): boolean;
|
||||
generateFenceAssortCache(pmcData: IPmcData): void;
|
||||
/**
|
||||
* Get the fence level the passed in profile has
|
||||
* @param pmcData Player profile
|
||||
* @returns FenceLevel
|
||||
*/
|
||||
getFenceInfo(pmcData: IPmcData): FenceLevel;
|
||||
removeFenceOffer(assortIdToRemove: string): void;
|
||||
updateFenceOffers(pmcData: IPmcData): void;
|
||||
}
|
14
Valens-AIO/types/services/LocaleService.d.ts
vendored
14
Valens-AIO/types/services/LocaleService.d.ts
vendored
@ -1,14 +0,0 @@
|
||||
import { ILocaleConfig } from "../models/spt/config/ILocaleConfig";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
export declare class LocaleService {
|
||||
protected logger: ILogger;
|
||||
protected configServer: ConfigServer;
|
||||
protected localeConfig: ILocaleConfig;
|
||||
constructor(logger: ILogger, configServer: ConfigServer);
|
||||
/**
|
||||
* Gets the locale key from the locale.json file
|
||||
* @returns locale e.g en/ge/cz/cn
|
||||
*/
|
||||
getDesiredLocale(): string;
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
||||
export declare class RagfairLinkedItemService {
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected linkedItemsCache: Record<string, Iterable<string>>;
|
||||
constructor(databaseServer: DatabaseServer);
|
||||
getLinkedItems(linkedSearchId: string): Iterable<string>;
|
||||
protected buildLinkedItemTable(): void;
|
||||
protected getFilters(item: ITemplateItem, slot: string): string[];
|
||||
}
|
@ -1,55 +0,0 @@
|
||||
import { HandbookHelper } from "../helpers/HandbookHelper";
|
||||
import { ItemHelper } from "../helpers/ItemHelper";
|
||||
import { PresetHelper } from "../helpers/PresetHelper";
|
||||
import { Preset } from "../models/eft/common/IGlobals";
|
||||
import { Item } from "../models/eft/common/tables/IItem";
|
||||
import { IBarterScheme } from "../models/eft/common/tables/ITrader";
|
||||
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||
import { IRagfairServerPrices } from "../models/spt/ragfair/IRagfairServerPrices";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { RandomUtil } from "../utils/RandomUtil";
|
||||
export declare class RagfairPriceService {
|
||||
protected handbookHelper: HandbookHelper;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected logger: ILogger;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected presetHelper: PresetHelper;
|
||||
protected randomUtil: RandomUtil;
|
||||
protected configServer: ConfigServer;
|
||||
protected ragfairConfig: IRagfairConfig;
|
||||
protected prices: IRagfairServerPrices;
|
||||
constructor(handbookHelper: HandbookHelper, databaseServer: DatabaseServer, logger: ILogger, itemHelper: ItemHelper, presetHelper: PresetHelper, randomUtil: RandomUtil, configServer: ConfigServer);
|
||||
generateStaticPrices(): void;
|
||||
generateDynamicPrices(): void;
|
||||
hasDynamicPrices(): boolean;
|
||||
getDynamicPrice(itemTpl: string): number;
|
||||
getAllFleaPrices(): Record<string, number>;
|
||||
getFleaPriceForItem(tplId: string): number;
|
||||
getStaticPriceForItem(tplId: string): number;
|
||||
getBarterPrice(barterScheme: IBarterScheme[]): number;
|
||||
getDynamicOfferPrice(items: Item[], desiredCurrency: string): number;
|
||||
/**
|
||||
* Multiply the price by a randomised curve where n = 2, shift = 2
|
||||
* @param existingPrice price to alter
|
||||
* @param isPreset is the item we're multiplying a preset
|
||||
* @returns multiplied price
|
||||
*/
|
||||
protected randomisePrice(existingPrice: number, isPreset: boolean): number;
|
||||
/**
|
||||
* Calculate the cost of a weapon preset by adding together the price of its mods + base price of default weapon preset
|
||||
* @param item base weapon
|
||||
* @param items weapon plus mods
|
||||
* @param existingPrice price of existing base weapon
|
||||
* @returns
|
||||
*/
|
||||
getWeaponPresetPrice(item: Item, items: Item[], existingPrice: number): number;
|
||||
/**
|
||||
* Attempt to get the default preset for a weapon, failing that get the first preset in the array
|
||||
* (assumes default = has encyclopedia entry)
|
||||
* @param presets weapon presets to choose from
|
||||
* @returns Default preset object
|
||||
*/
|
||||
protected getDefaultWeaponPreset(presets: Preset[], weapon: Item): Preset;
|
||||
}
|
24
Valens-AIO/types/utils/DatabaseImporter.d.ts
vendored
24
Valens-AIO/types/utils/DatabaseImporter.d.ts
vendored
@ -1,24 +0,0 @@
|
||||
import { OnLoad } from "../di/OnLoad";
|
||||
import { IDatabaseTables } from "../models/spt/server/IDatabaseTables";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { ImageRouter } from "../routers/ImageRouter";
|
||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { JsonUtil } from "./JsonUtil";
|
||||
import { VFS } from "./VFS";
|
||||
export declare class DatabaseImporter extends OnLoad {
|
||||
protected logger: ILogger;
|
||||
protected vfs: VFS;
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected imageRouter: ImageRouter;
|
||||
constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, databaseServer: DatabaseServer, imageRouter: ImageRouter);
|
||||
onLoad(): void;
|
||||
/**
|
||||
* Read all json files in database folder and map into a json object
|
||||
* @param filepath path to database folder
|
||||
*/
|
||||
protected hydrateDatabase(filepath: string): void;
|
||||
getRoute(): string;
|
||||
loadRecursive(filepath: string): IDatabaseTables;
|
||||
loadImages(filepath: string): void;
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
import type constructor from "./constructor";
|
||||
import { InjectionToken } from "tsyringe";
|
||||
declare function singleton<T>(token?: InjectionToken<T>): (target: constructor<T>) => void;
|
||||
export default singleton;
|
@ -1,4 +0,0 @@
|
||||
declare type constructor<T> = {
|
||||
new (...args: any[]): T;
|
||||
};
|
||||
export default constructor;
|
118
config/airdrop.json
Normal file
118
config/airdrop.json
Normal file
@ -0,0 +1,118 @@
|
||||
{
|
||||
"airdropChancePercent":
|
||||
{
|
||||
"bigmap": 20,
|
||||
"woods": 25,
|
||||
"lighthouse": 20,
|
||||
"shoreline": 20,
|
||||
"interchange": 20,
|
||||
"reserve": 10,
|
||||
"tarkovStreets": 12
|
||||
},
|
||||
"airdropMinStartTimeSeconds": 60,
|
||||
"airdropMaxStartTimeSeconds": 300,
|
||||
"planeMinFlyHeight": 400,
|
||||
"planeMaxFlyHeight": 500,
|
||||
"planeVolume": 0.5,
|
||||
"planeSpeed": 65,
|
||||
"crateFallSpeed": 3,
|
||||
"loot": {
|
||||
"presetCount": {
|
||||
"min": 3,
|
||||
"max": 5
|
||||
},
|
||||
"itemCount": {
|
||||
"min": 12,
|
||||
"max": 25
|
||||
},
|
||||
"itemBlacklist": [
|
||||
"5e997f0b86f7741ac73993e2",
|
||||
"5b44abe986f774283e2e3512",
|
||||
"5e99711486f7744bfc4af328",
|
||||
"5e99735686f7744bfc4af32c",
|
||||
"6087e570b998180e9f76dc24",
|
||||
"5d52d479a4b936793d58c76b",
|
||||
"5e85aac65505fa48730d8af2",
|
||||
"63495c500c297e20065a08b1",
|
||||
"5cde8864d7f00c0010373be1",
|
||||
"5b3b713c5acfc4330140bd8d"
|
||||
],
|
||||
"itemTypeWhitelist": [
|
||||
"543be5dd4bdc2deb348b4569",
|
||||
"5485a8684bdc2da71d8b4567",
|
||||
"5d650c3e815116009f6201d2",
|
||||
"5448e8d64bdc2dce718b4568",
|
||||
"5448e8d04bdc2ddf718b4569",
|
||||
"5447e1d04bdc2dff2f8b4567",
|
||||
"57864ee62459775490116fc1",
|
||||
"5448e54d4bdc2dcc718b4568",
|
||||
"5448e5284bdc2dcb718b4567",
|
||||
"5448e53e4bdc2d60728b4567",
|
||||
"5448f3a64bdc2d60728b456a",
|
||||
"5448f3ac4bdc2dce718b4569",
|
||||
"55818ad54bdc2ddc698b4569",
|
||||
"55818af64bdc2d5b648b4570",
|
||||
"55818b0e4bdc2dde698b456e",
|
||||
"5448bc234bdc2d3c308b4569",
|
||||
"57864ada245977548638de91",
|
||||
"5645bcb74bdc2ded0b8b4578",
|
||||
"5448e5724bdc2ddf718b4568",
|
||||
"55818add4bdc2d5b648b456f",
|
||||
"543be6564bdc2df4348b4568",
|
||||
"57864bb7245977548b3b66c2",
|
||||
"550aa4cd4bdc2dd8348b456c",
|
||||
"5448f39d4bdc2d0a728b4568",
|
||||
"5448f3a14bdc2d27728b4569",
|
||||
"5447e1d04bdc2dff2f8b4567",
|
||||
"55818b164bdc2ddc698b456c",
|
||||
"55818ae44bdc2dde698b456c"
|
||||
],
|
||||
"itemLimits": {
|
||||
"5447b5cf4bdc2d65278b4567": 1,
|
||||
"5448e8d04bdc2ddf718b4569": 3,
|
||||
"5448e8d64bdc2dce718b4568": 3,
|
||||
"5448bc234bdc2d3c308b4569": 3,
|
||||
"5448f3a64bdc2d60728b456a": 3,
|
||||
"5448e54d4bdc2dcc718b4568": 3,
|
||||
"5485a8684bdc2da71d8b4567": 4,
|
||||
"57864bb7245977548b3b66c2": 2,
|
||||
"57864ada245977548638de91": 3,
|
||||
"5d650c3e815116009f6201d2": 2,
|
||||
"5645bcb74bdc2ded0b8b4578": 2,
|
||||
"5448e5724bdc2ddf718b4568": 2,
|
||||
"55818add4bdc2d5b648b456f": 2,
|
||||
"543be6564bdc2df4348b4568": 3,
|
||||
"550aa4cd4bdc2dd8348b456c": 2,
|
||||
"5448f39d4bdc2d0a728b4568": 4,
|
||||
"5448f3a14bdc2d27728b4569": 2,
|
||||
"5447e1d04bdc2dff2f8b4567": 1,
|
||||
"55818ad54bdc2ddc698b4569": 3,
|
||||
"55818b164bdc2ddc698b456c": 2,
|
||||
"55818ae44bdc2dde698b456c": 2,
|
||||
"5448e5284bdc2dcb718b4567": 2
|
||||
},
|
||||
"itemStackLimits": {
|
||||
"5fc382a9d724d907e2077dab": {
|
||||
"min": 5,
|
||||
"max": 5
|
||||
},
|
||||
"59e690b686f7746c9f75e848": {
|
||||
"min": 10,
|
||||
"max": 25
|
||||
},
|
||||
"5449016a4bdc2d6f028b456f": {
|
||||
"min": 5000,
|
||||
"max": 50000
|
||||
},
|
||||
"569668774bdc2da2298b4568": {
|
||||
"min": 100,
|
||||
"max": 500
|
||||
},
|
||||
"5696686a4bdc2da3298b456a": {
|
||||
"min": 100,
|
||||
"max": 500
|
||||
}
|
||||
},
|
||||
"armorLevelWhitelist": [0, 4, 5, 6]
|
||||
}
|
||||
}
|
54
config/ammo.json
Normal file
54
config/ammo.json
Normal file
@ -0,0 +1,54 @@
|
||||
{
|
||||
"stacks":
|
||||
{
|
||||
"grenades": 1,
|
||||
"a86x70": 30,
|
||||
"a127x55": 30,
|
||||
"a762x54": 40,
|
||||
"a762x51": 40,
|
||||
"a9x39": 50,
|
||||
"a366TKM": 50,
|
||||
"a762x39": 60,
|
||||
"a762x35": 60,
|
||||
"a556x45": 60,
|
||||
"a545x39": 60,
|
||||
"a57x28": 60,
|
||||
"a46x30": 70,
|
||||
"a9x33R": 30,
|
||||
"a1143x23ACP": 50,
|
||||
"a762x25": 50,
|
||||
"a9x21": 50,
|
||||
"a9x19": 50,
|
||||
"a9x18": 50,
|
||||
"a23x75": 15,
|
||||
"a12Gauge": 20,
|
||||
"a20Gauge": 20,
|
||||
"a30x29": 1,
|
||||
"a26x75": 1
|
||||
},
|
||||
|
||||
"zero":
|
||||
{
|
||||
"g127x55": "5cadf6ddae9215051e1c23b2",
|
||||
"g86x70": "5fc275cf85fd526b824a571a",
|
||||
"g762x54": "5887431f2459777e1612938f",
|
||||
"g762x51": "58dd3ad986f77403051cba8f",
|
||||
"g9x39": "57a0dfb82459774d3078b56c",
|
||||
"g366TKM": "59e655cb86f77411dc52a77b",
|
||||
"g762x39": "5656d7c34bdc2d9d198b4587",
|
||||
"g762x35": "5fbe3ffdf8b6a877a729ea82",
|
||||
"g556x45": "54527a984bdc2d4e668b4567",
|
||||
"g545x39": "56dff3afd2720bba668b4567",
|
||||
"g57x28": "5cc80f38e4a949001152b560",
|
||||
"g46x30": "5ba2678ad4351e44f824b344",
|
||||
"g9x33R": "62330b3ed4dc74626d570b95",
|
||||
"g1143x23ACP": "5e81f423763d9f754677bf2e",
|
||||
"g762x25": "5736026a245977644601dc61",
|
||||
"g9x21": "5a269f97c4a282000b151807",
|
||||
"g9x19": "56d59d3ad2720bdb418b4577",
|
||||
"g9x18": "573719762459775a626ccbc1",
|
||||
"g23x75": "5e85aa1a988a8701445df1f5",
|
||||
"g12Gauge": "560d5e524bdc2d25448b4571",
|
||||
"g20Gauge": "5a38ebd9c4a282000d722a5b"
|
||||
}
|
||||
}
|
86
config/armor.json
Normal file
86
config/armor.json
Normal file
@ -0,0 +1,86 @@
|
||||
{
|
||||
"removeGearRestrictions": false,
|
||||
|
||||
"armorMaterials":
|
||||
{
|
||||
"uhmwpe":
|
||||
{
|
||||
"destructibility": 0.45,
|
||||
"minRepairDegradation": 0.01,
|
||||
"maxRepairDegradation": 0.03,
|
||||
"explosionDestructibility": 0.4,
|
||||
"minRepairKitDegradation": 0.005,
|
||||
"maxRepairKitDegradation": 0.025
|
||||
},
|
||||
|
||||
"aramid":
|
||||
{
|
||||
"destructibility": 0.25,
|
||||
"minRepairDegradation": 0.03,
|
||||
"maxRepairDegradation": 0.07,
|
||||
"explosionDestructibility": 0.2,
|
||||
"minRepairKitDegradation": 0.025,
|
||||
"maxRepairKitDegradation": 0.065
|
||||
},
|
||||
|
||||
"combined":
|
||||
{
|
||||
"destructibility": 0.5,
|
||||
"minRepairDegradation": 0.1,
|
||||
"maxRepairDegradation": 0.15,
|
||||
"explosionDestructibility": 0.4,
|
||||
"minRepairKitDegradation": 0.09,
|
||||
"maxRepairKitDegradation": 0.14
|
||||
},
|
||||
|
||||
"titan":
|
||||
{
|
||||
"destructibility": 0.55,
|
||||
"minRepairDegradation": 0.06,
|
||||
"maxRepairDegradation": 0.1,
|
||||
"explosionDestructibility": 0.5,
|
||||
"minRepairKitDegradation": 0.055,
|
||||
"maxRepairKitDegradation": 0.09
|
||||
},
|
||||
|
||||
"aluminium":
|
||||
{
|
||||
"destructibility": 0.6,
|
||||
"minRepairDegradation": 0.06,
|
||||
"maxRepairDegradation": 0.1,
|
||||
"explosionDestructibility": 0.6,
|
||||
"minRepairKitDegradation": 0.055,
|
||||
"maxRepairKitDegradation": 0.09
|
||||
},
|
||||
|
||||
"armoredSteel":
|
||||
{
|
||||
"destructibility": 0.7,
|
||||
"minRepairDegradation": 0.01,
|
||||
"maxRepairDegradation": 0.03,
|
||||
"explosionDestructibility": 0.6,
|
||||
"minRepairKitDegradation": 0.005,
|
||||
"maxRepairKitDegradation": 0.025
|
||||
},
|
||||
|
||||
"ceramic":
|
||||
{
|
||||
"destructibility": 0.8,
|
||||
"minRepairDegradation": 0.17,
|
||||
"maxRepairDegradation": 0.22,
|
||||
"explosionDestructibility": 0.7,
|
||||
"minRepairKitDegradation": 0.155,
|
||||
"maxRepairKitDegradation": 0.2
|
||||
},
|
||||
|
||||
"glass":
|
||||
{
|
||||
"destructibility": 0.8,
|
||||
"minRepairDegradation": 0.23,
|
||||
"maxRepairDegradation": 0.42,
|
||||
"explosionDestructibility": 0.8,
|
||||
"minRepairKitDegradation": 0.21,
|
||||
"maxRepairKitDegradation": 0.38
|
||||
}
|
||||
}
|
||||
}
|
84
config/bots.json
Normal file
84
config/bots.json
Normal file
@ -0,0 +1,84 @@
|
||||
{
|
||||
"bossChance":
|
||||
{
|
||||
"activated": false,
|
||||
"chance": 100
|
||||
},
|
||||
|
||||
"botGenerationBatchSizePerType": 15,
|
||||
"maxBotCap": {
|
||||
"factory": 10,
|
||||
"customs": 15,
|
||||
"woods": 15,
|
||||
"shoreline": 15,
|
||||
"lighthouse": 15,
|
||||
"reservebase": 15,
|
||||
"interchange": 15,
|
||||
"laboratory": 15,
|
||||
"streets of tarkov": 18,
|
||||
"default": 15
|
||||
},
|
||||
|
||||
"pmc":
|
||||
{
|
||||
"chanceSameSideIsHostilePercent": 80,
|
||||
"containersOnPMCs": true,
|
||||
"isUsec": 50,
|
||||
"lootNValue": 3,
|
||||
"maxBackpackLootTotalRub": 150000,
|
||||
"maxPocketLootTotalRub": 50000,
|
||||
"maxVestLootTotalRub": 50000,
|
||||
|
||||
"convertIntoPmcChance":
|
||||
{
|
||||
"assault":
|
||||
{
|
||||
"min": 20,
|
||||
"max": 30
|
||||
},
|
||||
"cursedassault":
|
||||
{
|
||||
"min": 15,
|
||||
"max": 30
|
||||
},
|
||||
"pmcbot":
|
||||
{
|
||||
"min": 15,
|
||||
"max": 25
|
||||
},
|
||||
"exusec":
|
||||
{
|
||||
"min": 5,
|
||||
"max": 5
|
||||
}
|
||||
},
|
||||
|
||||
"useDifficultyOverride": false,
|
||||
"difficulty": "AsOnline",
|
||||
"botRelativeLevelDeltaMax": 10,
|
||||
|
||||
"difficultyWeights":
|
||||
{
|
||||
"useWeights": false,
|
||||
"weights":
|
||||
{
|
||||
"easy": 0,
|
||||
"normal": 40,
|
||||
"hard": 30,
|
||||
"impossible": 30
|
||||
}
|
||||
},
|
||||
|
||||
"looseWeaponInBackpackChance": 15,
|
||||
"looseWeaponInBackpackLootMinMax":
|
||||
{
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
|
||||
"scav":
|
||||
{
|
||||
"lootNValue": 4
|
||||
}
|
||||
}
|
3
config/config.json
Normal file
3
config/config.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"DebugMode": false
|
||||
}
|
209
config/containers.json
Normal file
209
config/containers.json
Normal file
@ -0,0 +1,209 @@
|
||||
{
|
||||
"commonContainers":
|
||||
{
|
||||
"enabled": false,
|
||||
"AMMO_CASE":
|
||||
{
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"cellsH": 7,
|
||||
"cellsV": 7
|
||||
},
|
||||
|
||||
"DOCUMENTS_CASE":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 2,
|
||||
"cellsH": 4,
|
||||
"cellsV": 4
|
||||
},
|
||||
|
||||
"DOGTAG_CASE":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 10,
|
||||
"cellsV": 10
|
||||
},
|
||||
|
||||
"GRENADE_CASE":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"cellsH": 8,
|
||||
"cellsV": 8
|
||||
},
|
||||
|
||||
"INJECTOR_CASE":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 3,
|
||||
"cellsV": 3
|
||||
},
|
||||
|
||||
"ITEM_CASE":
|
||||
{
|
||||
"width": 4,
|
||||
"height": 4,
|
||||
"cellsH": 8,
|
||||
"cellsV": 8
|
||||
},
|
||||
|
||||
"KEY_TOOL":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 4,
|
||||
"cellsV": 4
|
||||
},
|
||||
|
||||
"KEYCARD_HOLDER":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 3,
|
||||
"cellsV": 3
|
||||
},
|
||||
|
||||
"SCAV_JUNKBOX":
|
||||
{
|
||||
"width": 4,
|
||||
"height": 4,
|
||||
"cellsH": 14,
|
||||
"cellsV": 14
|
||||
},
|
||||
|
||||
"MAGAZINE_CASE":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 2,
|
||||
"cellsH": 7,
|
||||
"cellsV": 7
|
||||
},
|
||||
|
||||
"MEDICINE_CASE":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"cellsH": 7,
|
||||
"cellsV": 7
|
||||
},
|
||||
|
||||
"MONEY_CASE":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 2,
|
||||
"cellsH": 7,
|
||||
"cellsV": 7
|
||||
},
|
||||
|
||||
"HOLODILNICK_THERMAL_BAG":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"cellsH": 8,
|
||||
"cellsV": 8
|
||||
},
|
||||
|
||||
"PISTOL_CASE":
|
||||
{
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"cellsH": 4,
|
||||
"cellsV": 3
|
||||
},
|
||||
|
||||
"SICC_ORGANIZATIONAL_POUCH":
|
||||
{
|
||||
"width": 2,
|
||||
"height": 1,
|
||||
"cellsH": 5,
|
||||
"cellsV": 5
|
||||
},
|
||||
|
||||
"SIMPLE_WALLET":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 2,
|
||||
"cellsV": 2
|
||||
},
|
||||
|
||||
"THICC_ITEM_CASE":
|
||||
{
|
||||
"width": 5,
|
||||
"height": 3,
|
||||
"cellsH": 14,
|
||||
"cellsV": 14
|
||||
},
|
||||
|
||||
"THICC_WEAPON_CASE":
|
||||
{
|
||||
"width": 5,
|
||||
"height": 2,
|
||||
"cellsH": 6,
|
||||
"cellsV": 15
|
||||
},
|
||||
|
||||
"WEAPON_CASE":
|
||||
{
|
||||
"width": 5,
|
||||
"height": 2,
|
||||
"cellsH": 5,
|
||||
"cellsV": 10
|
||||
},
|
||||
|
||||
"WZ_WALLET":
|
||||
{
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"cellsH": 2,
|
||||
"cellsV": 2
|
||||
}
|
||||
},
|
||||
|
||||
"securedContainers":
|
||||
{
|
||||
"enabled": false,
|
||||
"ALPHA":
|
||||
{
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"cellsH": 2,
|
||||
"cellsV": 2
|
||||
},
|
||||
|
||||
"BETA":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 2,
|
||||
"cellsH": 3,
|
||||
"cellsV": 2
|
||||
},
|
||||
|
||||
"EPSILON":
|
||||
{
|
||||
"width": 4,
|
||||
"height": 2,
|
||||
"cellsH": 4,
|
||||
"cellsV": 2
|
||||
},
|
||||
|
||||
"GAMMA":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"cellsH": 3,
|
||||
"cellsV": 3
|
||||
},
|
||||
|
||||
"KAPPA":
|
||||
{
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"cellsH": 3,
|
||||
"cellsV": 4
|
||||
}
|
||||
}
|
||||
}
|
82
config/flea.json
Normal file
82
config/flea.json
Normal file
@ -0,0 +1,82 @@
|
||||
{
|
||||
"minUserLevel": 15,
|
||||
"runIntervalSeconds": 45,
|
||||
|
||||
"blacklist":
|
||||
{
|
||||
"enableBsgList": true,
|
||||
"enableQuestList": true
|
||||
},
|
||||
|
||||
"condition":
|
||||
{
|
||||
"5422acb9af1c889c16000029": {
|
||||
"_name": "WEAPON",
|
||||
"conditionChance": 0.2,
|
||||
"min": 0.6,
|
||||
"max": 1
|
||||
},
|
||||
"543be5664bdc2dd4348b4569": {
|
||||
"_name": "MEDS",
|
||||
"conditionChance": 0.2,
|
||||
"min": 0.6,
|
||||
"max": 1
|
||||
},
|
||||
"5447e0e74bdc2d3c308b4567": {
|
||||
"_name": "SPEC_ITEM",
|
||||
"conditionChance": 0.3,
|
||||
"min": 0.02,
|
||||
"max": 1
|
||||
},
|
||||
"543be5e94bdc2df1348b4568": {
|
||||
"_name": "KEY",
|
||||
"conditionChance": 0.02,
|
||||
"min": 0.97,
|
||||
"max": 1
|
||||
},
|
||||
"5448e5284bdc2dcb718b4567": {
|
||||
"_name": "VEST",
|
||||
"conditionChance": 0.2,
|
||||
"min": 0.05,
|
||||
"max": 1
|
||||
},
|
||||
"57bef4c42459772e8d35a53b": {
|
||||
"_name": "ARMORED_EQUIPMENT",
|
||||
"conditionChance": 0.6,
|
||||
"min": 0.05,
|
||||
"max": 1
|
||||
},
|
||||
"543be6674bdc2df1348b4569": {
|
||||
"_name": "FOOD_DRINK",
|
||||
"conditionChance": 0.05,
|
||||
"min": 0.05,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
|
||||
"currencies":
|
||||
{
|
||||
"roubles": 78,
|
||||
"dollars": 20,
|
||||
"euros": 2
|
||||
},
|
||||
|
||||
"offerItemCount":
|
||||
{
|
||||
"min": 8,
|
||||
"max": 15
|
||||
},
|
||||
|
||||
"reputation":
|
||||
{
|
||||
"gain": 0.0000002,
|
||||
"loss": 0.0000002
|
||||
},
|
||||
|
||||
"time":
|
||||
{
|
||||
"baseSellTime": 15,
|
||||
"minSellTime": 5,
|
||||
"maxSellTime": 15
|
||||
}
|
||||
}
|
22
config/globals.json
Normal file
22
config/globals.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"damagePerMeter": 9,
|
||||
"safeHeight": 3,
|
||||
"maxLoyaltyTraders": false,
|
||||
"timeBeforeDeployLocal": 10,
|
||||
|
||||
"matchEnd":
|
||||
{
|
||||
"survivedExpRequirement": 200,
|
||||
"survivedSecondsRequirement": 420,
|
||||
"survivedExpReward": 300,
|
||||
"miaExpReward": 200,
|
||||
"runnerExpReward": 200,
|
||||
"leftMult": 0,
|
||||
"miaMult": 1,
|
||||
"survivedMult": 1.3,
|
||||
"runnerMult": 0.5,
|
||||
"killedMult": 1,
|
||||
"headShotMult": 1.2,
|
||||
"expOnDamageAllHealth": 50
|
||||
}
|
||||
}
|
5
config/hideout.json
Normal file
5
config/hideout.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"constructionTime": 1,
|
||||
"productionTime": 1,
|
||||
"scavCaseTime": 1
|
||||
}
|
21
config/insurance.json
Normal file
21
config/insurance.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"blacklistedEquipment": ["Scabbard", "SecuredContainer", "Compass", "ArmBand"],
|
||||
|
||||
"prapor":
|
||||
{
|
||||
"minHr": 24,
|
||||
"maxHr": 36,
|
||||
"storageMaxHr": 96,
|
||||
"priceCoef": 0.16,
|
||||
"returnChance": 75
|
||||
},
|
||||
|
||||
"therapist":
|
||||
{
|
||||
"minHr": 10,
|
||||
"maxHr": 20,
|
||||
"storageMaxHr": 144,
|
||||
"priceCoef": 0.25,
|
||||
"returnChance": 85
|
||||
}
|
||||
}
|
43
config/items.json
Normal file
43
config/items.json
Normal file
@ -0,0 +1,43 @@
|
||||
{
|
||||
"standardStash":
|
||||
{
|
||||
"vertical": 28,
|
||||
"horizontal": 10
|
||||
},
|
||||
|
||||
"behindStash":
|
||||
{
|
||||
"vertical": 38,
|
||||
"horizontal": 10
|
||||
},
|
||||
|
||||
"escapeStash":
|
||||
{
|
||||
"vertical": 48,
|
||||
"horizontal": 10
|
||||
},
|
||||
|
||||
"eodStash":
|
||||
{
|
||||
"vertical": 68,
|
||||
"horizontal": 10
|
||||
},
|
||||
|
||||
"examinedByDefault": false,
|
||||
"examineTime":
|
||||
{
|
||||
"enabled": false,
|
||||
"examineTime": 1
|
||||
},
|
||||
|
||||
"removeBackpacksRestrictions": true,
|
||||
"removeContainersRestrictions": true,
|
||||
"removeDiscardLimit": true,
|
||||
"removeInRaidItemRestrictions": true,
|
||||
"removeKeyUsageMax": true,
|
||||
"removeSecureContainersRestrictions": true,
|
||||
"roublesMaxStack": 500000,
|
||||
"dollarsMaxStack": 50000,
|
||||
"eurosMaxStack": 50000,
|
||||
"weightModifier": 1
|
||||
}
|
8
config/locations.json
Normal file
8
config/locations.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"allExtractsAvailable": false,
|
||||
"freeLabsEntry": false,
|
||||
"exfilTime": 8,
|
||||
"extractionsExtended": false,
|
||||
"enableCoopExtracts": false,
|
||||
"noExtractRestrictions": false
|
||||
}
|
5
config/loot.json
Normal file
5
config/loot.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"containersInMarkedRoom": true,
|
||||
"looseLootMultiplier": 1,
|
||||
"staticLootMultiplier": 1
|
||||
}
|
7
config/prewipe.json
Normal file
7
config/prewipe.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"allBossesOnReserve": false,
|
||||
"allTradersSellCheapItems": false,
|
||||
"gluharOnLabs": false,
|
||||
"killaOnFactory": false,
|
||||
"makeObdolbosPowerful": false
|
||||
}
|
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