Mod Details

Quests Extended

Quests Extended 3.3.2

Created by  LightoftheWorld

6.1K Downloads

SPT 3.11.4 Compatible

For when Jaeger isn't interesting enough

Latest Version 3.3.2
SPT 3.11.4

Updated Oct 11, 12:02 AM

0.0 MB

Version Notes

I packaged 3.3.1 incorrectly like a complete idiot. This fixes that. Enough people have downloaded 3.3.1 that I decided to push a new version instead of just editing the download so that people know.

This download is externally hosted.
Always scan for viruses.

Quests Extended is a client mod, originally authored by CJ, that expands the list of conditions that can be used within quests, with the goal of allowing for more unique / interesting quest designs. There are currently32 additional conditions, including things like activating power switches, restoring health, and searching containers.

Please install this mod before installing a trader that utilizes this mod.

Mods that use QE

Flea market quests: Flea Market Quests

Quest Creators

I will create a proper wiki on GitHub eventually, but for now, here’s a speedrun of the absolute basics:

When creating a quest. create a CounterCreator condition that looks something like the following (expand image):

What’s most important is that the condition itself is impossible to complete; in this case, you are required to kill a pmc from 5555 meters away. This prevents accidental progress on quests. The bottom ‘value’ just under the ‘type’ is important, however, as that will determine how many times your custom condition needs to be met. For example, if you want the player to heal 300 health, set that value to 300.

Keep the id that’s highlighted in mind when we go to the next step. The id in that spot (and only that spot, of the three ids that exist per counter creator) is important.

Create a new .json file and place it in ../BepInEx/plugins/QuestsExtended/Quests. If this new json is anywhere else, it will not be registered. Within this .json, you want something akin to this for each quest (expand image):

The id outside the brackets and the id next to “QuestId” should be the same, and are the id of the quest itself. For each CounterCreator task you have in your quest, create the condition like you see in the image. Remember that highlighted id I mentioned earlier? Place it in the “ConditionId” spot. Check the “Conditions List” tab to see a full list of all custom conditions currently in the mod. The “Locations” can be multiple locations; if you want to have a quest that tracks on Interchange and Customs, but nowhere else, that will work.

Certain quest conditions have additional features. For example, most of the health-related quests can utilize “IncludeBodyParts” (See image below)

When you are creating a release of your mod, I highly recommend you pre-include the .json in its correct path in your download, as that will minimize work on the end user and should prevent complications if the end user downloads your mod first and this one second.

Condition Types

The following is a list of conditions currently in a mod. Some extra comments might be on conditions if they need more explaining. They are separated into multiple catagories for sorting purposes, but implementing any of them is the exact same: Simply copy the Exact Spelling And Capitalization into the “ConditionType”.

General:

EncumberedTimeInSeconds //If the weight indicator in the inventory is yellow or orange, this will increase.

OverEncumberedTimeInSeconds //If the weight indicator in the inventory is red, this will increase.

MoveDistance //None of the “MoveDistance” tasks are mutually exclusive. If the player is moving quietly while crouched, all three of the conditions will increase

MoveDistanceWhileRunning

MoveDistanceWhileCrouched

MoveDistanceWhileProne

MoveDistanceWhileSilent //‘Moving Silently’ means the player is moving slow enough to gain CovertMovement experience. Roughly speaking, if the sound icon in the bottom left is in the left third of the bar, this should increase.

SearchContainer

LootItem

ActivatePowerSwitch

UseKey

CompleteWorkout//WILL BE ADDED IN 2.0.3

CompleteOptionals //See the dedicated “Quests with optional tasks” tab

Combat:

DamageWithAny

DamageWithAR

DamageWithDMR

DamageWithGL

DamageWithLMG

DamageWithMelee

DamageWithPistols

DamageWithRevolvers

DamageWithShotguns

DamageWithSMG

DamageWithSnipers

DamageWithThrowables

DamageToArmour //This tracks the amount of durability lost on the enemy armour.

DestroyEnemyBodyParts //Blacking any body part, including the head or thorax.

KillsWhileADS

KillsWhileCrouched

KillsWhileProne

