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:
VforValens 2022-08-17 17:51:28 -04:00
parent c932d2b1e0
commit 065c5098b9
50 changed files with 562 additions and 447 deletions

Binary file not shown.

Binary file not shown.

View File

@ -2,7 +2,7 @@
"stacks":
{
"grenades": 1,
"a338lapua": 30,
"a338Lapua": 30,
"a127x55": 30,
"a762x54": 40,
"a762x51": 40,

84
config/armor.json Normal file
View 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
}
}
}

View File

@ -1,33 +1,3 @@
{
"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
}
"DebugMode": false
}

View File

@ -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
}

View File

@ -25,6 +25,8 @@
"examinedByDefault": false,
"removeBackpackFilter": true,
"removeDiscardLimit": true,
"removeItemRestrictions": false,
"removeKeyUsageMax": false,
"roublesMaxStack": 500000,
"dollarsMaxStack": 50000,

View File

@ -1,5 +1,6 @@
{
"allExtractsAvailable": false,
"freeLabsEntry": false,
"exfilTime": 8,
"extractionsExtended": false,
"noExtractRestrictions": false

View File

@ -1,3 +0,0 @@
{
"enabled": true
}

View File

@ -1,4 +0,0 @@
export interface Progression
{
enabled: boolean
}

3
config/quests.json Normal file
View File

@ -0,0 +1,3 @@
{
"onlyFoundInRaid": true
}

13
config/raid.json Normal file
View 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
View 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
View 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
}

View File

@ -31,15 +31,7 @@ export interface DifficultyWeights
{
difficulty: string
useWeights: boolean
weights: Weights
}
export interface Weights
{
easy: number
normal: number
hard: number
impossible: number
weights: Record<string, number>
}
export interface ConvertIntoPmcChance

4
config/ts/config.ts Normal file
View File

@ -0,0 +1,4 @@
export interface Config
{
DebugMode: boolean
}

View File

@ -6,6 +6,8 @@ export interface ItemsConfig
eodStash: Stash
examinedByDefault: boolean
removeBackpackFilter: boolean
removeDiscardLimit: boolean
removeItemRestrictions: boolean
removeKeyUsageMax: boolean
dollarsMaxStack: number
eurosMaxStack: number

View File

@ -1,6 +1,7 @@
export interface LocationsConfig
{
allExtractsAvailable: boolean
freeLabsEntry: boolean
exfilTime: number
extractionsExtended: boolean
noExtractRestrictions: boolean

4
config/ts/quests.ts Normal file
View File

@ -0,0 +1,4 @@
export interface QuestsConfig
{
onlyFoundInRaid: boolean
}

14
config/ts/raid.ts Normal file
View 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
View 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
View 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
View File

@ -0,0 +1,12 @@
{
"malfunctions":
{
"jam": false,
"misfeed": false,
"misfire": false,
"overheat": false,
"slide": false
},
"smgInHolsters": false
}

View File

@ -1,6 +1,6 @@
{
"name": "Valens-AIO",
"version": "1.3.1",
"version": "1.4.0",
"main": "src/mod.js",
"license": "CC BY-NC-ND 4.0",
"author": "Valens",

View File

@ -1,11 +1,11 @@
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
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 { AmmoConfig } from "../config/ammo";
import { AmmoConfig } from "../config/ts/ammo";
export class Ammo
{
private modConfig: AmmoConfig = require("./config/ammo.json")
private modConfig: AmmoConfig = require("../config/ammo.json")
private logger: Logger;
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)
{
for (const value of Object.values(Ammo338Lapua))

131
src/armor.ts Normal file
View 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");
}
}
}

View File

