
For when Jaeger isn't interesting enough
THIS MOD DOES NOTHING BY ITSELF AND THERE ARE CURRENTLY NO TRADERS THAT USE THIS. YOU DO NOT NEED THIS MOD UNLESS YOU ARE DEVELOPING QUESTS WITH QE.
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 currently31 additional tasks, including things like activating power switches, restoring health, and searching containers.
Please install this mod before installing a trader that utilizes this mod.
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.
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 “General”, “Combat”, and “Medical” 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
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
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 will be added next update, actually.
RestoreBodyPart //Fun fact: A ‘UseItem’ task set to trigger on the use of either surgical kit will accomplish the same thing.
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.
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 “Empty” condition type. Use “Empty” 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.
SPT 3.11.3
227 Downloads
This is an incredibly small QOL update for quest creators. You do not need this version unless you are using this mod to create quests and want the single thing it adds.
-Added "QuestName" as a field for the .json files (It isn't used by anything, it's merely there for ease of looking at larger files)
SPT 3.11.3
151 Downloads
Critical bug fixes related to the end of raids, especially for hideout instances
SPT 3.11.3
142 Downloads
^^^Please download 2.0.1
This mod is officially completed in my eyes. I will still maintain it, make some new conditions here and there, fix bugs, but as far as massive changes go, this is it. I want to give a massive thanks to:
Cj -Original creator of this mod, and put up with me as I worked on it, as well as assisting me on rare occasion. This mod would not even be here if he did not allow me to maintain. Thank you, CJ.
DrakiaXYZ, Apex Predator (Jehree), AcidPhantasm -All three of them helped me time and time again as I suffered through learning server modding, learning about BSG's... interesting quest code. I truly do not think this mod would be in this state (at least this soon) if even one of you weren't there for me. Thank you Drakia, Jehree, and Acid!
----------------------------------------------------------------------------------------------
-Added "Multiple Choice Quests". You may now create quests with any number of conditions that each start any amount of quests when you complete them, creating true branching paths. See the "Multiple choice quests" tab for more information.
SPT 3.11.3
300 Downloads
Penultimate update that I have planned for QuestsExtended. That does NOT mean I am just dropping QE off a cliff after the next massive update, it simply means that my vision for this mod will be "complete" and update will become smaller and less frequent.
-Added 'CompleteOptionals' condition (see the "Quests with optional objectives" tab). This means that, in short, you can create quests in which the player only has to complete a certain number of conditions on that quest, instead of needing to complete ALL conditions on that task.
The above is a standalone feature, but is also a framework for the "last" update, which is to add multiple choice quests. I do not know how long this will take to implement, I have some framework stuff already.
SPT 3.11.3
514 Downloads
Added the following quest conditions:
DestroyEnemyBodyParts
KillsWhileADS
KillsWhileCrouched
KillsWhileProne
KillsWhileMounted
KillsWhileSilent
KillsWhileBlindFiring
MountedKillsWithLMG
DestroyLegsWithSMG
RevolverKillsWithoutADS
SPT 3.11.3
313 Downloads
One fix and one addition:
-Fixed "DamageToArmour" incorrectly calculating the amount of damage dealt. It now properly detects how much damage was dealt to the armour itself, aka durability lost.
-Added "DamageToArmourWithShotguns" as a quest condition
Not quite yet...