KillsWhileMounted

KillsWhileSilent //See comment on “MoveDistanceWhileSilent”

KillsWhileBlindFiring

MountedKillsWithLMG

DestroyLegsWithSMG

RevolverKillsWithoutADS //AKA hipfire kills with Revolvers

DamageToArmourWithShotguns

TotalShotDistanceWithSnipers //Every time damage with a sniper rifle is dealt, the distance between the player and the target will be added to this condition. If I hit one bot at 30m and a second at 50m, this condition will be at 80/x. If I then hit someone at 65 m next raid, this task will be at 145/x.

Medical:

FixLightBleed

FixHeavyBleed

FixAnyBleed

FixFracture

HealthLoss

HealthGain

DestroyBodyPart //This means the PLAYER gets a blacked limb, this is not a “destroy limbs on the enemy”. That is in Combat

RestoreBodyPart //Fun fact: A ‘UseItem’ task set to trigger on the use of either surgical kit will accomplish the same thing.

Hideout:

CraftItem

CraftCyclicItem (Water filter, bitcoin farm, booze generator)

CollectScavCase

CollectCultistOffering

CompleteWorkout

Trading:

CompleteAnyTransaction (Use subconditions to modify this!)

SpendMoneyOnTransaction (Buying items)

EarnMoneyOnTransaction (Selling items)

Misc:

FixAnyMalfunction

FixARMalfunction

FixDMRMalfunction

FixLMGMalfunction

FixPistolMalfunction

FixShotgunMalfunction

FixSMGMalfunction

FixSniperMalfunction

SubConditions

Below is a list of all of the “Subconditions” you can put on a QE condition. Think of theses like your “distance”, “equipment”, “found in raid only” type things in normal EFT conditions. I will include a range of values if there’s a limited amount, or examples of what you would put if there is a theoretically infinite range of values (such as specific ids)

It is important to note that ALL of these can be null; in other words, you will only need to add these to your conditions if you are using them. If not, save yourself the time.

Bools (true/false):

IsFail (Is your QE condition for a Fail condition instead of a “complete” condition? If so, mark this as true!)

Lists (make sure values are in brackets! []) Locations[]: Identical to normal quest crafting, be sure to utilize the correct name. “any” also works as a condition, though since this can be null, you don’t need it. Useable for any quest.

Include/ExcludeBodyParts: [“Head”, “Chest”, “Stomach”, “LeftArm”, “RightArm”, “LeftLeg”, “RightLeg”]. Identical to normal quest crafting. Used in combat-related quests.

Workstations (Try to be case sensitive): [“IntelligenceCenter”, “Kitchen”, “MedStation”, “WaterCloset”(Lavatory), “Workbench”]. Used in CraftAnyItem.

CyclicWorkstations (Try to be case sensitive): [“BitcoinFarm”, “WaterCollector”, “BoozeGenerator”]. Used in CraftCyclicItem.

TraderIds[]: You can place any vanilla trader id or any custom trader id to specify which trader(s) you wish the player to trade with. Used in Trading quests.

CurrencyTypes: [“EUR”, “RUB”, “USD”]. Used to specify if trades must be done with the specific type of currency. Used in Trading quests.

IT IS IMPORTANT TO NOTE: CurrencyTypes is a UNIQUE subcondition in that the primary condition actually changed based off of the existence of this subcondition. If you do NOT specify a CurrencyType, then all transactions will convert to the rouble value and increment the quest based off that. For example, a condition to spend 2 million of no specified currency will increment on any currency type, whereas the same condition with the specification of “RUB” will only increment when roubles are used.

EnemyTypes: [“USEC”, “BEAR”, “SCAV” or “SAVAGE”]. Currently there is no “pmc” option: You must put both “USEC” and “BEAR” if you want to replicate a “pmc” option. I will probably add “pmc” in the next patch, I didn’t notice it was missing until I was writing this lol. Used in most Combat quests

KeyIds[]: The item id for the key(s) needs to be placed inside the []. Keys and Keycards work here. If you don’t know how to find an item id, you probably aren’t ready to be making quests with QE yet. Used in UseKey