@ -1,7 +1,7 @@
import { IBotConfig } from "@spt-aki/models/spt/config/IBotConfig";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { Logger } from "./logger";
import { BotsConfig } from "../config/bots";
import { BotsConfig } from "../config/ts/bots";
import { WeightedRandomHelper } from "@spt-aki/helpers/WeightedRandomHelper";
export class Bots
{

View File

@ -1,6 +1,6 @@
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { Logger } from "./logger";
import { ContainersConfig } from "../config/containers";
import { ContainersConfig } from "../config/ts/containers";
import { CommonContainers, SecuredContainers } from "@spt-aki/models/enums/ContainerTypes";
export class Containers

View File

@ -1,33 +1,33 @@
import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { Logger } from "./logger";
import { FleaConfig } from "../config/flea";
import { IGlobals } from "@spt-aki/models/spt/server/IDatabaseTables/IGlobals";
import { FleaConfig } from "../config/ts/flea";
export class Flea
{
private modConfig: FleaConfig = require("../config/flea.json");
private logger: Logger;
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.ragfairConfig = ragfairConfig;
this.globals = globals;
this.tables = databaseServer;
}
public updateFlea(): void
{
const mod = this.modConfig;
const global = this.globals;
const global = this.tables.getTables().globals;
const ragfair = this.ragfairConfig.dynamic;
if (mod.minUserLevel != 15)
{
global.minUserLevel = mod.minUserLevel;
global.config.RagFair.minUserLevel = mod.minUserLevel;
this.logger.info(`Fleamarket unlocked at level ${mod.minUserLevel}`)
}

View File

@ -1,23 +1,23 @@
import { IGlobals } from "@spt-aki/models/spt/server/IDatabaseTables/IGlobals";
import { GlobalsConfig } from "../config/globals";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { GlobalsConfig } from "../config/ts/globals";
import { Logger } from "./logger";
export class Globals
{
private modConfig: GlobalsConfig = require("../config/globals.json");
private logger: Logger;
private globals: IGlobals;
private tables: DatabaseServer;
constructor(logger: Logger, globals: IGlobals)
constructor(logger: Logger, databaseServer: DatabaseServer)
{
this.logger = logger;
this.globals = globals;
this.tables = databaseServer;
}
public updateGlobals(): void
{
const mod = this.modConfig;
const global = this.globals;
const global = this.tables.getTables().globals;
if (mod.damagePerMeter != 9 || mod.safeHeight != 3)
{
@ -50,7 +50,7 @@ export class Globals
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;
global1.survived_exp_requirement = mod.survivedExpRequirement;
@ -63,8 +63,8 @@ export class Globals
global1.survivedMult = mod.survivedMult;
global1.runnerMult = mod.runnerMult;
global1.killedMult = mod.killedMult;
this.globals.config.exp.kill.headShotMult = mod.headShotMult;
this.globals.config.exp.kill.expOnDamageAllHealth = mod.expOnDamageAllHealth;
this.tables.getTables().globals.config.exp.kill.headShotMult = mod.headShotMult;
this.tables.getTables().globals.config.exp.kill.expOnDamageAllHealth = mod.expOnDamageAllHealth;
this.logger.info("Match End Settings Patched");
}
}

View File

@ -1,6 +1,6 @@
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { Logger } from "./logger";
import { HideoutConfig } from "../config/hideout";
import { HideoutConfig } from "../config/ts/hideout";
import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig";
export class Hideout

View File

@ -1,7 +1,7 @@
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ITrader } from "@spt-aki/models/eft/common/tables/ITrader";
import { IInsuranceConfig } from "@spt-aki/models/spt/config/IInsuranceConfig";
import { InsuranceConfig } from "../config/insurance";
import { InsuranceConfig } from "../config/ts/insurance";
import { Logger } from "./logger";
export class Insurance

View File

@ -1,5 +1,5 @@
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemsConfig } from "../config/items";
import { ItemsConfig } from "../config/ts/items";
import { Logger } from "./logger";
export class Items
@ -100,6 +100,20 @@ export class Items
this.items["569668774bdc2da2298b4568"]._props.StackMaxSize = this.modConfig.eurosMaxStack;
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")
{
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;
}
}
}

View File

