From 70d01dc4742c4ec89a0400d912772eccde4280d2 Mon Sep 17 00:00:00 2001 From: VforValens Date: Sat, 6 Aug 2022 14:44:30 -0400 Subject: [PATCH] Changes to catch the git up to v1.2.3 --- Valens-AIO/Valens-AIO ReadMe.pdf | Bin 1720629 -> 1721133 bytes Valens-AIO/config/config.json | 21 +-- Valens-AIO/config/config.ts | 56 ++++---- Valens-AIO/package.json | 2 +- Valens-AIO/src/items.ts | 13 +- Valens-AIO/src/locations.ts | 239 +++++++++++++++++-------------- Valens-AIO/src/mod.ts | 10 +- Valens-AIO/src/quests.ts | 48 +++++++ 8 files changed, 241 insertions(+), 148 deletions(-) create mode 100644 Valens-AIO/src/quests.ts diff --git a/Valens-AIO/Valens-AIO ReadMe.pdf b/Valens-AIO/Valens-AIO ReadMe.pdf index 80437c6007d00f51cbf3ddfb1d1dce85c73de713..a1b7f7c53aad3d1bdd9810877a797ac9f00862ef 100644 GIT binary patch delta 8923 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 CcLrbp diff --git a/Valens-AIO/config/config.json b/Valens-AIO/config/config.json index 88b3170..19f143f 100644 --- a/Valens-AIO/config/config.json +++ b/Valens-AIO/config/config.json @@ -1,5 +1,5 @@ { - "DebugMode": false, + "DebugMode": true, "ammo": { @@ -416,18 +416,18 @@ "examinedByDefault": false, "removeBackpackFilter": true, "removeKeyUsageMax": false, - "dollarsMaxStack": 50000, - "eurosMaxStack": 50000, - "roublesMaxStack": 500000, + "roublesMaxStack": 10000000, + "dollarsMaxStack": 1000000, + "eurosMaxStack": 1000000, "weightModifier": 1 }, "locations": { - "allExtractsAvailable": false, - "exfilTime": 8, - "extractionsExtended": false, - "noExtractRestrictions": false + "allExtractsAvailable": true, + "exfilTime": 3, + "extractionsExtended": true, + "noExtractRestrictions": true }, "loot": @@ -437,6 +437,11 @@ "staticLootMultiplier": 1 }, + "quests": + { + "onlyFoundInRaid": true + }, + "raid": { "carExtractBaseStandingGain": 0.25, diff --git a/Valens-AIO/config/config.ts b/Valens-AIO/config/config.ts index 29aa47b..884d3e0 100644 --- a/Valens-AIO/config/config.ts +++ b/Valens-AIO/config/config.ts @@ -12,6 +12,7 @@ export interface Config locations: Locations loot: Loot raid: Raid + quests: Quests prewipeEvents: PrewipeEvents weapons: Weapons } @@ -122,36 +123,36 @@ export interface Containers export interface CommonContainers { enabled: boolean - AMMO_CASE: Case - DOCUMENTS_CASE: Case - DOGTAG_CASE: Case - GRENADE_CASE: Case - INJECTOR_CASE: Case - ITEM_CASE: Case - KEY_TOOL: Case - KEYCARD_HOLDER: Case - SCAV_JUNKBOX: Case - MAGAZINE_CASE: Case - MEDICINE_CASE: Case - MONEY_CASE: Case - HOLODILNICK_THERMAL_BAG: Case - PISTOL_CASE: Case - SICC_ORGANIZATIONAL_POUCH: Case - SIMPLE_WALLET: Case - THICC_ITEM_CASE: Case - THICC_WEAPON_CASE: Case - WEAPON_CASE: Case - WZ_WALLET: Case + ammoCase: Case + docsCase: Case + dogsCase: Case + grenadeCase: Case + injectorCase: Case + itemCase: Case + keyTool: Case + keycardHolder: Case + scavJunkbox: Case + magsCase: Case + medsCase: Case + moneyCase: Case + holodilnick: Case + pistolCase: Case + siccCase: Case + wallet: Case + thiccItemCase: Case + thiccWeaponCase: Case + weaponCase: Case + wzWallet: Case } export interface SecuredContainers { enabled: boolean - ALPHA: Case - BETA: Case - EPSILON: Case - GAMMA: Case - KAPPA: Case + alpha: Case + beta: Case + epsilon: Case + gamma: Case + kappa: Case } export interface Case @@ -300,6 +301,11 @@ export interface Loot looseLootMultiplier: number staticLootMultiplier: number } + +export interface Quests +{ + onlyFoundInRaid: boolean +} export interface Raid { diff --git a/Valens-AIO/package.json b/Valens-AIO/package.json index b64a1be..d0a066d 100644 --- a/Valens-AIO/package.json +++ b/Valens-AIO/package.json @@ -1,6 +1,6 @@ { "name": "Valens-AIO", - "version": "1.2.1", + "version": "1.2.3", "main": "src/mod.js", "license": "CC BY-NC-ND 4.0", "author": "Valens", diff --git a/Valens-AIO/src/items.ts b/Valens-AIO/src/items.ts index c87461a..0c35c1c 100644 --- a/Valens-AIO/src/items.ts +++ b/Valens-AIO/src/items.ts @@ -1,6 +1,7 @@ import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; import { Config } from "../config/config"; import { Logger } from "./logger"; +import { Money } from "@spt-aki/models/enums/Money" export class Items { @@ -89,22 +90,22 @@ export class Items // Roubles Max Stack if (this.mod.roublesMaxStack != 500000) { - this.items["5449016a4bdc2d6f028b456f"]._props.StackMaxSize = this.mod.roublesMaxStack; - this.logger.info(`Rouble Max Stack set to ${this.mod.roublesMaxStack}`); + this.items["5449016a4bdc2d6f028b456f"]._props.StackMaxSize = this.modConfig.items.roublesMaxStack; + this.logger.info(`Rouble Max Stack set to ${this.mod.roublesMaxStack}`, true); } // Dollars Max Stack if (this.mod.dollarsMaxStack != 50000) { - this.items["5696686a4bdc2da3298b456a"]._props.StackMaxSize = this.mod.dollarsMaxStack; - this.logger.info(`Dollar Max Stack set to ${this.mod.dollarsMaxStack}`); + this.items["5696686a4bdc2da3298b456a"]._props.StackMaxSize = this.modConfig.items.dollarsMaxStack; + this.logger.info(`Dollar Max Stack set to ${this.mod.dollarsMaxStack}`, true); } // Euros Max Stack if (this.mod.eurosMaxStack != 50000) { - this.items["569668774bdc2da2298b4568"]._props.StackMaxSize = this.mod.eurosMaxStack; - this.logger.info(`Euro Max Stack set to ${this.mod.eurosMaxStack}`); + this.items["569668774bdc2da2298b4568"]._props.StackMaxSize = this.modConfig.items.eurosMaxStack; + this.logger.info(`Euro Max Stack set to ${this.mod.eurosMaxStack}`, true); } } diff --git a/Valens-AIO/src/locations.ts b/Valens-AIO/src/locations.ts index 32b025d..c9931ca 100644 --- a/Valens-AIO/src/locations.ts +++ b/Valens-AIO/src/locations.ts @@ -18,138 +18,163 @@ export class Locations public updateLocations(): void { const mod = this.modConfig.locations; - const maps = this.tables.locations; // Gives all extracts 100% chance to spawn. if (mod.allExtractsAvailable) { - for (const map in maps) - { - if (map.toLowerCase() === "base") - { - continue; - } - - const mapBase = this.tables.locations[map].base; - if (mapBase.Locked === true || mapBase?.EnabledCoop === undefined) - { - continue; - } - - for (const i in mapBase.exits) - { - const exit = mapBase[i]; - exit.Chance = 100; - } - } - this.logger.info("All Extracts Are Available @ 100% Chance"); + this.allExtractsAvailable(); + this.logger.info("All Extracts @ 100% Chance to Spawn"); } // Sets exfil/extract timer to config. if (mod.exfilTime != 8) { - for (const map in maps) - { - if (map.toLowerCase() === "base") - { - continue; - } - - const mapBase = this.tables.locations[map].base; - if (mapBase.Locked === true || mapBase?.EnabledCoop === undefined) - { - continue; - } - - for (const i in mapBase.exits) - { - const exit = mapBase[i]; - exit.ExfiltrationTime = mod.exfilTime; - } - } - this.logger.info(`Exfil Time is set to ${mod.exfilTime} seconds`); + this.exfilTime(); + this.logger.info(`Exfil Time Set to ${mod.exfilTime}`); } // Remove extracts restrictions if (mod.noExtractRestrictions) { - for (const i in maps) - { - if (i !== "base") - { - for (const x in maps[i].base.exits) - { - if (maps[i].base.exits[x].Name !== "EXFIL_Train" && - !maps[i].base.exits[x].Name.includes("lab") || - maps[i].base.exits[x].Name === "lab_Vent") - { - if (maps[i].base.exits[x].PassageRequirement !== "None") - { - maps[i].base.exits[x].PassageRequirement = "None"; - } - if (maps[i].base.exits[x].ExfiltrationType !== "Individual") - { - maps[i].base.exits[x].ExfiltrationType = "Individual"; - } - if (maps[i].base.exits[x].Id !== "") - { - maps[i].base.exits[x].Id = ""; - } - if (maps[i].base.exits[x].Count !== 0) - { - maps[i].base.exits[x].Count = 0; - } - if (maps[i].base.exits[x].RequirementTip !== "") - { - maps[i].base.exits[x].RequirementTip = ""; - } - if (maps[i].base.exits[x].RequiredSlot) - { - delete maps[i].base.exits[x].RequiredSlot; - } - } - } - } - } + this.noExtractRestrictions(); + this.logger.info("No Extract Restrictions Enabled"); } // Make all extractions of the map available regardless of the infill if (mod.extractionsExtended) { - for (const map in maps) + this.extractionsExtended(); + this.logger.info("Extractions Are Extended"); + } + } + + private allExtractsAvailable(): void + { + const locations = this.tables.locations; + for (const i in locations) + { + if (i !== "base") { - switch (map) + for (const x in locations[i].base.exits) { - case "base": - break; - case "bigmap": - for (const extract in maps[map].base.exits) + if (locations[i].base.exits[x].Name !== "EXFIL_Train") + { + if (locations[i].base.exits[x].Chance !== 100) { - maps[map].base.exits[extract].EntryPoints = "Customs,Boiler Tanks"; + locations[i].base.exits[x].Chance = 100; } - break; - case "interchange": - for (const extract in maps[map].base.exits) - { - maps[map].base.exits[extract].EntryPoints = "MallSE,MallNW"; - } - break; - case "shoreline": - for (const extract in maps[map].base.exits) - { - maps[map].base.exits[extract].EntryPoints = "Village,Riverside"; - } - break; - case "woods": - for (const extract in maps[map].base.exits) - { - maps[map].base.exits[extract].EntryPoints = "House,Old Station"; - } - break; - default: - break; + } } } } } + + private exfilTime(): void + { + const maps = this.tables.locations; + const mod = this.modConfig.locations; + for (const map in maps) + { + if (map.toLowerCase() === "base") + { + continue; + } + + const mapBase = this.tables.locations[map].base; + if (mapBase.Locked === true || mapBase?.EnabledCoop === undefined) + { + continue; + } + + for (const exit of mapBase.exits) + { + exit.ExfiltrationTime = mod.exfilTime; + } + } + } + + private noExtractRestrictions(): void + { + const locations = this.tables.locations; + for (const i in locations) + { + if (i !== "base") + { + for (const x in locations[i].base.exits) + { + if (locations[i].base.exits[x].Name !== "EXFIL_Train" && + !locations[i].base.exits[x].Name.includes("lab") || + locations[i].base.exits[x].Name === "lab_Vent") + { + if (locations[i].base.exits[x].PassageRequirement !== "None") + { + locations[i].base.exits[x].PassageRequirement = "None"; + } + if (locations[i].base.exits[x].ExfiltrationType !== "Individual") + { + locations[i].base.exits[x].ExfiltrationType = "Individual"; + } + if (locations[i].base.exits[x].Id !== "") + { + locations[i].base.exits[x].Id = ""; + } + if (locations[i].base.exits[x].Count !== 0) + { + locations[i].base.exits[x].Count = 0; + } + if (locations[i].base.exits[x].RequirementTip !== "") + { + locations[i].base.exits[x].RequirementTip = ""; + } + if (locations[i].base.exits[x].RequiredSlot) + { + delete locations[i].base.exits[x].RequiredSlot; + } + } + } + } + + } + } + + private extractionsExtended(): void + { + + const locations = this.tables.locations; + for (const map in locations) + { + switch (map) + { + case "base": + break; + case "bigmap": + for (const extract in locations[map].base.exits) + { + locations[map].base.exits[extract].EntryPoints = "Customs,Boiler Tanks"; + } + break; + case "interchange": + for (const extract in locations[map].base.exits) + { + locations[map].base.exits[extract].EntryPoints = "MallSE,MallNW"; + } + break; + case "shoreline": + for (const extract in locations[map].base.exits) + { + locations[map].base.exits[extract].EntryPoints = "Village,Riverside"; + } + break; + case "woods": + for (const extract in locations[map].base.exits) + { + locations[map].base.exits[extract].EntryPoints = "House,Old Station"; + } + break; + default: + break; + } + } + + } } \ No newline at end of file diff --git a/Valens-AIO/src/mod.ts b/Valens-AIO/src/mod.ts index b8879cd..721be32 100644 --- a/Valens-AIO/src/mod.ts +++ b/Valens-AIO/src/mod.ts @@ -25,6 +25,8 @@ import { Logger } from "./logger"; import { Config } from "../config/config"; import { Weapons } from "./weapons"; import { Containers } from "./containers"; +import { Locations } from "./locations"; +import { Quests } from "./quests"; //import { Airdrop } from "./airdrop"; class ValensAIO implements IPostDBLoadMod @@ -84,8 +86,14 @@ class ValensAIO implements IPostDBLoadMod const items = new Items(vLogger, this.databaseServer); items.updateItems(); + const locations = new Locations(vLogger, this.databaseServer); + locations.updateLocations(); + const loot = new Loot(vLogger, this.databaseServer, this.locationConfig); - loot.updateLoot(); + loot.updateLoot(); + + const quests = new Quests(vLogger, this.databaseServer); + quests.updateQuests(); const raid = new Raid(vLogger, this.databaseServer, this.inRaidConfig); raid.updateRaid(); diff --git a/Valens-AIO/src/quests.ts b/Valens-AIO/src/quests.ts new file mode 100644 index 0000000..e437f4c --- /dev/null +++ b/Valens-AIO/src/quests.ts @@ -0,0 +1,48 @@ +import { Logger } from "winston"; +import { Config } from "../config/config"; +import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; + +export class Quests +{ + private modConfig: Config = require("../config/config.json"); + private logger: Logger; + private databaseServer: DatabaseServer; + + constructor(logger: Logger, databaseServer: DatabaseServer) + { + this.logger = logger; + this.databaseServer = databaseServer.getTables(); + } + + public updateQuests(): void + { + if (!this.modConfig.quests.onlyFoundInRaid) + { + this.onlyFoundInRaid(); + this.logger.info("Quest Items No Longer Need Be Found In Raid"); + } + } + + // Updates the weight modifier (as a multiplier) for all items in database/templates/items.json + private onlyFoundInRaid(): void + { + const quests = this.databaseServer.templates.quests; + + for (const questid in quests) + { + const questsAvailableForFinishConditions = quests[questid].conditions.AvailableForFinish; + const findItemConditions = questsAvailableForFinishConditions.find(x=>x.parent === "FindItem"); + + if (!findItemConditions) + { + continue; + } + + if (findItemConditions._props.onlyFoundInRaid) + { + findItemConditions._props.onlyFoundInRaid = false; + } + } + } + +}