diff --git a/V-AIO Progression ReadMe.pdf b/V-AIO Progression ReadMe.pdf deleted file mode 100644 index 05bc807..0000000 Binary files a/V-AIO Progression ReadMe.pdf and /dev/null differ diff --git a/Valens-AIO ReadMe.pdf b/Valens-AIO ReadMe.pdf index 5959446..9d6b03d 100644 Binary files a/Valens-AIO ReadMe.pdf and b/Valens-AIO ReadMe.pdf differ diff --git a/config/ammo.json b/config/ammo.json index 685bbca..e0bba93 100644 --- a/config/ammo.json +++ b/config/ammo.json @@ -2,7 +2,7 @@ "stacks": { "grenades": 1, - "a338lapua": 30, + "a338Lapua": 30, "a127x55": 30, "a762x54": 40, "a762x51": 40, diff --git a/config/armor.json b/config/armor.json new file mode 100644 index 0000000..a4bee65 --- /dev/null +++ b/config/armor.json @@ -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 + } + } +} \ No newline at end of file diff --git a/config/config.json b/config/config.json index 8717d9f..c3b89aa 100644 --- a/config/config.json +++ b/config/config.json @@ -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 } \ No newline at end of file diff --git a/config/config.ts b/config/config.ts deleted file mode 100644 index 269869d..0000000 --- a/config/config.ts +++ /dev/null @@ -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 -} - \ No newline at end of file diff --git a/config/items.json b/config/items.json index 8b3d630..66fc2e6 100644 --- a/config/items.json +++ b/config/items.json @@ -25,6 +25,8 @@ "examinedByDefault": false, "removeBackpackFilter": true, + "removeDiscardLimit": true, + "removeItemRestrictions": false, "removeKeyUsageMax": false, "roublesMaxStack": 500000, "dollarsMaxStack": 50000, diff --git a/config/locations.json b/config/locations.json index bd205ec..46e35c3 100644 --- a/config/locations.json +++ b/config/locations.json @@ -1,5 +1,6 @@ { "allExtractsAvailable": false, + "freeLabsEntry": false, "exfilTime": 8, "extractionsExtended": false, "noExtractRestrictions": false diff --git a/config/progression.json b/config/progression.json deleted file mode 100644 index c26ec9a..0000000 --- a/config/progression.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "enabled": true -} \ No newline at end of file diff --git a/config/progression.ts b/config/progression.ts deleted file mode 100644 index 96e8a55..0000000 --- a/config/progression.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface Progression -{ - enabled: boolean -} \ No newline at end of file diff --git a/config/quests.json b/config/quests.json new file mode 100644 index 0000000..bacc3f9 --- /dev/null +++ b/config/quests.json @@ -0,0 +1,3 @@ +{ + "onlyFoundInRaid": true +} \ No newline at end of file diff --git a/config/raid.json b/config/raid.json new file mode 100644 index 0000000..bead856 --- /dev/null +++ b/config/raid.json @@ -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 +} \ No newline at end of file diff --git a/config/skills.json b/config/skills.json new file mode 100644 index 0000000..69b5b5f --- /dev/null +++ b/config/skills.json @@ -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 +} diff --git a/config/ammo.ts b/config/ts/ammo.ts similarity index 100% rename from config/ammo.ts rename to config/ts/ammo.ts diff --git a/config/ts/armor.ts b/config/ts/armor.ts new file mode 100644 index 0000000..2b9a69b --- /dev/null +++ b/config/ts/armor.ts @@ -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 +} \ No newline at end of file diff --git a/config/bots.ts b/config/ts/bots.ts similarity index 88% rename from config/bots.ts rename to config/ts/bots.ts index 147e458..bb6dfcf 100644 --- a/config/bots.ts +++ b/config/ts/bots.ts @@ -31,17 +31,9 @@ export interface DifficultyWeights { difficulty: string useWeights: boolean - weights: Weights + weights: Record } - -export interface Weights -{ - easy: number - normal: number - hard: number - impossible: number -} - + export interface ConvertIntoPmcChance { assault: PmcChance diff --git a/config/ts/config.ts b/config/ts/config.ts new file mode 100644 index 0000000..787d957 --- /dev/null +++ b/config/ts/config.ts @@ -0,0 +1,4 @@ +export interface Config +{ + DebugMode: boolean +} diff --git a/config/containers.ts b/config/ts/containers.ts similarity index 100% rename from config/containers.ts rename to config/ts/containers.ts diff --git a/config/flea.ts b/config/ts/flea.ts similarity index 100% rename from config/flea.ts rename to config/ts/flea.ts diff --git a/config/globals.ts b/config/ts/globals.ts similarity index 100% rename from config/globals.ts rename to config/ts/globals.ts diff --git a/config/hideout.ts b/config/ts/hideout.ts similarity index 100% rename from config/hideout.ts rename to config/ts/hideout.ts diff --git a/config/insurance.ts b/config/ts/insurance.ts similarity index 100% rename from config/insurance.ts rename to config/ts/insurance.ts diff --git a/config/items.ts b/config/ts/items.ts similarity index 85% rename from config/items.ts rename to config/ts/items.ts index 0c3f8ca..799ce0b 100644 --- a/config/items.ts +++ b/config/ts/items.ts @@ -6,6 +6,8 @@ export interface ItemsConfig eodStash: Stash examinedByDefault: boolean removeBackpackFilter: boolean + removeDiscardLimit: boolean + removeItemRestrictions: boolean removeKeyUsageMax: boolean dollarsMaxStack: number eurosMaxStack: number diff --git a/config/locations.ts b/config/ts/locations.ts similarity index 85% rename from config/locations.ts rename to config/ts/locations.ts index 4c43c51..ffd3567 100644 --- a/config/locations.ts +++ b/config/ts/locations.ts @@ -1,6 +1,7 @@ export interface LocationsConfig { allExtractsAvailable: boolean + freeLabsEntry: boolean exfilTime: number extractionsExtended: boolean noExtractRestrictions: boolean diff --git a/config/loot.ts b/config/ts/loot.ts similarity index 100% rename from config/loot.ts rename to config/ts/loot.ts diff --git a/config/prewipe.ts b/config/ts/prewipe.ts similarity index 100% rename from config/prewipe.ts rename to config/ts/prewipe.ts diff --git a/config/ts/quests.ts b/config/ts/quests.ts new file mode 100644 index 0000000..3e24770 --- /dev/null +++ b/config/ts/quests.ts @@ -0,0 +1,4 @@ +export interface QuestsConfig +{ + onlyFoundInRaid: boolean +} \ No newline at end of file diff --git a/config/ts/raid.ts b/config/ts/raid.ts new file mode 100644 index 0000000..6fd1824 --- /dev/null +++ b/config/ts/raid.ts @@ -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 +} \ No newline at end of file diff --git a/config/ts/skills.ts b/config/ts/skills.ts new file mode 100644 index 0000000..d4c9e8f --- /dev/null +++ b/config/ts/skills.ts @@ -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 +} \ No newline at end of file diff --git a/config/ts/weapons.ts b/config/ts/weapons.ts new file mode 100644 index 0000000..e0dd957 --- /dev/null +++ b/config/ts/weapons.ts @@ -0,0 +1,14 @@ +export interface WeaponsConfig +{ + malfunctions: Malfunctions + smgInHolsters: boolean +} + +export interface Malfunctions +{ + jam: boolean + misfeed: boolean + misfire: boolean + overheat: boolean + slide: boolean +} \ No newline at end of file diff --git a/config/weapons.json b/config/weapons.json new file mode 100644 index 0000000..248942e --- /dev/null +++ b/config/weapons.json @@ -0,0 +1,12 @@ +{ + "malfunctions": + { + "jam": false, + "misfeed": false, + "misfire": false, + "overheat": false, + "slide": false + }, + + "smgInHolsters": false +} \ No newline at end of file diff --git a/package.json b/package.json index 0744e95..7e6c098 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/ammo.ts b/src/ammo.ts index 44d7db2..0669738 100644 --- a/src/ammo.ts +++ b/src/ammo.ts @@ -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)) diff --git a/src/armor.ts b/src/armor.ts new file mode 100644 index 0000000..93545b5 --- /dev/null +++ b/src/armor.ts @@ -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"); + } + + + } +} \ No newline at end of file diff --git a/src/bots.ts b/src/bots.ts index 62e15c2..7f86655 100644 --- a/src/bots.ts +++ b/src/bots.ts @@ -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 { diff --git a/src/containers.ts b/src/containers.ts index 6445bd7..5e2455d 100644 --- a/src/containers.ts +++ b/src/containers.ts @@ -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 diff --git a/src/flea.ts b/src/flea.ts index 650df26..8d55c03 100644 --- a/src/flea.ts +++ b/src/flea.ts @@ -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}`) } diff --git a/src/globals.ts b/src/globals.ts index 4ef8ae4..c7bdde5 100644 --- a/src/globals.ts +++ b/src/globals.ts @@ -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"); } } diff --git a/src/hideout.ts b/src/hideout.ts index e8412a6..0a4e265 100644 --- a/src/hideout.ts +++ b/src/hideout.ts @@ -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 diff --git a/src/insurance.ts b/src/insurance.ts index 5d463d2..db88483 100644 --- a/src/insurance.ts +++ b/src/insurance.ts @@ -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 @@ -89,7 +89,7 @@ export class Insurance changePraporStorage(): void { this.traders["54cb50c76803fa8b248b4571"].base.insurance.max_storage_time = this.modConfig.prapor.storageMaxHr; - } + } changePraporPriceCoef(): void { diff --git a/src/items.ts b/src/items.ts index aaa0680..04aa4f0 100644 --- a/src/items.ts +++ b/src/items.ts @@ -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; + } + } } diff --git a/src/locations.ts b/src/locations.ts index 8dea23f..8ecbd6f 100644 --- a/src/locations.ts +++ b/src/locations.ts @@ -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 = []; + } } \ No newline at end of file diff --git a/src/loot.ts b/src/loot.ts index 21b71e1..9e1e077 100644 --- a/src/loot.ts +++ b/src/loot.ts @@ -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 diff --git a/src/mod.ts b/src/mod.ts index 7c2edc1..1371353 100644 --- a/src/mod.ts +++ b/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 { 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); @@ -98,9 +100,6 @@ 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(); @@ -108,6 +107,9 @@ class ValensAIO implements IPostDBLoadMod 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(); diff --git a/src/prewipe.ts b/src/prewipe.ts index 0be78a5..25ed605 100644 --- a/src/prewipe.ts +++ b/src/prewipe.ts @@ -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"; diff --git a/src/progression.ts b/src/progression.ts deleted file mode 100644 index 2f077c4..0000000 --- a/src/progression.ts +++ /dev/null @@ -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); - } -} \ No newline at end of file diff --git a/src/quests.ts b/src/quests.ts index 057ee6b..3bb6694 100644 --- a/src/quests.ts +++ b/src/quests.ts @@ -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 } } } - } diff --git a/src/raid.ts b/src/raid.ts index 368e05d..0d8abe0 100644 --- a/src/raid.ts +++ b/src/raid.ts @@ -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) { diff --git a/src/skills.ts b/src/skills.ts new file mode 100644 index 0000000..c6e85bc --- /dev/null +++ b/src/skills.ts @@ -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}`); + } + } +} diff --git a/src/weapons.ts b/src/weapons.ts index 90532d4..114a527 100644 --- a/src/weapons.ts +++ b/src/weapons.ts @@ -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 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") + } + } + } }