QuestsToStart[]: Please see “Multiple Choice Quests” for more information. Any quest ID you place into this list will become AVAILABLE FOR START, as if you had just completed the quest that would naturally unlock the one you place here. Used on any quest

Quests with optional tasks

1.7.5 introduces the “CompleteOptionals” condition, which allows you to create a list of ‘optional’ conditions under one main condition and have the player complete X amount of the ‘optional’s. To create an optional task , you simply add the id of the parent condition to the “parentId” spot when creating the ‘optional’ condition (this is a vanilla feature in Tarkov). The optional tasks may be vanilla conditions or QE conditions, both work. When the player completes an optional objective, only the quest that the completed optional objective is in will increase. In the future, I might add a “CompleteAnyOptionals”, but for now it is only per-quest.

While I have tested this condition a fair amount, it is still experimental. Use with caution.

Multiple Choice Quests

Create an impossible “AvailableForStart” task (similar to creating an impossible “AvailableForFinish” condition). I recommend a simple “level 99” condition:

Within your custom conditions json, you will need to add some things (click to enlarge):

You will notice that this quest has an extra line defined BEFORE the “condition:[]”: “IsMultipleChoiceStarter”: true. You only need this line if the quest is actually an MCS, it’s assumed false for other quests. Additionally, *most* conditions have an additional thing: “QuestsToStart”: [““]. You made add one or more QUEST Ids to this list, and those quests will automatically be started as soon as the quest is finished (happens before the quest is technically turned in, btw). You will notice that the “CompleteOptionals” itself doesn’t have a QuestsToStart; this is because that condition will always be completed, so any ids you might put there will always be triggered (so if you want a certain quest after this one no matter what, have it unlock normally upon quest completion.) You need to place every condition in a quest that is marked as “IsMultipleChoiceStarter” into this .json. If a specific condition does not start a task, leave QuestsToStart empty for that condition.

You will additionally notice that there is an “EmptyWithQuestStarter” condition type. Use “EmptyWithQuestStarter” if the task is a vanilla condition, and not a QE condition. The reason you need to include the condition in the json is so that your multiple choice quest will actually work.

FIKA Compatibility

I am not currently planning on making this mod 100% compatible with FIKA. I would need to re-write 95% of the code in the mod to handle multiple players. The mod is currently extremely set on there being one player. If you use FIKA for the performance increase or other features but you still play solo, you should be able to use this mod without issues. I have tried to make that specific case functional. If QE ever becomes fully FIKA compatible in the future, it will be a separate download: Singleplayer and Multiplayer would simply be too different for this mod to try and handle in one.

Version 3.3.2
Download Mod Version
SPT 3.11.4
Latest Compatible SPT Version

0.0 MB

113 Downloads

Created Oct 11, 12:01 AM

Updated Oct 11, 12:02 AM

Virus Total Results

I packaged 3.3.1 incorrectly like a complete idiot. This fixes that. Enough people have downloaded 3.3.1 that I decided to push a new version instead of just editing the download so that people know.

Version 3.3.1
Download Mod Version
SPT 3.11.4
Latest Compatible SPT Version

0.0 MB

110 Downloads

Created Oct 8, 10:00 AM

Updated Oct 8, 10:01 AM

Virus Total Results

-Changed “CraftItem” to be “CraftAnyItem” (matches published documentation) -Backend work to prevent a possible softlock in which a quest that was started “the QE way” is not accepted before the game is closed, therefore preventing them from ever seeing the quest.

Version 3.3.0
Download Mod Version
SPT 3.11.4
Latest Compatible SPT Version

0.0 MB

108 Downloads

Created Oct 5, 7:46 AM

Updated Oct 5, 7:47 AM

Virus Total Results

NEW FEATURES: -The mod is now “semi-compatible” with FIKA. See the new description tab, but the short version is this: If you “solo-play” FIKA, you should be totally good. If you actually play FIKA with multiple people (y’know, like you’re meant to), its uh… it’s better than last version.

NEW QUEST CONDITIONS: “UseKey” (Works with keys and keycards)

NEW SUBCONDITIONS: KeyId Zones (Technically existed but wasn’t utilized until now)

