v1.4.0 Changelog
* Bugfixes for non-working features * Code Refactor, and cleanup * Separated out all instances of the config files to their own separate entities. DebugMode is the only entity existing within the original config.json which will enable logging in the server for every feature enabled. * Removed Progression from the AIO and separated it out to its own individual modification. New Features * Added SMG In Holsters to Weapons.json * Added Skill Progression/Fatigue rates to Skills.json * Added Remove Discard Limit, and Remove Item Restrictions to Items.json * Reworked Insurance, and added minHr, maxHr, and storageMaxHr alongside the previously existing priceCoefficient, and returnChance in Insurance.json * Added Armor Materials to Armor.json
This commit is contained in:
parent
c932d2b1e0
commit
065c5098b9
Binary file not shown.
Binary file not shown.
@ -2,7 +2,7 @@
|
|||||||
"stacks":
|
"stacks":
|
||||||
{
|
{
|
||||||
"grenades": 1,
|
"grenades": 1,
|
||||||
"a338lapua": 30,
|
"a338Lapua": 30,
|
||||||
"a127x55": 30,
|
"a127x55": 30,
|
||||||
"a762x54": 40,
|
"a762x54": 40,
|
||||||
"a762x51": 40,
|
"a762x51": 40,
|
||||||
|
84
config/armor.json
Normal file
84
config/armor.json
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,33 +1,3 @@
|
|||||||
{
|
{
|
||||||
"DebugMode": false,
|
"DebugMode": false
|
||||||
|
|
||||||
|
|
||||||
"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
|
|
||||||
},
|
|
||||||
|
|
||||||
"weapons":
|
|
||||||
{
|
|
||||||
"jam": false,
|
|
||||||
"misfeed": false,
|
|
||||||
"misfire": false,
|
|
||||||
"overheat": false,
|
|
||||||
"slide": false
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,37 +0,0 @@
|
|||||||
export interface Config
|
|
||||||
{
|
|
||||||
DebugMode: boolean
|
|
||||||
raid: Raid
|
|
||||||
quests: Quests
|
|
||||||
weapons: Weapons
|
|
||||||
}
|
|
||||||
|
|
||||||
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 Weapons
|
|
||||||
{
|
|
||||||
jam: boolean
|
|
||||||
misfeed: boolean
|
|
||||||
misfire: boolean
|
|
||||||
overheat: boolean
|
|
||||||
slide: boolean
|
|
||||||
}
|
|
||||||
|
|
@ -25,6 +25,8 @@
|
|||||||
|
|
||||||
"examinedByDefault": false,
|
"examinedByDefault": false,
|
||||||
"removeBackpackFilter": true,
|
"removeBackpackFilter": true,
|
||||||
|
"removeDiscardLimit": true,
|
||||||
|
"removeItemRestrictions": false,
|
||||||
"removeKeyUsageMax": false,
|
"removeKeyUsageMax": false,
|
||||||
"roublesMaxStack": 500000,
|
"roublesMaxStack": 500000,
|
||||||
"dollarsMaxStack": 50000,
|
"dollarsMaxStack": 50000,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"allExtractsAvailable": false,
|
"allExtractsAvailable": false,
|
||||||
|
"freeLabsEntry": false,
|
||||||
"exfilTime": 8,
|
"exfilTime": 8,
|
||||||
"extractionsExtended": false,
|
"extractionsExtended": false,
|
||||||
"noExtractRestrictions": false
|
"noExtractRestrictions": false
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
@ -1,4 +0,0 @@
|
|||||||
export interface Progression
|
|
||||||
{
|
|
||||||
enabled: boolean
|
|
||||||
}
|
|
3
config/quests.json
Normal file
3
config/quests.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"onlyFoundInRaid": true
|
||||||
|
}
|
13
config/raid.json
Normal file
13
config/raid.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"carExtractBaseStandingGain": 0.25,
|
||||||
|
"chompiesBossFix": true,
|
||||||
|
"fixOpenZones": true,
|
||||||
|
"scavExtractGain": 0.01,
|
||||||
|
"timeLimit": 60,
|
||||||
|
"aiAmount": "asonline",
|
||||||
|
"aiDifficulty": "asonline",
|
||||||
|
"bossEnabled": true,
|
||||||
|
"scavWars": false,
|
||||||
|
"taggedAndCursed": false,
|
||||||
|
"enablePve": true
|
||||||
|
}
|
11
config/skills.json
Normal file
11
config/skills.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"skillEnduranceWeightThreshold": 0.65,
|
||||||
|
"skillFatiguePerPoint": 0.6,
|
||||||
|
"skillFreshEffectiveness": 1.3,
|
||||||
|
"skillFatigueReset": 200,
|
||||||
|
"skillFreshPoints": 1,
|
||||||
|
"skillMinEffectiveness": 0.0001,
|
||||||
|
"skillPointsBeforeFatigue": 1,
|
||||||
|
"skillProgressRate": 0.4,
|
||||||
|
"weaponSkillProgressRate": 1
|
||||||
|
}
|
26
config/ts/armor.ts
Normal file
26
config/ts/armor.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
export interface ArmorConfig
|
||||||
|
{
|
||||||
|
armorMaterials: Armor
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Armor
|
||||||
|
{
|
||||||
|
uhmwpe: Materials
|
||||||
|
aramid: Materials
|
||||||
|
combined: Materials
|
||||||
|
titan: Materials
|
||||||
|
aluminium: Materials
|
||||||
|
armoredSteel: Materials
|
||||||
|
ceramic: Materials
|
||||||
|
glass: Materials
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Materials
|
||||||
|
{
|
||||||
|
destructibility: number
|
||||||
|
minRepairDegradation: number
|
||||||
|
maxRepairDegradation: number
|
||||||
|
explosionDestructibility: number
|
||||||
|
minRepairKitDegradation: number
|
||||||
|
maxRepairKitDegradation: number
|
||||||
|
}
|
@ -31,15 +31,7 @@ export interface DifficultyWeights
|
|||||||
{
|
{
|
||||||
difficulty: string
|
difficulty: string
|
||||||
useWeights: boolean
|
useWeights: boolean
|
||||||
weights: Weights
|
weights: Record<string, number>
|
||||||
}
|
|
||||||
|
|
||||||
export interface Weights
|
|
||||||
{
|
|
||||||
easy: number
|
|
||||||
normal: number
|
|
||||||
hard: number
|
|
||||||
impossible: number
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ConvertIntoPmcChance
|
export interface ConvertIntoPmcChance
|
4
config/ts/config.ts
Normal file
4
config/ts/config.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export interface Config
|
||||||
|
{
|
||||||
|
DebugMode: boolean
|
||||||
|
}
|
@ -6,6 +6,8 @@ export interface ItemsConfig
|
|||||||
eodStash: Stash
|
eodStash: Stash
|
||||||
examinedByDefault: boolean
|
examinedByDefault: boolean
|
||||||
removeBackpackFilter: boolean
|
removeBackpackFilter: boolean
|
||||||
|
removeDiscardLimit: boolean
|
||||||
|
removeItemRestrictions: boolean
|
||||||
removeKeyUsageMax: boolean
|
removeKeyUsageMax: boolean
|
||||||
dollarsMaxStack: number
|
dollarsMaxStack: number
|
||||||
eurosMaxStack: number
|
eurosMaxStack: number
|
@ -1,6 +1,7 @@
|
|||||||
export interface LocationsConfig
|
export interface LocationsConfig
|
||||||
{
|
{
|
||||||
allExtractsAvailable: boolean
|
allExtractsAvailable: boolean
|
||||||
|
freeLabsEntry: boolean
|
||||||
exfilTime: number
|
exfilTime: number
|
||||||
extractionsExtended: boolean
|
extractionsExtended: boolean
|
||||||
noExtractRestrictions: boolean
|
noExtractRestrictions: boolean
|
4
config/ts/quests.ts
Normal file
4
config/ts/quests.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export interface QuestsConfig
|
||||||
|
{
|
||||||
|
onlyFoundInRaid: boolean
|
||||||
|
}
|
14
config/ts/raid.ts
Normal file
14
config/ts/raid.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
export interface RaidConfig
|
||||||
|
{
|
||||||
|
carExtractBaseStandingGain: number
|
||||||
|
chompiesBossFix: boolean
|
||||||
|
fixOpenZones: boolean
|
||||||
|
scavExtractGain: number
|
||||||
|
timeLimit: number
|
||||||
|
aiAmount: string
|
||||||
|
aiDifficulty: string
|
||||||
|
bossEnabled: boolean
|
||||||
|
scavWars: boolean
|
||||||
|
taggedAndCursed: boolean
|
||||||
|
enablePve: boolean
|
||||||
|
}
|
12
config/ts/skills.ts
Normal file
12
config/ts/skills.ts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
export interface SkillsConfig
|
||||||
|
{
|
||||||
|
skillEnduranceWeightThreshold: number
|
||||||
|
skillFatiguePerPoint: number
|
||||||
|
skillFatigueReset: number
|
||||||
|
skillFreshEffectiveness: number
|
||||||
|
skillFreshPoints: number
|
||||||
|
skillMinEffectiveness: number
|
||||||
|
skillPointsBeforeFatigue: number
|
||||||
|
skillProgressRate: number
|
||||||
|
weaponSkillProgressRate: number
|
||||||
|
}
|
14
config/ts/weapons.ts
Normal file
14
config/ts/weapons.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
export interface WeaponsConfig
|
||||||
|
{
|
||||||
|
malfunctions: Malfunctions
|
||||||
|
smgInHolsters: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Malfunctions
|
||||||
|
{
|
||||||
|
jam: boolean
|
||||||
|
misfeed: boolean
|
||||||
|
misfire: boolean
|
||||||
|
overheat: boolean
|
||||||
|
slide: boolean
|
||||||
|
}
|
12
config/weapons.json
Normal file
12
config/weapons.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"malfunctions":
|
||||||
|
{
|
||||||
|
"jam": false,
|
||||||
|
"misfeed": false,
|
||||||
|
"misfire": false,
|
||||||
|
"overheat": false,
|
||||||
|
"slide": false
|
||||||
|
},
|
||||||
|
|
||||||
|
"smgInHolsters": false
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Valens-AIO",
|
"name": "Valens-AIO",
|
||||||
"version": "1.3.1",
|
"version": "1.4.0",
|
||||||
"main": "src/mod.js",
|
"main": "src/mod.js",
|
||||||
"license": "CC BY-NC-ND 4.0",
|
"license": "CC BY-NC-ND 4.0",
|
||||||
"author": "Valens",
|
"author": "Valens",
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
import { Grenade, Ammo762x51, Ammo762x54, Ammo338Lapua, Ammo46x30, Ammo57x28, Ammo762x25, Ammo9x18, Ammo9x19, Ammo9x21, Ammo357Mag, Ammo45ACP, Ammo545x39, Ammo556x45, Ammo300Blackout, Ammo762x39, Ammo9x39, Ammo366TKM, Ammo127x55, Ammo12Gauge, Ammo20Gauge, Ammo23x75, Ammo30x29, Ammo26x75 } from "@spt-aki/models/enums/AmmoTypes";
|
import { Grenade, Ammo762x51, Ammo762x54, Ammo338Lapua, Ammo46x30, Ammo57x28, Ammo762x25, Ammo9x18, Ammo9x19, Ammo9x21, Ammo357Mag, Ammo45ACP, Ammo545x39, Ammo556x45, Ammo300Blackout, Ammo762x39, Ammo9x39, Ammo366TKM, Ammo127x55, Ammo12Gauge, Ammo20Gauge, Ammo23x75, Ammo30x29, Ammo26x75 } from "@spt-aki/models/enums/AmmoTypes";
|
||||||
import { AmmoConfig } from "../config/ammo";
|
import { AmmoConfig } from "../config/ts/ammo";
|
||||||
|
|
||||||
export class Ammo
|
export class Ammo
|
||||||
{
|
{
|
||||||
private modConfig: AmmoConfig = require("./config/ammo.json")
|
private modConfig: AmmoConfig = require("../config/ammo.json")
|
||||||
private logger: Logger;
|
private logger: Logger;
|
||||||
private tables: DatabaseServer;
|
private tables: DatabaseServer;
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ export class Ammo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sets 338 Lapua Magnum max stacks.
|
// Sets .338 Lapua Magnum max stacks.
|
||||||
if (mod.a338Lapua != 30)
|
if (mod.a338Lapua != 30)
|
||||||
{
|
{
|
||||||
for (const value of Object.values(Ammo338Lapua))
|
for (const value of Object.values(Ammo338Lapua))
|
||||||
|
131
src/armor.ts
Normal file
131
src/armor.ts
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
|
import { ArmorConfig } from "../config/ts/armor";
|
||||||
|
import { Logger } from "./logger";
|
||||||
|
|
||||||
|
export class Armor
|
||||||
|
{
|
||||||
|
private modConfig: ArmorConfig = require("../config/armor.json");
|
||||||
|
private logger: Logger;
|
||||||
|
private tables: DatabaseServer;
|
||||||
|
private mod: any;
|
||||||
|
private armor: any;
|
||||||
|
|
||||||
|
constructor(logger: Logger, databaseServer: DatabaseServer)
|
||||||
|
{
|
||||||
|
this.logger = logger;
|
||||||
|
this.tables = databaseServer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public updateArmor(): void
|
||||||
|
{
|
||||||
|
const mod = this.modConfig;
|
||||||
|
const uhmwpe = this.modConfig.armorMaterials.uhmwpe;
|
||||||
|
const aramid = this.modConfig.armorMaterials.aramid;
|
||||||
|
const combined = this.modConfig.armorMaterials.combined;
|
||||||
|
const titan = this.modConfig.armorMaterials.titan;
|
||||||
|
const aluminium = this.modConfig.armorMaterials.aluminium;
|
||||||
|
const steel = this.modConfig.armorMaterials.armoredSteel;
|
||||||
|
const ceramic = this.modConfig.armorMaterials.ceramic;
|
||||||
|
const glass = this.modConfig.armorMaterials.glass;
|
||||||
|
const armor = this.tables.getTables().globals.config.ArmorMaterials;
|
||||||
|
|
||||||
|
|
||||||
|
if (uhmwpe.destructibility != 0.45 || uhmwpe.minRepairDegradation != 0.01 || uhmwpe.maxRepairDegradation != 0.03
|
||||||
|
|| uhmwpe.explosionDestructibility != 0.4 || uhmwpe.minRepairKitDegradation != 0.005 || uhmwpe.maxRepairKitDegradation != 0.025)
|
||||||
|
{
|
||||||
|
armor.UHMWPE.Destructibility = uhmwpe.destructibility;
|
||||||
|
armor.UHMWPE.MinRepairDegradation = uhmwpe.minRepairDegradation;
|
||||||
|
armor.UHMWPE.MaxRepairDegradation = uhmwpe.maxRepairDegradation;
|
||||||
|
armor.UHMWPE.ExplosionDestructibility = uhmwpe.explosionDestructibility;
|
||||||
|
armor.UHMWPE.MinRepairKitDegradation = uhmwpe.minRepairKitDegradation;
|
||||||
|
armor.UHMWPE.MaxRepairKitDegradation = uhmwpe.maxRepairKitDegradation;
|
||||||
|
this.logger.info("UHMWPE Armor Materials Patched");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aramid.destructibility != 0.25 || aramid.minRepairDegradation != 0.03 || aramid.maxRepairDegradation != 0.07
|
||||||
|
|| aramid.explosionDestructibility != 0.2 || aramid.minRepairKitDegradation != 0.025 || aramid.maxRepairKitDegradation != 0.065)
|
||||||
|
{
|
||||||
|
armor.Aramid.Destructibility = aramid.destructibility;
|
||||||
|
armor.Aramid.MinRepairDegradation = aramid.minRepairDegradation;
|
||||||
|
armor.Aramid.MaxRepairDegradation = aramid.maxRepairDegradation;
|
||||||
|
armor.Aramid.ExplosionDestructibility = aramid.explosionDestructibility;
|
||||||
|
armor.Aramid.MinRepairKitDegradation = aramid.minRepairKitDegradation;
|
||||||
|
armor.Aramid.MaxRepairKitDegradation = aramid.maxRepairKitDegradation;
|
||||||
|
this.logger.info("Aramid Armor Materials Patched");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (combined.destructibility != 0.5 || combined.minRepairDegradation != 0.1 || combined.maxRepairDegradation != 0.15
|
||||||
|
|| combined.explosionDestructibility != 0.4 || combined.minRepairKitDegradation != 0.009 || combined.maxRepairKitDegradation != 0.014)
|
||||||
|
{
|
||||||
|
armor.Combined.Destructibility = combined.destructibility;
|
||||||
|
armor.Combined.MinRepairDegradation = combined.minRepairDegradation;
|
||||||
|
armor.Combined.MaxRepairDegradation = combined.maxRepairDegradation;
|
||||||
|
armor.Combined.ExplosionDestructibility = combined.explosionDestructibility;
|
||||||
|
armor.Combined.MinRepairKitDegradation = combined.minRepairKitDegradation;
|
||||||
|
armor.Combined.MaxRepairKitDegradation = combined.maxRepairKitDegradation;
|
||||||
|
this.logger.info("Combined Armor Materials Patched");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (titan.destructibility != 0.55 || titan.minRepairDegradation != 0.06 || titan.maxRepairDegradation != 0.1
|
||||||
|
|| titan.explosionDestructibility != 0.5 || titan.minRepairKitDegradation != 0.055 || titan.maxRepairKitDegradation != 0.09)
|
||||||
|
{
|
||||||
|
armor.Titan.Destructibility = titan.destructibility;
|
||||||
|
armor.Titan.MinRepairDegradation = titan.minRepairDegradation;
|
||||||
|
armor.Titan.MaxRepairDegradation = titan.maxRepairDegradation;
|
||||||
|
armor.Titan.ExplosionDestructibility = titan.explosionDestructibility;
|
||||||
|
armor.Titan.MinRepairKitDegradation = titan.minRepairKitDegradation;
|
||||||
|
armor.Titan.MaxRepairKitDegradation = titan.maxRepairKitDegradation;
|
||||||
|
this.logger.info("Titan Armor Materials Patched");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aluminium.destructibility != 0.6 || aluminium.minRepairDegradation != 0.06 || aluminium.maxRepairDegradation != 0.1
|
||||||
|
|| aluminium.explosionDestructibility != 0.6 || aluminium.minRepairKitDegradation != 0.055 || aluminium.maxRepairKitDegradation != 0.09)
|
||||||
|
{
|
||||||
|
armor.Aluminium.Destructibility = aluminium.destructibility;
|
||||||
|
armor.Aluminium.MinRepairDegradation = aluminium.minRepairDegradation;
|
||||||
|
armor.Aluminium.MaxRepairDegradation = aluminium.maxRepairDegradation;
|
||||||
|
armor.Aluminium.ExplosionDestructibility = aluminium.explosionDestructibility;
|
||||||
|
armor.Aluminium.MinRepairKitDegradation = aluminium.minRepairKitDegradation;
|
||||||
|
armor.Aluminium.MaxRepairKitDegradation = aluminium.maxRepairKitDegradation;
|
||||||
|
this.logger.info("Aluminium Armor Materials Patched");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (steel.destructibility != 0.7 || steel.minRepairDegradation != 0.01 || steel.maxRepairDegradation != 0.03
|
||||||
|
|| steel.explosionDestructibility != 0.6 || steel.minRepairKitDegradation != 0.005 || steel.maxRepairKitDegradation != 0.025)
|
||||||
|
{
|
||||||
|
armor.ArmoredSteel.Destructibility = steel.destructibility;
|
||||||
|
armor.ArmoredSteel.MinRepairDegradation = steel.minRepairDegradation;
|
||||||
|
armor.ArmoredSteel.MaxRepairDegradation = steel.maxRepairDegradation;
|
||||||
|
armor.ArmoredSteel.ExplosionDestructibility = steel.explosionDestructibility;
|
||||||
|
armor.ArmoredSteel.MinRepairKitDegradation = steel.minRepairKitDegradation;
|
||||||
|
armor.ArmoredSteel.MaxRepairKitDegradation = steel.maxRepairKitDegradation;
|
||||||
|
this.logger.info("Steel Armor Materials Patched");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ceramic.destructibility != 0.8 || ceramic.minRepairDegradation != 0.17 || ceramic.maxRepairDegradation != 0.22
|
||||||
|
|| ceramic.explosionDestructibility != 0.7 || ceramic.minRepairKitDegradation != 0.155 || ceramic.maxRepairKitDegradation != 0.2)
|
||||||
|
{
|
||||||
|
armor.Ceramic.Destructibility = ceramic.destructibility;
|
||||||
|
armor.Ceramic.MinRepairDegradation = ceramic.minRepairDegradation;
|
||||||
|
armor.Ceramic.MaxRepairDegradation = ceramic.maxRepairDegradation;
|
||||||
|
armor.Ceramic.ExplosionDestructibility = ceramic.explosionDestructibility;
|
||||||
|
armor.Ceramic.MinRepairKitDegradation = ceramic.minRepairKitDegradation;
|
||||||
|
armor.Ceramic.MaxRepairKitDegradation = ceramic.maxRepairKitDegradation;
|
||||||
|
this.logger.info("Ceramic Armor Materials Patched");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (glass.destructibility != 0.8 || glass.minRepairDegradation != 0.23 || glass.maxRepairDegradation != 0.42
|
||||||
|
|| glass.explosionDestructibility != 0.8 || glass.minRepairKitDegradation != 0.21 || glass.maxRepairKitDegradation != 0.38)
|
||||||
|
{
|
||||||
|
armor.Glass.Destructibility = glass.destructibility;
|
||||||
|
armor.Glass.MinRepairDegradation = glass.minRepairDegradation;
|
||||||
|
armor.Glass.MaxRepairDegradation = glass.maxRepairDegradation;
|
||||||
|
armor.Glass.ExplosionDestructibility = glass.explosionDestructibility;
|
||||||
|
armor.Glass.MinRepairKitDegradation = glass.minRepairKitDegradation;
|
||||||
|
armor.Glass.MaxRepairKitDegradation = glass.maxRepairKitDegradation;
|
||||||
|
this.logger.info("Glass Armor Materials Patched");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig";
|
import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig";
|
||||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
import { BotsConfig } from "../config/bots";
|
import { BotsConfig } from "../config/ts/bots";
|
||||||
import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper";
|
import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper";
|
||||||
export class Bots
|
export class Bots
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
import { ContainersConfig } from "../config/containers";
|
import { ContainersConfig } from "../config/ts/containers";
|
||||||
import { CommonContainers, SecuredContainers } from "@spt-aki/models/enums/ContainerTypes";
|
import { CommonContainers, SecuredContainers } from "@spt-aki/models/enums/ContainerTypes";
|
||||||
|
|
||||||
export class Containers
|
export class Containers
|
||||||
|
14
src/flea.ts
14
src/flea.ts
@ -1,33 +1,33 @@
|
|||||||
import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig";
|
import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig";
|
||||||
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
import { FleaConfig } from "../config/flea";
|
import { FleaConfig } from "../config/ts/flea";
|
||||||
import { IGlobals } from "@spt-aki/models/spt/server/IDatabaseTables/IGlobals";
|
|
||||||
|
|
||||||
export class Flea
|
export class Flea
|
||||||
{
|
{
|
||||||
private modConfig: FleaConfig = require("../config/flea.json");
|
private modConfig: FleaConfig = require("../config/flea.json");
|
||||||
private logger: Logger;
|
private logger: Logger;
|
||||||
private ragfairConfig: IRagfairConfig;
|
private ragfairConfig: IRagfairConfig;
|
||||||
private globals: IGlobals;
|
private tables: DatabaseServer;
|
||||||
|
|
||||||
|
|
||||||
constructor (logger: Logger, ragfairConfig: IRagfairConfig, globals: IGlobals)
|
constructor (logger: Logger, ragfairConfig: IRagfairConfig, databaseServer: DatabaseServer)
|
||||||
{
|
{
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.ragfairConfig = ragfairConfig;
|
this.ragfairConfig = ragfairConfig;
|
||||||
this.globals = globals;
|
this.tables = databaseServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public updateFlea(): void
|
public updateFlea(): void
|
||||||
{
|
{
|
||||||
const mod = this.modConfig;
|
const mod = this.modConfig;
|
||||||
const global = this.globals;
|
const global = this.tables.getTables().globals;
|
||||||
const ragfair = this.ragfairConfig.dynamic;
|
const ragfair = this.ragfairConfig.dynamic;
|
||||||
|
|
||||||
if (mod.minUserLevel != 15)
|
if (mod.minUserLevel != 15)
|
||||||
{
|
{
|
||||||
global.minUserLevel = mod.minUserLevel;
|
global.config.RagFair.minUserLevel = mod.minUserLevel;
|
||||||
this.logger.info(`Fleamarket unlocked at level ${mod.minUserLevel}`)
|
this.logger.info(`Fleamarket unlocked at level ${mod.minUserLevel}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
import { IGlobals } from "@spt-aki/models/spt/server/IDatabaseTables/IGlobals";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { GlobalsConfig } from "../config/globals";
|
import { GlobalsConfig } from "../config/ts/globals";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
|
|
||||||
export class Globals
|
export class Globals
|
||||||
{
|
{
|
||||||
private modConfig: GlobalsConfig = require("../config/globals.json");
|
private modConfig: GlobalsConfig = require("../config/globals.json");
|
||||||
private logger: Logger;
|
private logger: Logger;
|
||||||
private globals: IGlobals;
|
private tables: DatabaseServer;
|
||||||
|
|
||||||
constructor(logger: Logger, globals: IGlobals)
|
constructor(logger: Logger, databaseServer: DatabaseServer)
|
||||||
{
|
{
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.globals = globals;
|
this.tables = databaseServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public updateGlobals(): void
|
public updateGlobals(): void
|
||||||
{
|
{
|
||||||
const mod = this.modConfig;
|
const mod = this.modConfig;
|
||||||
const global = this.globals;
|
const global = this.tables.getTables().globals;
|
||||||
|
|
||||||
if (mod.damagePerMeter != 9 || mod.safeHeight != 3)
|
if (mod.damagePerMeter != 9 || mod.safeHeight != 3)
|
||||||
{
|
{
|
||||||
@ -50,7 +50,7 @@ export class Globals
|
|||||||
|
|
||||||
private matchEndSettings(): void
|
private matchEndSettings(): void
|
||||||
{
|
{
|
||||||
const global1 = this.globals.config.exp.match_end;
|
const global1 = this.tables.getTables().globals.config.exp.match_end;
|
||||||
const mod = this.modConfig.matchEnd;
|
const mod = this.modConfig.matchEnd;
|
||||||
|
|
||||||
global1.survived_exp_requirement = mod.survivedExpRequirement;
|
global1.survived_exp_requirement = mod.survivedExpRequirement;
|
||||||
@ -63,8 +63,8 @@ export class Globals
|
|||||||
global1.survivedMult = mod.survivedMult;
|
global1.survivedMult = mod.survivedMult;
|
||||||
global1.runnerMult = mod.runnerMult;
|
global1.runnerMult = mod.runnerMult;
|
||||||
global1.killedMult = mod.killedMult;
|
global1.killedMult = mod.killedMult;
|
||||||
this.globals.config.exp.kill.headShotMult = mod.headShotMult;
|
this.tables.getTables().globals.config.exp.kill.headShotMult = mod.headShotMult;
|
||||||
this.globals.config.exp.kill.expOnDamageAllHealth = mod.expOnDamageAllHealth;
|
this.tables.getTables().globals.config.exp.kill.expOnDamageAllHealth = mod.expOnDamageAllHealth;
|
||||||
this.logger.info("Match End Settings Patched");
|
this.logger.info("Match End Settings Patched");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
import { HideoutConfig } from "../config/hideout";
|
import { HideoutConfig } from "../config/ts/hideout";
|
||||||
import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig";
|
import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig";
|
||||||
|
|
||||||
export class Hideout
|
export class Hideout
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { ITrader } from "@spt-aki/models/eft/common/tables/ITrader";
|
import { ITrader } from "@spt-aki/models/eft/common/tables/ITrader";
|
||||||
import { IInsuranceConfig } from "@spt-aki/models/spt/config/IInsuranceConfig";
|
import { IInsuranceConfig } from "@spt-aki/models/spt/config/IInsuranceConfig";
|
||||||
import { InsuranceConfig } from "../config/insurance";
|
import { InsuranceConfig } from "../config/ts/insurance";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
|
|
||||||
export class Insurance
|
export class Insurance
|
||||||
|
50
src/items.ts
50
src/items.ts
@ -1,5 +1,5 @@
|
|||||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { ItemsConfig } from "../config/items";
|
import { ItemsConfig } from "../config/ts/items";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
|
|
||||||
export class Items
|
export class Items
|
||||||
@ -100,6 +100,20 @@ export class Items
|
|||||||
this.items["569668774bdc2da2298b4568"]._props.StackMaxSize = this.modConfig.eurosMaxStack;
|
this.items["569668774bdc2da2298b4568"]._props.StackMaxSize = this.modConfig.eurosMaxStack;
|
||||||
this.logger.info(`Euro Max Stack set to ${this.modConfig.eurosMaxStack}`, true);
|
this.logger.info(`Euro Max Stack set to ${this.modConfig.eurosMaxStack}`, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove ExcludedFilter Restrictions from all items.
|
||||||
|
if (this.modConfig.removeItemRestrictions)
|
||||||
|
{
|
||||||
|
this.removeItemRestrictions();
|
||||||
|
this.logger.info("Removed Item Restrictions");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove the Discard Limit from in raid restrictions.
|
||||||
|
if (this.modConfig.removeDiscardLimit)
|
||||||
|
{
|
||||||
|
this.removeDiscardLimit();
|
||||||
|
this.logger.info("Removed Discard Limit");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -124,7 +138,31 @@ export class Items
|
|||||||
{
|
{
|
||||||
if (this.items[item]._parent === "5448e53e4bdc2d60728b4567")
|
if (this.items[item]._parent === "5448e53e4bdc2d60728b4567")
|
||||||
{
|
{
|
||||||
this.items[item]._props.Grids[4]._props.filters[0].ExcludedFilter = [];
|
for (const i in this.items[item]._props.Grids)
|
||||||
|
{
|
||||||
|
const grid = this.items[item]._props.Grids[i];
|
||||||
|
grid._props.filters[0].ExcludedFilter = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Removes any values in the ExcludedFilter for all items under _props > _Grids > _props > filters > ExcludedFilter in database/templates/items.json
|
||||||
|
private removeItemRestrictions(): void
|
||||||
|
{
|
||||||
|
for (const item in this.items)
|
||||||
|
{
|
||||||
|
for (const i in this.items[item]._props?.Grids)
|
||||||
|
{
|
||||||
|
const grid = this.items[item]._props?.Grids[i];
|
||||||
|
for (const j in grid._props.filters)
|
||||||
|
{
|
||||||
|
const filters = grid._props.filters[j];
|
||||||
|
if (filters != [] && filters.ExcludedFilter != [])
|
||||||
|
{
|
||||||
|
filters.ExcludedFilter = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,4 +210,12 @@ export class Items
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private removeDiscardLimit(): void
|
||||||
|
{
|
||||||
|
for (const item in this.items)
|
||||||
|
{
|
||||||
|
this.items[item]._props.DiscardLimit = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { LocationsConfig } from "../config/locations";
|
import { LocationsConfig } from "../config/ts/locations";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
|
|
||||||
export class Locations
|
export class Locations
|
||||||
@ -45,6 +45,13 @@ export class Locations
|
|||||||
this.extractionsExtended();
|
this.extractionsExtended();
|
||||||
this.logger.info("Extractions Are Extended");
|
this.logger.info("Extractions Are Extended");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove the access key "5c94bbff86f7747ee735c08f" (Labs access card) from Labs.
|
||||||
|
if (mod.freeLabsEntry)
|
||||||
|
{
|
||||||
|
this.freeLabsEntry();
|
||||||
|
this.logger.info("Labs is now Free to enter");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private allExtractsAvailable(): void
|
private allExtractsAvailable(): void
|
||||||
@ -176,4 +183,10 @@ export class Locations
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private freeLabsEntry(): void
|
||||||
|
{
|
||||||
|
const locations = this.tables.getTables().locations.laboratory.base;
|
||||||
|
locations.AccessKeys = [];
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig";
|
import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig";
|
||||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { LootConfig } from "../config/loot";
|
import { LootConfig } from "../config/ts/loot";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
|
|
||||||
export class Loot
|
export class Loot
|
||||||
|
20
src/mod.ts
20
src/mod.ts
@ -12,6 +12,7 @@ import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
|
|||||||
import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig";
|
import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig";
|
||||||
import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig";
|
import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig";
|
||||||
import { Ammo } from "./ammo";
|
import { Ammo } from "./ammo";
|
||||||
|
import { Armor } from "./armor";
|
||||||
import { Bots } from "./bots";
|
import { Bots } from "./bots";
|
||||||
import { Flea } from "./flea";
|
import { Flea } from "./flea";
|
||||||
import { Hideout } from "./hideout";
|
import { Hideout } from "./hideout";
|
||||||
@ -21,13 +22,12 @@ import { Raid } from "./raid";
|
|||||||
import { Globals } from "./globals";
|
import { Globals } from "./globals";
|
||||||
import { Insurance } from "./insurance";
|
import { Insurance } from "./insurance";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
import { Config } from "../config/config";
|
import { Config } from "../config/ts/config";
|
||||||
import { Weapons } from "./weapons";
|
import { Weapons } from "./weapons";
|
||||||
import { Containers } from "./containers";
|
import { Containers } from "./containers";
|
||||||
import { Locations } from "./locations";
|
import { Locations } from "./locations";
|
||||||
import { Quests } from "./quests";
|
import { Quests } from "./quests";
|
||||||
import { Progression } from "./progression";
|
import { Skills } from "./skills";
|
||||||
import { IGlobals } from "@spt-aki/models/eft/common/IGlobals";
|
|
||||||
import { Prewipe } from "./prewipe";
|
import { Prewipe } from "./prewipe";
|
||||||
import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig";
|
import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig";
|
||||||
//import { Airdrop } from "./airdrop";
|
//import { Airdrop } from "./airdrop";
|
||||||
@ -45,7 +45,6 @@ class ValensAIO implements IPostDBLoadMod
|
|||||||
//private airdropConfig: IAirdropConfig;
|
//private airdropConfig: IAirdropConfig;
|
||||||
private inRaidConfig: IInRaidConfig;
|
private inRaidConfig: IInRaidConfig;
|
||||||
private weightedRandomHelper : WeightedRandomHelper;
|
private weightedRandomHelper : WeightedRandomHelper;
|
||||||
private globals : IGlobals;
|
|
||||||
private hideout: IHideoutConfig
|
private hideout: IHideoutConfig
|
||||||
|
|
||||||
public postDBLoad(container: DependencyContainer): void
|
public postDBLoad(container: DependencyContainer): void
|
||||||
@ -69,16 +68,19 @@ class ValensAIO implements IPostDBLoadMod
|
|||||||
const ammo = new Ammo(vLogger, this.databaseServer);
|
const ammo = new Ammo(vLogger, this.databaseServer);
|
||||||
ammo.updateAmmo();
|
ammo.updateAmmo();
|
||||||
|
|
||||||
|
const armor = new Armor(vLogger, this.databaseServer);
|
||||||
|
armor.updateArmor();
|
||||||
|
|
||||||
const bots = new Bots(vLogger, this.databaseServer, this.botConfig, this.weightedRandomHelper);
|
const bots = new Bots(vLogger, this.databaseServer, this.botConfig, this.weightedRandomHelper);
|
||||||
bots.updateBots();
|
bots.updateBots();
|
||||||
|
|
||||||
const containers = new Containers(vLogger, this.databaseServer);
|
const containers = new Containers(vLogger, this.databaseServer);
|
||||||
containers.updateContainers();
|
containers.updateContainers();
|
||||||
|
|
||||||
const flea = new Flea(vLogger, this.ragfairConfig, this.globals);
|
const flea = new Flea(vLogger, this.ragfairConfig, this.databaseServer);
|
||||||
flea.updateFlea();
|
flea.updateFlea();
|
||||||
|
|
||||||
const globals = new Globals(vLogger, this.globals);
|
const globals = new Globals(vLogger, this.databaseServer);
|
||||||
globals.updateGlobals();
|
globals.updateGlobals();
|
||||||
|
|
||||||
const hideout = new Hideout(vLogger, this.databaseServer, this.hideout);
|
const hideout = new Hideout(vLogger, this.databaseServer, this.hideout);
|
||||||
@ -99,15 +101,15 @@ class ValensAIO implements IPostDBLoadMod
|
|||||||
const prewipe = new Prewipe(vLogger, this.databaseServer);
|
const prewipe = new Prewipe(vLogger, this.databaseServer);
|
||||||
prewipe.updatePrewipe();
|
prewipe.updatePrewipe();
|
||||||
|
|
||||||
const progression = new Progression(vLogger, this.databaseServer, this.botConfig);
|
|
||||||
progression.updateProgression();
|
|
||||||
|
|
||||||
const quests = new Quests(vLogger, this.databaseServer);
|
const quests = new Quests(vLogger, this.databaseServer);
|
||||||
quests.updateQuests();
|
quests.updateQuests();
|
||||||
|
|
||||||
const raid = new Raid(vLogger, this.databaseServer, this.inRaidConfig);
|
const raid = new Raid(vLogger, this.databaseServer, this.inRaidConfig);
|
||||||
raid.updateRaid();
|
raid.updateRaid();
|
||||||
|
|
||||||
|
const skills = new Skills(vLogger, this.databaseServer);
|
||||||
|
skills.updateSkills();
|
||||||
|
|
||||||
const weapons = new Weapons(vLogger, this.databaseServer);
|
const weapons = new Weapons(vLogger, this.databaseServer);
|
||||||
weapons.updateWeapons();
|
weapons.updateWeapons();
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { PrewipeConfig } from "../config/prewipe";
|
import { PrewipeConfig } from "../config/ts/prewipe";
|
||||||
import { Money } from "@spt-aki/models/enums/Money"
|
import { Money } from "@spt-aki/models/enums/Money"
|
||||||
import type { BossLocationSpawn } from "@spt-aki/models/eft/common/ILocationBase";
|
import type { BossLocationSpawn } from "@spt-aki/models/eft/common/ILocationBase";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
|
@ -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,22 +1,22 @@
|
|||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
import { Config } from "../config/config";
|
import { QuestsConfig } from "../config/ts/quests";
|
||||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
|
|
||||||
export class Quests
|
export class Quests
|
||||||
{
|
{
|
||||||
private modConfig: Config = require("../config/config.json");
|
private modConfig: QuestsConfig = require("../config/quests.json");
|
||||||
private logger: Logger;
|
private logger: Logger;
|
||||||
private tables: DatabaseServer;
|
private tables: DatabaseServer;
|
||||||
|
|
||||||
constructor(logger: Logger, databaseServer: DatabaseServer)
|
constructor(logger: Logger, databaseServer: DatabaseServer)
|
||||||
{
|
{
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.tables = databaseServer.getTables();
|
this.tables = databaseServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public updateQuests(): void
|
public updateQuests(): void
|
||||||
{
|
{
|
||||||
if (!this.modConfig.quests.onlyFoundInRaid)
|
if (!this.modConfig.onlyFoundInRaid)
|
||||||
{
|
{
|
||||||
this.onlyFoundInRaid();
|
this.onlyFoundInRaid();
|
||||||
this.logger.info("Quest Items No Longer Need Be Found In Raid");
|
this.logger.info("Quest Items No Longer Need Be Found In Raid");
|
||||||
@ -26,12 +26,12 @@ export class Quests
|
|||||||
// Updates the weight modifier (as a multiplier) for all items in database/templates/items.json
|
// Updates the weight modifier (as a multiplier) for all items in database/templates/items.json
|
||||||
private onlyFoundInRaid(): void
|
private onlyFoundInRaid(): void
|
||||||
{
|
{
|
||||||
const quests = this.tables.templates.quests;
|
const quests = this.tables.getTables().templates.quests;
|
||||||
|
|
||||||
for (const questid in quests)
|
for (const questid in quests)
|
||||||
{
|
{
|
||||||
const questsAvailableForFinishConditions = quests[questid].conditions.AvailableForFinish;
|
const questsAvailableForFinishConditions = quests[questid].conditions.AvailableForFinish;
|
||||||
const findItemConditions = questsAvailableForFinishConditions.find(x=>x.parent === "FindItem");
|
const findItemConditions = questsAvailableForFinishConditions.find(x=>x._parent === "FindItem");
|
||||||
|
|
||||||
if (!findItemConditions)
|
if (!findItemConditions)
|
||||||
{
|
{
|
||||||
@ -44,5 +44,4 @@ export class Quests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
20
src/raid.ts
20
src/raid.ts
@ -1,11 +1,11 @@
|
|||||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
|
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
import { Config } from "../config/config";
|
import { RaidConfig } from "../config/ts/raid";
|
||||||
|
|
||||||
export class Raid
|
export class Raid
|
||||||
{
|
{
|
||||||
private modConfig: Config = require("../config/config.json")
|
private modConfig: RaidConfig = require("../config/raid.json")
|
||||||
private logger: Logger;
|
private logger: Logger;
|
||||||
private tables: DatabaseServer;
|
private tables: DatabaseServer;
|
||||||
private inRaidConfig: IInRaidConfig;
|
private inRaidConfig: IInRaidConfig;
|
||||||
@ -13,13 +13,13 @@ export class Raid
|
|||||||
constructor(logger:Logger, databaseServer: DatabaseServer, inRaidConfig: IInRaidConfig)
|
constructor(logger:Logger, databaseServer: DatabaseServer, inRaidConfig: IInRaidConfig)
|
||||||
{
|
{
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.tables = databaseServer.getTables();
|
this.tables = databaseServer;
|
||||||
this.inRaidConfig = inRaidConfig;
|
this.inRaidConfig = inRaidConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
public updateRaid(): void
|
public updateRaid(): void
|
||||||
{
|
{
|
||||||
const mod = this.modConfig.raid;
|
const mod = this.modConfig;
|
||||||
|
|
||||||
if (mod.fixOpenZones)
|
if (mod.fixOpenZones)
|
||||||
{
|
{
|
||||||
@ -35,13 +35,13 @@ export class Raid
|
|||||||
|
|
||||||
if (mod.timeLimit)
|
if (mod.timeLimit)
|
||||||
{
|
{
|
||||||
const maps = this.tables.locations;
|
const maps = this.tables.getTables().locations;
|
||||||
|
|
||||||
for (const map in maps)
|
for (const map in maps)
|
||||||
{
|
{
|
||||||
if (this.tables.locations[map].base?.EscapeTimeLimit)
|
if (this.tables.getTables().locations[map].base?.EscapeTimeLimit)
|
||||||
{
|
{
|
||||||
this.tables.locations[map].base.EscapeTimeLimit = this.modConfig.raid.timeLimit;
|
this.tables.getTables().locations[map].base.EscapeTimeLimit = this.modConfig.timeLimit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.logger.info(`Raid Time Limits set to ${mod.timeLimit} minutes.`);
|
this.logger.info(`Raid Time Limits set to ${mod.timeLimit} minutes.`);
|
||||||
@ -93,14 +93,14 @@ export class Raid
|
|||||||
|
|
||||||
for (const location in zones)
|
for (const location in zones)
|
||||||
{
|
{
|
||||||
this.tables.locations[location].base.OpenZones = zones[location];
|
this.tables.getTables().locations[location].base.OpenZones = zones[location];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private chompiesBossFix(): void
|
private chompiesBossFix(): void
|
||||||
{
|
{
|
||||||
const labsBosses = this.tables.locations.laboratory.base.BossLocationSpawn;
|
const labsBosses = this.tables.getTables().locations.laboratory.base.BossLocationSpawn;
|
||||||
const reserveBosses = this.tables.locations.rezervbase.base.BossLocationSpawn;
|
const reserveBosses = this.tables.getTables().locations.rezervbase.base.BossLocationSpawn;
|
||||||
const spawn1 = labsBosses.find(x => x.TriggerId === "autoId_00008_EXFIL");
|
const spawn1 = labsBosses.find(x => x.TriggerId === "autoId_00008_EXFIL");
|
||||||
if (spawn1)
|
if (spawn1)
|
||||||
{
|
{
|
||||||
|
76
src/skills.ts
Normal file
76
src/skills.ts
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
|
import { SkillsConfig } from "../config/ts/skills";
|
||||||
|
import { Logger } from "./logger";
|
||||||
|
|
||||||
|
export class Skills
|
||||||
|
{
|
||||||
|
private modConfig: SkillsConfig = require("../config/skills.json");
|
||||||
|
private logger: Logger;
|
||||||
|
private tables: DatabaseServer;
|
||||||
|
|
||||||
|
constructor(logger: Logger, databaseServer: DatabaseServer)
|
||||||
|
{
|
||||||
|
this.logger = logger;
|
||||||
|
this.tables = databaseServer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public updateSkills(): void
|
||||||
|
{
|
||||||
|
const skills = this.tables.getTables().globals.config;
|
||||||
|
const mod = this.modConfig;
|
||||||
|
|
||||||
|
if (mod.weaponSkillProgressRate != 1)
|
||||||
|
{
|
||||||
|
skills.SkillsSettings.WeaponSkillProgressRate = mod.weaponSkillProgressRate;
|
||||||
|
this.logger.info(`Weapon Skill Progress Rate changed to ${mod.weaponSkillProgressRate}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mod.skillProgressRate != 0.4)
|
||||||
|
{
|
||||||
|
skills.SkillsSettings.SkillProgressRate = mod.skillProgressRate;
|
||||||
|
this.logger.info(`Skill Progress Rate changed to ${mod.skillProgressRate}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mod.skillEnduranceWeightThreshold != 0.65)
|
||||||
|
{
|
||||||
|
skills.SkillEnduranceWeightThreshold = mod.skillEnduranceWeightThreshold;
|
||||||
|
this.logger.info(`Skill Endurance Weight Threshold changed to ${mod.skillEnduranceWeightThreshold}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mod.skillMinEffectiveness != 0.0001)
|
||||||
|
{
|
||||||
|
skills.SkillMinEffectiveness = mod.skillMinEffectiveness;
|
||||||
|
this.logger.info(`Skill Min Effectiveness changed to ${mod.skillMinEffectiveness}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mod.skillFatiguePerPoint != 0.6)
|
||||||
|
{
|
||||||
|
skills.SkillFatiguePerPoint = mod.skillFatiguePerPoint;
|
||||||
|
this.logger.info(`Skill Fatigue Per Point changed to ${mod.skillFatiguePerPoint}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mod.skillFreshEffectiveness != 1.3)
|
||||||
|
{
|
||||||
|
skills.SkillFreshEffectiveness = mod.skillFreshEffectiveness;
|
||||||
|
this.logger.info(`Skill Fresh Effectiveness changed to ${mod.skillFreshEffectiveness}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mod.skillFreshPoints != 1)
|
||||||
|
{
|
||||||
|
skills.SkillFreshPoints = mod.skillFreshPoints;
|
||||||
|
this.logger.info(`Skill Fresh Points changed to ${mod.skillFreshPoints}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mod.skillPointsBeforeFatigue != 1)
|
||||||
|
{
|
||||||
|
skills.SkillPointsBeforeFatigue = mod.skillPointsBeforeFatigue;
|
||||||
|
this.logger.info(`Skill Points Before Fatigue changed to ${mod.skillPointsBeforeFatigue}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mod.skillFatiguePerPoint != 200)
|
||||||
|
{
|
||||||
|
skills.SkillFatigueReset = mod.skillFatigueReset;
|
||||||
|
this.logger.info(`Skill Fatigue Reset changed to ${mod.skillFatigueReset}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,67 +1,85 @@
|
|||||||
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
|
||||||
import { Config } from "../config/config";
|
import { WeaponsConfig } from "../config/ts/weapons";
|
||||||
import { Logger } from "./logger";
|
import { Logger } from "./logger";
|
||||||
|
|
||||||
export class Weapons
|
export class Weapons
|
||||||
{
|
{
|
||||||
private modConfig: Config = require("../config/config.json")
|
private modConfig: WeaponsConfig = require("../config/weapons.json")
|
||||||
private logger: Logger;
|
private logger: Logger;
|
||||||
private tables: DatabaseServer;
|
private tables: DatabaseServer;
|
||||||
private mod: any;
|
|
||||||
private weapons: any;
|
private weapons: any;
|
||||||
|
|
||||||
constructor(logger:Logger, databaseServer: DatabaseServer)
|
constructor(logger:Logger, databaseServer: DatabaseServer)
|
||||||
{
|
{
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.tables = databaseServer.getTables();
|
this.tables = databaseServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public updateWeapons(): void
|
public updateWeapons(): void
|
||||||
{
|
{
|
||||||
this.mod = this.modConfig.weapons;
|
const mod = this.modConfig;
|
||||||
|
this.weapons = this.tables.getTables().templates.items;
|
||||||
|
|
||||||
if (this.mod.overheat || this.mod.jam || this.mod.slide || this.mod.misfeed || this.mod.misfire)
|
if (mod.malfunctions.overheat || mod.malfunctions.jam || mod.malfunctions.slide || mod.malfunctions.misfeed || mod.malfunctions.misfire)
|
||||||
{
|
{
|
||||||
this.weaponMalfunctions();
|
this.weaponMalfunctions();
|
||||||
this.logger.info("Weapon Malfunctions Patched", true);
|
this.logger.info("Weapon Malfunctions Patched");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mod.smgInHolsters)
|
||||||
|
{
|
||||||
|
this.smgInHolsters();
|
||||||
|
this.logger.info("SMGs may now be placed in holsters");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private weaponMalfunctions(): void
|
private weaponMalfunctions(): void
|
||||||
{
|
{
|
||||||
const items = this.tables.templates.items;
|
const items = this.tables.getTables().templates.items;
|
||||||
|
|
||||||
for (const id in items)
|
for (const id in items)
|
||||||
{
|
{
|
||||||
const base = items[id];
|
const base = items[id];
|
||||||
|
const malfunctions = this.modConfig.malfunctions;
|
||||||
|
|
||||||
//Weapons malfunctions
|
//Weapons malfunctions
|
||||||
|
|
||||||
if (this.mod.jam && base._props.AllowJam)
|
if (malfunctions.jam && base._props.AllowJam)
|
||||||
{
|
{
|
||||||
base._props.AllowJam = false;
|
base._props.AllowJam = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.mod.misfire && base._props.AllowMisfire)
|
if (malfunctions.misfire && base._props.AllowMisfire)
|
||||||
{
|
{
|
||||||
base._props.AllowMisfire = false;
|
base._props.AllowMisfire = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.mod.feed && base._props.AllowFeed)
|
if (malfunctions.misfeed && base._props.AllowFeed)
|
||||||
{
|
{
|
||||||
base._props.AllowFeed = false;
|
base._props.AllowFeed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.mod.overheat && base._props.AllowOverheat)
|
if (malfunctions.overheat && base._props.AllowOverheat)
|
||||||
{
|
{
|
||||||
base._props.AllowOverheat = false;
|
base._props.AllowOverheat = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.mod.slide && base._props.AllowSlide)
|
if (malfunctions.slide && base._props.AllowSlide)
|
||||||
{
|
{
|
||||||
base._props.AllowSlide = false;
|
base._props.AllowSlide = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private smgInHolsters(): void
|
||||||
|
{
|
||||||
|
for (const weaponId in this.weapons)
|
||||||
|
{
|
||||||
|
if (this.weapons[weaponId]._id === "55d7217a4bdc2d86028b456d")
|
||||||
|
{
|
||||||
|
this.weapons[weaponId]._props.Slots[2]._props.filters[0].Filter.push("5447b5e04bdc2d62278b4567")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user