@ -1,5 +1,5 @@
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { LocationsConfig } from "../config/locations";
import { LocationsConfig } from "../config/ts/locations";
import { Logger } from "./logger";
export class Locations
@ -45,6 +45,13 @@ export class Locations
this.extractionsExtended();
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
@ -176,4 +183,10 @@ export class Locations
}
}
private freeLabsEntry(): void
{
const locations = this.tables.getTables().locations.laboratory.base;
locations.AccessKeys = [];
}
}

View File

@ -1,6 +1,6 @@
import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { LootConfig } from "../config/loot";
import { LootConfig } from "../config/ts/loot";
import { Logger } from "./logger";
export class Loot

View File

@ -12,6 +12,7 @@ import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ILocationConfig } from "@spt-aki/models/spt/config/ILocationConfig";
import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig";
import { Ammo } from "./ammo";
import { Armor } from "./armor";
import { Bots } from "./bots";
import { Flea } from "./flea";
import { Hideout } from "./hideout";
@ -21,13 +22,12 @@ import { Raid } from "./raid";
import { Globals } from "./globals";
import { Insurance } from "./insurance";
import { Logger } from "./logger";
import { Config } from "../config/config";
import { Config } from "../config/ts/config";
import { Weapons } from "./weapons";
import { Containers } from "./containers";
import { Locations } from "./locations";
import { Quests } from "./quests";
import { Progression } from "./progression";
import { IGlobals } from "@spt-aki/models/eft/common/IGlobals";
import { Skills } from "./skills";
import { Prewipe } from "./prewipe";
import { IHideoutConfig } from "@spt-aki/models/spt/config/IHideoutConfig";
//import { Airdrop } from "./airdrop";
@ -45,7 +45,6 @@ class ValensAIO implements IPostDBLoadMod
//private airdropConfig: IAirdropConfig;
private inRaidConfig: IInRaidConfig;
private weightedRandomHelper : WeightedRandomHelper;
private globals : IGlobals;
private hideout: IHideoutConfig
public postDBLoad(container: DependencyContainer): void
@ -69,16 +68,19 @@ class ValensAIO implements IPostDBLoadMod
const ammo = new Ammo(vLogger, this.databaseServer);
ammo.updateAmmo();
const armor = new Armor(vLogger, this.databaseServer);
armor.updateArmor();
const bots = new Bots(vLogger, this.databaseServer, this.botConfig, this.weightedRandomHelper);
bots.updateBots();
const containers = new Containers(vLogger, this.databaseServer);
containers.updateContainers();
const flea = new Flea(vLogger, this.ragfairConfig, this.globals);
const flea = new Flea(vLogger, this.ragfairConfig, this.databaseServer);
flea.updateFlea();
const globals = new Globals(vLogger, this.globals);
const globals = new Globals(vLogger, this.databaseServer);
globals.updateGlobals();
const hideout = new Hideout(vLogger, this.databaseServer, this.hideout);
@ -99,15 +101,15 @@ class ValensAIO implements IPostDBLoadMod
const prewipe = new Prewipe(vLogger, this.databaseServer);
prewipe.updatePrewipe();
const progression = new Progression(vLogger, this.databaseServer, this.botConfig);
progression.updateProgression();
const quests = new Quests(vLogger, this.databaseServer);
quests.updateQuests();
const raid = new Raid(vLogger, this.databaseServer, this.inRaidConfig);
raid.updateRaid();
const skills = new Skills(vLogger, this.databaseServer);
skills.updateSkills();
const weapons = new Weapons(vLogger, this.databaseServer);
weapons.updateWeapons();

View File

@ -1,4 +1,4 @@
import { PrewipeConfig } from "../config/prewipe";
import { PrewipeConfig } from "../config/ts/prewipe";
import { Money } from "@spt-aki/models/enums/Money"
import type { BossLocationSpawn } from "@spt-aki/models/eft/common/ILocationBase";
import { Logger } from "./logger";

View File

@ -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);
}
}

View File