Should be fairly bug-free. Massive appreciation to Austib once again for being the perfect tester. Every developer needs someone like him.

This is the version that Guiding Light is planning to release with.

Version 3.2.4
Download Mod Version
SPT 3.11.4
Latest Compatible SPT Version

631 Downloads

Created Aug 30, 8:21 AM

Updated Aug 30, 8:21 AM

Virus Total Results

-Fixed an error caused by vibe coding at 1am (I’m going to sleep…)

Version 3.2.3
Download Mod Version
Unknown SPT Version
Latest Compatible SPT Version

43 Downloads

Created Aug 30, 7:31 AM

Updated Aug 30, 7:31 AM

Virus Total Results

-Fixed “EnemyTypes” checking the player’s side (usec / bear / scav) instead of the enemy’s side (thanks Austib for the report!)

Version 3.2.2
Download Mod Version
Unknown SPT Version
Latest Compatible SPT Version

330 Downloads

Created Aug 20, 2:33 AM

Updated Aug 20, 2:33 AM

Virus Total Results

INTO THE OUTER DARKNESS WITH THAT GLITCH

THERE WILL BE WEEPING AND GNASHING OF TEETH. IT WILL SUFFER.

Ahem.

-Fixed QE’s contribution to the issue where bots could become unlootable / freeze / glitch after death.

THIS HAS BEEN TESTED. THE BUG HAS BEEN REPORTED WITHOUT THE PRESCENCE OF QE AND EVEN IN LIVE TARKOV. IT IS NO LONGER QE’S FAULT.

A massive thank you to TheGoldenaxe001 (TheGoldenAxe001 / Raptor) for testing this with me, providing logs, and just generally being helpful. He will remember this.

LightoftheWorld
[deleted at 2025-10-06 04:39:30]
Vercinaigh

Good job much obliged for the hard work!

1 Like
hellchickens

lol, it reminds me BSG bug 2024 end, after zombie event was finished. There was literally same bug when last killed for achievement unit stuck lagging

0 Likes
LightoftheWorld

Could I get you to DM me in discord, by chance? Same username as here.

0 Likes
LightoftheWorld

It’s picking up achievements… I see. Let me try to fix that.

0 Likes
TheGoldenaxe001

This is still causing issues with AI freezing on death. I can send logs if needed. It seems to be a degrading issue where more and more bots are affected the more you play

0 Likes

The odds of me coming back to the database the same minute you post a comment… funny. Anyways yes, please send logs. Really it’ll just let me know what method is causing it (I probably know it), but it’s something

0 Likes

Just my luck lol. Faster the better
What logs do you need? I’ll run a raid for you

0 Likes

BepInEx->LogOutput, please!

0 Likes

…Sooooo… there’s not a single error from Quests Extended in this log. I don’t know what the incompatibility is, but it’s not this mod by itself. In other words, the combination of this mod and another mod is causing issues. I’ve already tried quite a few mods and they play fine together, and I don’t run into this issue myself… Can you try removing Questing Bots and seeing if the error still happens?

0 Likes

Not sure that QB has any problem here as issue happens only when 2 and more boss units spawned. Goons spawn + any other boss = 100% issue hit. Smugglers spawn = 100% issue hit. MB that’s only fika headless problem, though I’ll try different combinations and will send u logs if catch anything.

P.S. there weren’t any issues like that when had 0-1 bosses on the map spawned. Still can hit when init spawn has 1 boss but Partisan chance proc happened and still can lag out even before Partisan was spawned

0 Likes

Sorry for the late responce. I uninstalled all bot behavior mods and spawning mods. Anything that touched AI behavior, pathing, and logic, but left this mod. The problem kept happening. Once I removed this mod, it worked even with all those mods installed. It happens less when on a new profile, so if it is bosses, then that may explain why it happens more as you level