@ -1,22 +1,22 @@
import { Logger } from "./logger";
import { Config } from "../config/config";
import { QuestsConfig } from "../config/ts/quests";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
export class Quests
{
private modConfig: Config = require("../config/config.json");
private modConfig: QuestsConfig = require("../config/quests.json");
private logger: Logger;
private tables: DatabaseServer;
constructor(logger: Logger, databaseServer: DatabaseServer)
{
this.logger = logger;
this.tables = databaseServer.getTables();
this.tables = databaseServer;
}
public updateQuests(): void
{
if (!this.modConfig.quests.onlyFoundInRaid)
if (!this.modConfig.onlyFoundInRaid)
{
this.onlyFoundInRaid();
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
private onlyFoundInRaid(): void
{
const quests = this.tables.templates.quests;
const quests = this.tables.getTables().templates.quests;
for (const questid in quests)
{
const questsAvailableForFinishConditions = quests[questid].conditions.AvailableForFinish;
const findItemConditions = questsAvailableForFinishConditions.find(x=>x.parent === "FindItem");
const findItemConditions = questsAvailableForFinishConditions.find(x=>x._parent === "FindItem");
if (!findItemConditions)
{
@ -44,5 +44,4 @@ export class Quests
}
}
}
}

View File

@ -1,11 +1,11 @@
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
import { Logger } from "./logger";
import { Config } from "../config/config";
import { RaidConfig } from "../config/ts/raid";
export class Raid
{
private modConfig: Config = require("../config/config.json")
private modConfig: RaidConfig = require("../config/raid.json")
private logger: Logger;
private tables: DatabaseServer;
private inRaidConfig: IInRaidConfig;
@ -13,13 +13,13 @@ export class Raid
constructor(logger:Logger, databaseServer: DatabaseServer, inRaidConfig: IInRaidConfig)
{
this.logger = logger;
this.tables = databaseServer.getTables();
this.tables = databaseServer;
this.inRaidConfig = inRaidConfig;
}
public updateRaid(): void
{
const mod = this.modConfig.raid;
const mod = this.modConfig;
if (mod.fixOpenZones)
{
@ -35,13 +35,13 @@ export class Raid
if (mod.timeLimit)
{
const maps = this.tables.locations;
const maps = this.tables.getTables().locations;
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.`);
@ -93,14 +93,14 @@ export class Raid
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
{
const labsBosses = this.tables.locations.laboratory.base.BossLocationSpawn;
const reserveBosses = this.tables.locations.rezervbase.base.BossLocationSpawn;
const labsBosses = this.tables.getTables().locations.laboratory.base.BossLocationSpawn;
const reserveBosses = this.tables.getTables().locations.rezervbase.base.BossLocationSpawn;
const spawn1 = labsBosses.find(x => x.TriggerId === "autoId_00008_EXFIL");
if (spawn1)
{

76
src/skills.ts Normal file
View 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}`);
}
}
}

View File

@ -1,67 +1,85 @@
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { Config } from "../config/config";
import { WeaponsConfig } from "../config/ts/weapons";
import { Logger } from "./logger";
export class Weapons
{
private modConfig: Config = require("../config/config.json")
private modConfig: WeaponsConfig = require("../config/weapons.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();
this.tables = databaseServer;
}
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.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
{
const items = this.tables.templates.items;
const items = this.tables.getTables().templates.items;
for (const id in items)
{
const base = items[id];
const malfunctions = this.modConfig.malfunctions;
//Weapons malfunctions
if (this.mod.jam && base._props.AllowJam)
if (malfunctions.jam && base._props.AllowJam)
{
base._props.AllowJam = false;
}
if (this.mod.misfire && base._props.AllowMisfire)
if (malfunctions.misfire && base._props.AllowMisfire)
{
base._props.AllowMisfire = false;
}
if (this.mod.feed && base._props.AllowFeed)
if (malfunctions.misfeed && base._props.AllowFeed)
{
base._props.AllowFeed = false;
}
if (this.mod.overheat && base._props.AllowOverheat)
if (malfunctions.overheat && base._props.AllowOverheat)
{
base._props.AllowOverheat = false;
}
if (this.mod.slide && base._props.AllowSlide)
if (malfunctions.slide && base._props.AllowSlide)
{
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")
}
}
}
}