Edits: I looked at the dlls a bit, and I am no modder and understand verrrry little about Tarkov’s rotten guts or this mod, but it looks like the mod is always trying to add enemy kills to a counter regardless of if there’s a condition or not? I also see there’s a check for enemy type of Scav or null. Maybe the game is confusing PMC and boss deaths? Again, I have like 0 clue how it all runs under the hood but I figured I’d look out of curiosity and try to help. You guys have your work cut out for you
I did some good ol trial and error and sure enough, disabling bosses does fix the issue. I tested factory day and even just Tagilla spawning would cause the freezing
And now, a few days later, I play without the mod and it’s starting to happen again, now on every kill

0 Likes
Vercinaigh

Still a few issues with bots becoming unlootable and animation stuck mostly with bosses but happens in general sometimes, but not always as it was before.

0 Likes

Rippppppppp…. ugh. Can you provide any logs for me when this happens? I can see what method is throwing it (I have a clue but still good to see) and I can see what I can do

0 Likes

Sorry had to remove it so others could actually play, run a dedicated server for a group so it’s not installed right now.

0 Likes

Fair. No worries

0 Likes

Sorry can’t be of more help, really want this working for another mod that thus can’t work without it.

0 Likes

I can test new versions if you have any ideas. I just can’t leave this up long term, eager to have it working.

0 Likes
Darezi

Why change the file name from QuestsExtended to GuidingLight?

It’s confusing when looking for this mod in the folder, as it’s named differently.

0 Likes

What??? Did I set the wrong name?

0 Likes

Oh my gosh. I did. My bad!!!!!

0 Likes
quesonuke

Heads up, I ran into conflicts with this mod and FIKA that cause bots to freeze on death repeating their last action.

0 Likes

Hoping this will be fixed in an update that is coded and in the testing phase

0 Likes

Thanks for your work, I’ll definitely be checking it out!

0 Likes

Update dropped, any confirmation on it being resolved?

0 Likes

I most likely won’t be installing, it’s too much trouble maintaining a working headless as is

0 Likes

start a game in the streats, just had Kollontay and Kaban freezing on death….

0 Likes

yep, still happens in some raids. Most often in first raid after server restart. Also noticed that most tending when bosses spawned. Though bots can kill each other without problems

0 Likes

Bummer…will have to wait longer I guess

0 Likes
hellchickens

Sup bro, after I’ve installed QE and passed first week i have now issues with weekly tasks. Suppose there is something wrong with generation. Here is the part of the log:

[2025-07-18T21:51:25.968Z] error: TypeError: Cannot read properties of undefined (reading ‘min’) at RepeatableQuestGenerator.generateCompletionAvailableForFinish (C:\snapshot\project\obj\generators\RepeatableQuestGenerator.js) at RepeatableQuestGenerator.generateCompletionQuest (C:\snapshot\project\obj\generators\RepeatableQuestGenerator.js) at RepeatableQuestGenerator.generateRepeatableQuest (C:\snapshot\project\obj\generators\RepeatableQuestGenerator.js) at RepeatableQuestController.getClientRepeatableQuests (C:\snapshot\project\obj\controllers\RepeatableQuestController.js) at QuestCallbacks.activityPeriods (C:\snapshot\project\obj\callbacks\QuestCallbacks.js) at RouteAction.action (C:\snapshot\project\obj\routers\static\QuestStaticRouter.js) at QuestStaticRouter.handleStatic (C:\snapshot\project\obj\di\Router.js) at HttpRouter.handleRoute (C:\snapshot\project\obj\routers\HttpRouter.js) at HttpRouter.getResponse (C:\snapshot\project\obj\routers\HttpRouter.js) at HttpRouter.result.getResponse (E:\spt3113\user\mods\fika-server\src\overrides\routers\HttpRouter.ts:27:63) [2025-07-18T21:51:25.809Z] debug: Adding: 0.04 58330581ace78e27b8b10cee trader reputation reward [2025-07-18T21:51:25.822Z] debug: Generating: Daily quest for: 5935c25fb3acc3127c3d8cd9 with budget: 5982 totalling: 4 items [2025-07-18T21:51:25.823Z] debug: Added item: 648067db042be0705c0b3009 with price: 9975 [2025-07-18T21:51:25.823Z] debug: Adding: 0.02 5935c25fb3acc3127c3d8cd9 trader reputation reward [2025-07-18T21:51:25.837Z] debug: Generating: Daily quest for: 5c0647fdd443bc2504c2d371 with budget: 33586 totalling: 3 items [2025-07-18T21:51:25.838Z] debug: Added item: 6389c70ca33d8c4cdf4932c6 with price: 18000 [2025-07-18T21:51:25.838Z] debug: Reward pool empty with: 15586 roubles of budget remaining [2025-07-18T21:51:25.838Z] debug: Adding: 0.01 5c0647fdd443bc2504c2d371 trader reputation reward [2025-07-18T21:51:25.855Z] debug: Added weapon: 6718817435e3cfd9550d2c27 with price: 88235 [2025-07-18T21:51:25.867Z] debug: Generating: Daily quest for: 6617beeaa9cfa777ca915b7c with budget: 6687 totalling: 4 items [2025-07-18T21:51:25.867Z] debug: Added item: 5e340dcdcb6d5863cc5e5efb with price: 4700 [2025-07-18T21:51:25.867Z] debug: Reward pool empty with: 1987 roubles of budget remaining [2025-07-18T21:51:25.867Z] debug: Adding: 0.04 6617beeaa9cfa777ca915b7c trader reputation reward [2025-07-18T21:51:25.881Z] debug: Generating: Daily quest for: 58330581ace78e27b8b10cee with budget: 28935 totalling: 1 items [2025-07-18T21:51:25.882Z] debug: Added item: 6284bd5f95250a29bc628a30 with price: 21000 [2025-07-18T21:51:25.882Z] debug: Reward pool empty with: 7935 roubles of budget remaining [2025-07-18T21:51:25.882Z] debug: Adding: 0.01 58330581ace78e27b8b10cee trader reputation reward [2025-07-18T21:51:25.882Z] debug: Generating new weekly [2025-07-18T21:51:25.895Z] debug: Generating: Weekly quest for: 54cb50c76803fa8b248b4571 with budget: 559836 totalling: 5 items [2025-07-18T21:51:25.895Z] debug: Added item: 6cc7d60178706926401b7c8d with price: 70000 [2025-07-18T21:51:25.895Z] debug: Adding: 0.04 54cb50c76803fa8b248b4571 trader reputation reward [2025-07-18T21:51:25.931Z] debug: Generating: Weekly quest for: 5935c25fb3acc3127c3d8cd9 with budget: 798907 totalling: 7 items [2025-07-18T21:51:25.933Z] debug: Added item: 5c12620d86f7743f8b198b72 with price: 120000 [2025-07-18T21:51:25.968Z] error: TypeError: Cannot read properties of undefined (reading ‘min’) [2025-07-18T21:51:25.968Z] error: TypeError: Cannot read properties of undefined (reading ‘min’) at RepeatableQuestGenerator.generateCompletionAvailableForFinish (C:\snapshot\project\obj\generators\RepeatableQuestGenerator.js) at RepeatableQuestGenerator.generateCompletionQuest (C:\snapshot\project\obj\generators\RepeatableQuestGenerator.js) at RepeatableQuestGenerator.generateRepeatableQuest (C:\snapshot\project\obj\generators\RepeatableQuestGenerator.js) at RepeatableQuestController.getClientRepeatableQuests (C:\snapshot\project\obj\controllers\RepeatableQuestController.js) at QuestCallbacks.activityPeriods (C:\snapshot\project\obj\callbacks\QuestCallbacks.js) at RouteAction.action (C:\snapshot\project\obj\routers\static\QuestStaticRouter.js) at QuestStaticRouter.handleStatic (C:\snapshot\project\obj\di\Router.js) at HttpRouter.handleRoute (C:\snapshot\project\obj\routers\HttpRouter.js) at HttpRouter.getResponse (C:\snapshot\project\obj\routers\HttpRouter.js) at HttpRouter.result.getResponse (E:\spt3113\user\mods\fika-server\src\overrides\routers\HttpRouter.ts:27:63)

0 Likes

works in 3.2.0, thanks

0 Likes
Notice: This mod may make permanent changes to your profile, and may not be removable without starting a new profile. More information.

Details