任务值参考表
<NolebasePageProperties />
为对任务创建或修改感兴趣的模组作者提供的参考页面。
本页面包含任务创建或修改过程中使用的各种数值。请使用快捷链接在不同区域之间跳转。
更新于 3 月 11 日
一般信息
下方列出了所有与任务相关的常规信息,包括原版商人ID、地点信息和ID、任务类型和属性。您还会找到一个直接取自BSG的示例任务。
实用链接
物品查找器
原版任务数据
机器人类型及名称参考表
交易者ID
位置ID
技能名称
下面列出了 EFT 目前使用或以前使用过的所有技能名称。
游戏中已移除一些数值,但为了便于更新模组或修改 SPT 的先前版本,仍在此处列出。
| 技能名称 | 价值 | 有效性 |
|---|---|---|
| 藏身处管理 | "HideoutManagement" | 有效的 |
| 制作 | "Crafting" | 有效的 |
| 代谢 | "Metabolism" | 有效的 |
| 免疫 | "Immunity" | 有效的 |
| 耐力 | "Endurance" | 有效的 |
| 力量 | "Strength" | 有效的 |
| 活力 | "Vitality" | 有效的 |
| 健康 | "Health" | 有效的 |
| 抗压性 | "StressResistance" | 有效的 |
| 投掷 | "Throwing" | 有效的 |
| 转换运动 | "CovertMovement" | 有效的 |
| 洞察力 | "Perception" | 有效的 |
| 智力 | "Intellect" | 有效的 |
| 注意力 | "Attention" | 有效的 |
| 魅力 | "Charisma" | 有效的 |
| 近战 | "Melee" | 有效的 |
| 外科手术 | "Surgery" | 有效的 |
| 瞄准练习 | "AimDrills" | 有效的 |
| 故障排除 | "TroubleShooting" | 有效的 |
| 急救 | "FirstAid" | 有效的 |
| 轻型背心 | "LightVests" | 有效的 |
| 重型背心 | "HeavyVests" | 有效的 |
| 武器治疗 | "WeaponTreatment" | 有效的 |
| 磁力钻 | "MagDrills" | 有效的 |
| 狙击手 | "Sniper" | 有效的 |
| 手枪 | "Pistol" | 有效的 |
| 左轮手枪 | "Revolver" | 有效的 |
| 冲锋枪 | "SMG" | 有效的 |
| 突击步枪 | "Assault" | 有效的 |
| 霰弹枪 | "Shotgun" | 有效的 |
| 轻机枪 | "LMG" | 有效的 |
| DMR | "DMR" | 有效的 |
任务类型
任务类型是必需的,将在玩家的任务列表以及商人的任务页面上以特定方式显示。
所有任务都必须有类型。
任务类型将显示在玩家客户端的任务列表中,并带有任务名称和 BSG 图标。
任务类型不必与任务条件完全一致,但为了方便玩家理解,建议尽量与任务条件一致。
我在下方的有效类型表中添加了典型的任务用法。**您不必完全遵循这些建议,它们只是 BSG 任务中的常见用法。**您可以根据任务本身的
需要对任务类型进行任何设置,但条件必须与相应的条件类型完全匹配。
| Type | Typical Quest Usage |
|---|---|
| PickUp | Find/Handover |
| Elimination | Kill |
| Discover | LeaveItemAtLocation |
| Completion | Multi Conditional |
| Exploration | VisitPlace |
| Levelling | Prestige/Achievement/Level (Unused) |
| Experience | Experience (Unused) |
| Standing | TraderLoyalty |
| Loyalty | Branching quests (Like choosing one trader or another) |
| Merchant | Handing money over to a trader |
| Skill | Skill Requirements |
| Multi | Multi Conditional |
| WeaponAssembly | WeaponAssembly |
| ArenaWinMatch | Unused - Untested if works in SPT |
| ArenaWinRound | Unused - Untested if works in SPT |
任务状态
任务状态在团队副本期间和非团队副本期间均由条件计数器自动设置。它们也可用于“可开始”要求。
所有任务都会有状态。该状态存储在用户个人资料的json文件中。
| Status | Value | Description |
|---|---|---|
| Locked | 0 | Quest is locked and not available to the player |
| AvailableForStart | 1 | Quest is available to player |
| Started | 2 | Quest is available to the player, and they have accepted it |
| AvailableForFinish | 3 | Quest is available to the player, they have accepted it, and it is ready to turn in |
| Success | 4 | Quest has been completed by the player |
| Fail | 5 | Player has failed the quest and it is not marked restartable |
| FailRestartable | 6 | Player has failed the quest, and can restart it |
| MarkedAsFailed | 7 | Quest has been marked to fail but did not flip to status 5 or 6 yet |
| Expired | 8 | Quest has expired |
| AvailableAfter | 9 | Quest is available, but is delayed from being shown to the player |
特性
下表列出了目前已知的所有任务属性。
虽然并非所有属性都是_必需的_,但最好拥有每一个属性,无论你是否使用它。
| Property Name | Required? | Example Value | Type |
|---|---|---|---|
| QuestName | Yes | "Building Our First Quest!" | string |
| _id | Yes | "68423056128053531e5a5bf6" | MongoID string |
| acceptPlayerMessage | No | "68423056128053531e5a5bf6 acceptPlayerMessage" | string |
| acceptanceAndFinishingSource | No | "eft" | string |
| arenaLocations | No | [] | array |
| canShowNotificationsInGame | Yes | true | boolean |
| changeQuestMessageText | No | "68423056128053531e5a5bf6 changeQuestMessageText" | string |
| completePlayerMessage | No | "68423056128053531e5a5bf6 completePlayerMessage" | string |
| conditions | Yes | object (AvailableForFinish/AvailableForStart/Fail) | |
| declinePlayerMessage | No | "68423056128053531e5a5bf6 declinePlayerMessage" | string |
| description | No | "68423056128053531e5a5bf6 description" | string |
| failMessageText | No | "68423056128053531e5a5bf6 failMessageText" | string |
| gameModes | No | [] | array |
| image | No | "/files/quest/icon/quest_icon.png" | string |
| instantComplete | No | false | boolean |
| isKey | No | false | boolean |
| location | Yes | "5704e4dad2720bb55b8b4567" | MongoID string (Location IDs) |
| name | Yes | "68423056128053531e5a5bf6 name" | string |
| note | No | "68423056128053531e5a5bf6 note" | string |
| progressSource | No | "eft" | string |
| rankingModes | No | [] | array |
| restartable | Yes | false | boolean |
| rewards | No | object (Rewards) | |
| secretQuest | No | false | boolean |
| side | Yes | "Pmc" | string |
| startedMessageText | No | "68423056128053531e5a5bf6 name" | string |
| successMessageText | No | "68423056128053531e5a5bf6 name" | string |
| traderId | Yes | "54cb50c76803fa8b248b4571" | MongoID string (Trader IDs) |
| type | Yes | "Skill" | string (Quest Type Table) |
任务结构
以下是 BSG 创建的一个任务示例。
以下信息可在阅读任务结构时找到。还有更多信息可供挖掘,我不会在此一一列举。您可以自行阅读下方实际的任务数据,看看能发现什么!
- 任务名称为“首秀”
- 任务 ID 为 5936d90786f7742b1420ba5b。
- 如您所见,此 ID 也用于各种区域设置字符串中,例如“ acceptPlayerMessage ”。
- 当子任务完成时,任务会在游戏内显示通知,这表示“ canShowNotificationsInGame ”为真。
- 该任务为“淘汰”任务,因此玩家任务列表中会显示骷髅头图标并标注“淘汰”字样。
- 击杀目标必须是非私人军事承包商(PMC)成员。
- Boss 和 Scav 被归类为“野蛮人”,但角色没有明确定义,因此任何非 PMC 玩家都是有效的攻击目标。
- 所需击杀数为 5。
- 需要上交的物品是“MP-133 12ga 泵动式霰弹枪”,目标编号为“ 54491c4f4bdc2db1078b4568 ”。
- 这些霰弹枪不需要是 FIR 型,因为“ onlyFoundInRaid ”显示为 false。
- 该任务在 1 级时解锁,但玩家还必须完成任务 ID “ 657315df034d76585f032e01 ”。
- 所需的任务 ID 是名为“射击罐子”的任务。
- 完成此任务可获得经验值、商人声望、物品(包括自制武器)以及普拉波尔的商人商品种类解锁。
{
"5936d90786f7742b1420ba5b": {
"QuestName": "Debut",
"_id": "5936d90786f7742b1420ba5b",
"acceptPlayerMessage": "5936d90786f7742b1420ba5b acceptPlayerMessage",
"acceptanceAndFinishingSource": "eft",
"arenaLocations": [],
"canShowNotificationsInGame": true,
"changeQuestMessageText": "5936d90786f7742b1420ba5b changeQuestMessageText",
"completePlayerMessage": "5936d90786f7742b1420ba5b completePlayerMessage",
"conditions": {
"AvailableForFinish": [
{
"completeInSeconds": 0,
"conditionType": "CounterCreator",
"counter": {
"conditions": [
{
"bodyPart": [],
"compareMethod": ">=",
"conditionType": "Kills",
"daytime": {
"from": 0,
"to": 0
},
"distance": {
"compareMethod": ">=",
"value": 0
},
"dynamicLocale": false,
"enemyEquipmentExclusive": [],
"enemyEquipmentInclusive": [],
"enemyHealthEffects": [],
"id": "5967379786f774620e763ea8",
"resetOnSessionEnd": false,
"savageRole": [],
"target": "Savage",
"value": 1,
"weapon": [],
"weaponCaliber": [],
"weaponModsExclusive": [],
"weaponModsInclusive": []
}
],
"id": "5967379186f77463860dadd5"
},
"doNotResetIfCounterCompleted": false,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5967379186f77463860dadd6",
"index": 0,
"isNecessary": false,
"isResetOnConditionFailed": false,
"oneSessionOnly": false,
"parentId": "",
"type": "Elimination",
"value": 5,
"visibilityConditions": []
},
{
"conditionType": "HandoverItem",
"dogtagLevel": 0,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "596737cb86f77463a8115efd",
"index": 3,
"isEncoded": false,
"maxDurability": 100,
"minDurability": 0,
"onlyFoundInRaid": false,
"parentId": "",
"target": [
"54491c4f4bdc2db1078b4568"
],
"value": 2,
"visibilityConditions": []
}
],
"AvailableForStart": [
{
"compareMethod": ">=",
"conditionType": "Level",
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "658471a72957dfa0e01552d1",
"index": 0,
"parentId": "",
"value": 1,
"visibilityConditions": []
},
{
"availableAfter": 0,
"conditionType": "Quest",
"dispersion": 0,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "658471a35740d10d154dac8f",
"index": 1,
"parentId": "",
"status": [
4,
5
],
"target": "657315df034d76585f032e01",
"visibilityConditions": []
}
],
"Fail": []
},
"declinePlayerMessage": "5936d90786f7742b1420ba5b declinePlayerMessage",
"description": "5936d90786f7742b1420ba5b description",
"failMessageText": "5936d90786f7742b1420ba5b failMessageText",
"gameModes": [],
"image": "/files/quest/icon/596b465486f77457ca186188.jpg",
"instantComplete": false,
"isKey": false,
"location": "any",
"name": "5936d90786f7742b1420ba5b name",
"note": "5936d90786f7742b1420ba5b note",
"progressSource": "eft",
"rankingModes": [],
"restartable": false,
"rewards": {
"Fail": [],
"Started": [],
"Success": [
{
"availableInGameEditions": [],
"id": "5fe305df8a67d12f5f24c8aa",
"index": 0,
"type": "Experience",
"unknown": false,
"value": 1700
},
{
"availableInGameEditions": [],
"id": "60c89c0c80b2027f403dd992",
"index": 0,
"target": "54cb50c76803fa8b248b4571",
"type": "TraderStanding",
"unknown": false,
"value": 0.02
},
{
"availableInGameEditions": [],
"findInRaid": false,
"id": "5fe305d9c646836c3b6fc562",
"index": 0,
"items": [
{
"_id": "67d82e6e4f4b5340e611a2d7",
"_tpl": "5449016a4bdc2d6f028b456f",
"upd": {
"StackObjectsCount": 15000
}
}
],
"target": "67d82e6e4f4b5340e611a2d7",
"type": "Item",
"unknown": false,
"value": 15000
},
{
"availableInGameEditions": [],
"findInRaid": true,
"id": "60cb4643f09d61072d6cf21a",
"index": 0,
"items": [
{
"_id": "67d82e6e4f4b5340e611a2d8",
"_tpl": "57d14d2524597714373db789",
"upd": {
"StackObjectsCount": 1
}
},
{
"_id": "67d82e6e4f4b5340e611a2d9",
"_tpl": "57d152ec245977144076ccdf",
"parentId": "67d82e6e4f4b5340e611a2d8",
"slotId": "mod_pistol_grip"
},
{
"_id": "67d82e6e4f4b5340e611a2da",
"_tpl": "57d1519e24597714373db79d",
"parentId": "67d82e6e4f4b5340e611a2d8",
"slotId": "mod_magazine"
}
],
"target": "67d82e6e4f4b5340e611a2d8",
"type": "Item",
"unknown": false,
"value": 1
},
{
"availableInGameEditions": [],
"findInRaid": true,
"id": "60cb467f7c496e588343a193",
"index": 0,
"items": [
{
"_id": "67d82e6e4f4b5340e611a2dd",
"_tpl": "65702606cfc010a0f5006a3e",
"upd": {
"SpawnedInSession": true,
"StackObjectsCount": 1
}
},
{
"_id": "67d82e6e4f4b5340e611a2de",
"_tpl": "573718ba2459775a75491131",
"parentId": "67d82e6e4f4b5340e611a2dd",
"slotId": "cartridges",
"upd": {
"SpawnedInSession": true,
"StackObjectsCount": 50
}
},
{
"_id": "67d82e6e4f4b5340e611a2df",
"_tpl": "65702606cfc010a0f5006a3e",
"upd": {
"SpawnedInSession": true,
"StackObjectsCount": 1
}
},
{
"_id": "67d82e6e4f4b5340e611a2e0",
"_tpl": "573718ba2459775a75491131",
"parentId": "67d82e6e4f4b5340e611a2df",
"slotId": "cartridges",
"upd": {
"SpawnedInSession": true,
"StackObjectsCount": 50
}
}
],
"target": "67d82e6e4f4b5340e611a2df",
"type": "Item",
"unknown": false,
"value": 2
},
{
"availableInGameEditions": [],
"id": "5ac64f3786f774056634a1cb",
"index": 0,
"items": [
{
"_id": "67d82e6e4f4b5340e611a2e1",
"_tpl": "5839a40f24597726f856b511",
"upd": {
"FireMode": {
"FireMode": "single"
},
"Foldable": {
"Folded": false
}
}
},
{
"_id": "67d82e6e4f4b5340e611a2e2",
"_tpl": "5649ad3f4bdc2df8348b4585",
"parentId": "67d82e6e4f4b5340e611a2e1",
"slotId": "mod_pistol_grip"
},
{
"_id": "67d82e6e4f4b5340e611a2e3",
"_tpl": "57dc347d245977596754e7a1",
"parentId": "67d82e6e4f4b5340e611a2e1",
"slotId": "mod_stock"
},
{
"_id": "67d82e6e4f4b5340e611a2e4",
"_tpl": "564ca99c4bdc2d16268b4589",
"parentId": "67d82e6e4f4b5340e611a2e1",
"slotId": "mod_magazine"
},
{
"_id": "67d82e6e4f4b5340e611a2e5",
"_tpl": "57ffb0e42459777d047111c5",
"parentId": "67d82e6e4f4b5340e611a2e1",
"slotId": "mod_muzzle"
},
{
"_id": "67d82e6e4f4b5340e611a2e6",
"_tpl": "5839a7742459773cf9693481",
"parentId": "67d82e6e4f4b5340e611a2e1",
"slotId": "mod_reciever"
},
{
"_id": "67d82e6e4f4b5340e611a2e7",
"_tpl": "59d36a0086f7747e673f3946",
"parentId": "67d82e6e4f4b5340e611a2e1",
"slotId": "mod_gas_block"
},
{
"_id": "67d82e6e4f4b5340e611a2e8",
"_tpl": "57dc32dc245977596d4ef3d3",
"parentId": "67d82e6e4f4b5340e611a2e7",
"slotId": "mod_handguard"
}
],
"loyaltyLevel": 1,
"target": "67d82e6e4f4b5340e611a2e1",
"traderId": "54cb50c76803fa8b248b4571",
"type": "AssortmentUnlock",
"unknown": false
},
{
"availableInGameEditions": [],
"id": "629f016390948017ee17bb3b",
"index": 0,
"target": "5c0647fdd443bc2504c2d371",
"type": "TraderStanding",
"unknown": false,
"value": 0.01
}
]
},
"secretQuest": false,
"side": "Pmc",
"startedMessageText": "5936d90786f7742b1420ba5b startedMessageText",
"status": 0,
"successMessageText": "5936d90786f7742b1420ba5b successMessageText",
"traderId": "54cb50c76803fa8b248b4571",
"type": "Elimination"
}能见度条件
可见性条件是SPT任务创建中的一项高级功能。大多数模组作者不会使用这些值,但它们非常有用。
可见性条件的使用场景是,如果您希望玩家在完成特定条件之前看不到任务,那么您可以在任务中设置一些任务。您可以使用这些条件来“惊喜”玩家,让他们在任务列表中看到一些额外的任务,这些任务只有在玩家准备好接受它们之后才会出现。
隐藏在可见性条件中的条件,在玩家看到之前不会跟踪或计算任何值。
例如,《太空堡垒卡拉狄加》中的“背景调查”任务就是一个例子。
这个任务有两个**“寻找物品”条件和一个“交出物品”条件。我们实际上并不关心其中一个“寻找物品”条件,因此示例中不会包含它。“交出物品**
” 条件只有在玩家完成找到“挂在链子上的青铜怀表”的条件后才会出现在玩家的任务列表中。
如下面的示例所示,HandoverItem条件有一个visibilityCondition。此条件要求“conditionType”为**“CompleteCondition”**,这意味着目标必须先完成,HandoverItem条件才会对玩家可见。
conditionType必须为“CompleteCondition”。id 必须是可见性数组条目本身的唯一 ID。target 是条件 ID ,您需要先完成该条件,然后该条件本身才会可见。
您可以为一项任务设置多个可见条件,本例中只有一个条件必须满足才能使交接物品可见。如果您需要查看包含多个条件的任务示例,请参阅“原版任务数据 ->实用链接”中的“战争之血 - 第三部分”。
您可以为一项任务设置多个可见条件,本例中只有一个条件必须满足才能使交接物品可见。如果您需要查看包含多个条件的任务示例,请参阅“原版任务数据 ->实用链接”中的“战争之血 - 第三部分”。
{
"conditionType": "FindItem",
"countInRaid": false,
"dogtagLevel": 0,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5968ec9986f7741ddd6c1012",
"index": 0,
"isEncoded": false,
"maxDurability": 100,
"minDurability": 0,
"onlyFoundInRaid": false,
"parentId": "",
"target": [
"5937fd0086f7742bf33fc198"
],
"value": 1,
"visibilityConditions": []
},
{
"conditionType": "HandoverItem",
"dogtagLevel": 0,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5967920f86f77468d219d632",
"index": 1,
"isEncoded": false,
"maxDurability": 100,
"minDurability": 0,
"onlyFoundInRaid": false,
"parentId": "",
"target": [
"5937fd0086f7742bf33fc198"
],
"value": 1,
"visibilityConditions": [
{
"conditionType": "CompleteCondition",
"id": "5a5778c986f7740ad83cd652",
"target": "5968ec9986f7741ddd6c1012"
}
]
}适用于成品条件
交接物品
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| conditionType | "HandoverItem" | string | HandoverItem condition |
| dogtagLevel | 0 | int | Required if handing over DogTag |
| dynamicLocale | false | boolean | Currently unused |
| globalQuestCounterId | "" | string | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| inEncoded | false | boolean | Required if requiring DSP Transmitter handover |
| maxDurability | 100 | int | Required for medical items, weapons, armour, etc |
| minDurability | 0 | int | Required for medical items, weapons, armour, etc |
| onlyFoundInRaid | false | boolean | If item is required to be FIR or not |
| parentId | "" | MongoID string | Used to create optional sub-tasks for a task - see "Bad Rep Evidence" in the Vanilla Quests Data -> Useful Links — Leave this as an empty string if not needed. |
| target | ["54491c4f4bdc2db1078b4568"] | MongoID string array | ItemID that is to be handed over, you can have multiple items in the array for multiple choice. If wanting a dogtag handed over, it will only be the specified ID - if you want all of them to be accepted you will need to populate the array for every ID for dogtags. |
| value | 2 | int | Amount of items in target that are required to be handed over to complete subtask |
| visibilityConditions | [] | array | see Visibility Conditions for example usage |
例子:
{
"conditionType": "HandoverItem",
"dogtagLevel": 0,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "596737cb86f77463a8115efd",
"index": 3,
"isEncoded": false,
"maxDurability": 100,
"minDurability": 0,
"onlyFoundInRaid": false,
"parentId": "",
"target": [
"54491c4f4bdc2db1078b4568"
],
"value": 2,
"visibilityConditions": []
}查找项目
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| conditionType | "FindItem" | string | HandoverItem condition |
| countInRaid | false | boolean | Currently unused, should always be false |
| dogtagLevel | 0 | int | Required if finding DogTag of specific level |
| dynamicLocale | false | boolean | Currently unused |
| globalQuestCounterId | "" | string | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| inEncoded | false | boolean | Required if requiring DSP Transmitter handover |
| maxDurability | 100 | int | Required for medical items, weapons, armour, etc |
| minDurability | 0 | int | Required for medical items, weapons, armour, etc |
| onlyFoundInRaid | false | boolean | If item is required to be FIR or not |
| parentId | "" | MongoID string | Used to create optional sub-tasks for a task - see "Bad Rep Evidence" in the Vanilla Quests Data -> Useful Links — Leave this as an empty string if not needed. |
| target | ["54491c4f4bdc2db1078b4568"] | MongoID string array | ItemID that is to be found, you can have multiple items in the array for multiple choice. If wanting a dogtag handed over, it will only count the specified IDs - if you want all of them to be accepted you will need to populate the array for every ID for dogtags. |
| value | 2 | int | Amount of items in target that are required to be found to complete subtask |
| visibilityConditions | [] | array | see Visibility Conditions for example usage |
例子:
{
"conditionType": "FindItem",
"countInRaid": false,
"dogtagLevel": 0,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5ac502a786f7740bde1b000c",
"index": 0,
"isEncoded": false,
"maxDurability": 100,
"minDurability": 0,
"onlyFoundInRaid": true,
"parentId": "",
"target": [
"59e36c6f86f774176c10a2a7"
],
"value": 2,
"visibilityConditions": []
}技能要求
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| compareMethod | ">=" | string | Method to compare player skill to required skill (example shows player must have higher than or equal to the example value) |
| conditionType | "Skill" | string | HandoverItem condition |
| dynamicLocale | false | boolean | Currently unused |
| globalQuestCounterId | "" | string | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| parentId | "" | MongoID string | Used to create optional sub-tasks for a task - see "Bad Rep Evidence" in the Vanilla Quests Data -> Useful Links — Leave this as an empty string if not needed. |
| target | "Charisma" | string | Skill name that the condition targets - see Skill Table |
| value | 10 | int | Amount of items in target that are required to be found to complete subtask |
| visibilityConditions | [] | array | see Visibility Conditions for example usage |
例子:
{
"compareMethod": ">=",
"conditionType": "Skill",
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5ae9c29386f77427153c7fb0",
"index": 0,
"parentId": "",
"target": "Charisma",
"value": 10,
"visibilityConditions": []
}将物品留在指定地点
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
这种任务类型与放置信标不同。它们在游戏中的行为也不同。放置信标是永久性的,可以被移除/摧毁,并且会影响玩家的游戏进度。而放置物品后,物品会立即消失。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| conditionType | "LeaveItemAtLocation" | string | LeaveItemAtLocation condition |
| dogtagLevel | 0 | int | Required if finding DogTag of specific level |
| dynamicLocale | false | boolean | Currently unused |
| globalQuestCounterId | "" | string | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| inEncoded | false | boolean | Required if requiring DSP Transmitter handover |
| maxDurability | 100 | int | Required for medical items, weapons, armour, etc |
| minDurability | 0 | int | Required for medical items, weapons, armour, etc |
| onlyFoundInRaid | false | boolean | If item to be placed is required to be FIR or not |
| parentId | "" | MongoID string | Used to create optional sub-tasks for a task - see "Bad Rep Evidence" in the Vanilla Quests Data -> Useful Links — Leave this as an empty string if not needed. |
| plantTime | 30 | int | Time in seconds that it takes the player to “place” the item |
| target | ["54491c4f4bdc2db1078b4568"] | MongoID string array | ItemID that is to be placed, you can have multiple items in the array for multiple choice. If wanting a dogtag to be placed, it will only count the specified IDs - if you want all of them to be acceptable you will need to populate the array for every ID for dogtags. |
| value | 2 | int | Amount of items in target that are required to be found to complete subtask |
| visibilityConditions | [] | array | see Visibility Conditions for example usage |
| zoneId | "ter_017_area_1" | string | This value is required and must match the placeitem zone that you have created (or use a vanilla zone ID). This zone indicates where the item must be placed. For zone creation, you may consider using the mod VCQL by Virtual. |
例子:
{
"conditionType": "LeaveItemAtLocation",
"dogtagLevel": 0,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5a687a1c86f7745f2152168c",
"index": 2,
"isEncoded": false,
"maxDurability": 100,
"minDurability": 0,
"onlyFoundInRaid": false,
"parentId": "",
"plantTime": 30,
"target": [
"590c5a7286f7747884343aea"
],
"value": 3,
"visibilityConditions": [],
"zoneId": "ter_017_area_1"
}放置信标
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
这种任务类型与“放置物品”任务不同。它们在游戏中的行为也不同。“信标”任务是永久性的,可以被移除/摧毁,并且会影响玩家的游戏进度。“放置物品”任务完成后,物品会在放置后立即消失。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| conditionType | "PlaceBeacon" | string | PlaceBeacon condition |
| dynamicLocale | false | boolean | Currently unused |
| globalQuestCounterId | "" | string | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| parentId | "" | MongoID string | Used to create optional sub-tasks for a task - see "Bad Rep Evidence" in the Vanilla Quests Data -> Useful Links — Leave this as an empty string if not needed. |
| plantTime | 30 | int | Time in seconds that it takes the player to “place” the item |
| target | ["5991b51486f77447b112d44f"] | MongoID string array | You should only use the ID for the MS2000 Marker (5991b51486f77447b112d44f) or the Radio Repeater (63a0b2eabea67a6d93009e52). Since the item persists after placing, I believe these two IDs are the only ones currently used for this quest type. |
| value | 1 | int | Amount of beacons that must be placed to complete the task. |
| visibilityConditions | [] | array | see Visibility Conditions for example usage |
| zoneId | "gazel" | string | This value is required and must match the placeitem zone that you have created (or use a vanilla zone ID). This zone indicates where the item must be placed. For zone creation, you may consider using the mod VCQL by Virtual. |
例子:
{
"conditionType": "PlaceBeacon",
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5998366886f77455853b2d9f",
"index": 1,
"parentId": "",
"plantTime": 30,
"target": [
"5991b51486f77447b112d44f"
],
"value": 1,
"visibilityConditions": [],
"zoneId": "gazel"
}参观地点
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
请注意,此类任务结构实际上位于“反制创造者”条件内。
“反制创造者”条件包含各种条件类型,必须用于此类条件类型。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| conditionType | "VisitPlace" | string | VisitPlace condition |
| dynamicLocale | false | boolean | Currently unused |
| globalQuestCounterId | "" | string | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| target | "place_peacemaker_001" | string | This value is required and must match the visit zone that you have created (or use a vanilla zone ID). This zone indicates where the player must visit. For zone creation, you may consider using the mod VCQL by Virtual. |
| value | 1 | int | This is always 1. The actual value of how many times you must complete the “VisitPlace” condition is the value property on the CounterCreator itself, and not the one within the VisitPlace condition. |
例子:
{
"completeInSeconds": 0,
"conditionType": "CounterCreator",
"counter": {
"conditions": [
{
"conditionType": "VisitPlace",
"dynamicLocale": false,
"id": "5a3ba1c286f7742c9d4f5d49",
"target": "place_peacemaker_001",
"value": 1
}
],
"id": "5a3ba11786f7742c9d4f5d28"
},
"doNotResetIfCounterCompleted": false,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5a3ba11786f7742c9d4f5d29",
"index": 1,
"isNecessary": false,
"isResetOnConditionFailed": false,
"oneSessionOnly": false,
"parentId": "",
"type": "Exploration",
"value": 1,
"visibilityConditions": []
}武器组装
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
这类任务条件是最难正确设置的。比较方法很容易出错,或者使用了无效值。
在构建这些任务时,务必反复检查两遍、三遍甚至四遍。一定要测试它们。
| Property Name | Example Value | Type | Child Property Name | Child Example Value | Child Type | Notes |
|---|---|---|---|---|---|---|
| conditionType | "WeaponAssembly" | string | WeaponAssembly condition | |||
| id | "5accd5e386f77463027e9397" | MongoID string | Unique ID for the condition | |||
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) | |||
| dynamicLocale | "" | string | Currently unused | |||
| globalQuestCounterId | "" | string | Currently unused | |||
| containsItems | ["5aa66be6e5b5b0214e506e97"] | MongoID string array | List of ItemIDs in an array that the weapon must have attached | |||
| parentId | "" | MongoID string | Used to create optional sub-tasks for a task - see "Bad Rep Evidence" in the Vanilla Quests Data -> Useful Links — Leave this as an empty string if not needed. | |||
| baseAccuracy | - | object | compareMethod | >= | string | Weapon MOA Requirements |
| value | 0 | int | ||||
| durability | - | object | compareMethod | >= | string | Current durability requirements |
| value | 60 | int | ||||
| effectiveDistance | - | object | compareMethod | >= | string | Sighting Range requirements |
| value | 60 | int | ||||
| emptyTacticalSlot | - | object | compareMethod | >= | string | How many empty tactical slots are required |
| value | 60 | int | ||||
| ergonomics | - | object | compareMethod | >= | string | Ergonomics requirements |
| value | 60 | int | ||||
| hasItemFromCategory | ["55818b164bdc2ddc698b456c"] | MongoID string array | List of Item Category IDs that the weapon must have attached | |||
| height | - | object | compareMethod | <= | string | Number of vertical grid cells the weapon must have in the stash |
| value | 2 | int | ||||
| magazineCapacity | - | object | compareMethod | <= | string | Requirements for size of the attached magazine |
| value | 50 | int | ||||
| muzzleVelocity | - | object | compareMethod | >= | string | Velocity Requirements (Velocity * SpeedFactor) |
| value | 0 | int | ||||
| recoil | - | object | compareMethod | <= | string | Sum of Horizontal & Vertical recoil is the value to compare |
| value | 300 | int | ||||
| target | ["5bfea6e90db834001b7347f3"] | MongoID string array | The ItemID of the weapon to be built | |||
| value | 1 | int | The number of weapons that must be built and handed over that match the requirements (untested over 1) | |||
| visibilityConditions | [] | array | see Visibility Conditions for example usage | |||
| weight | - | object | compareMethod | <= | string | Weapon must match the comparison of the value to be valid |
| value | 4.5 | float | ||||
| width | - | object | compareMethod | <= | string | Number of horizontal grid cells the weapon must have in the stash |
| value | 8 | int |
例子:
{
"baseAccuracy": {
"compareMethod": ">=",
"value": 0
},
"conditionType": "WeaponAssembly",
"containsItems": [],
"durability": {
"compareMethod": ">=",
"value": 60
},
"dynamicLocale": false,
"effectiveDistance": {
"compareMethod": ">=",
"value": 0
},
"emptyTacticalSlot": {
"compareMethod": ">=",
"value": 0
},
"ergonomics": {
"compareMethod": ">=",
"value": 47
},
"globalQuestCounterId": "",
"hasItemFromCategory": [
"55818b164bdc2ddc698b456c"
],
"height": {
"compareMethod": "<=",
"value": 1
},
"id": "5accd5e386f77463027e9397",
"index": 0,
"magazineCapacity": {
"compareMethod": ">=",
"value": 5
},
"muzzleVelocity": {
"compareMethod": ">=",
"value": 0
},
"parentId": "",
"recoil": {
"compareMethod": "<=",
"value": 850
},
"target": [
"54491c4f4bdc2db1078b4568"
],
"value": 1,
"visibilityConditions": [],
"weight": {
"compareMethod": ">=",
"value": 0
},
"width": {
"compareMethod": "<=",
"value": 4
}
}杀戮
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
请注意,此类型的任务结构实际上位于“反制创造者”条件内。
“反制创造者”条件包含各种条件类型,并且必须用于此条件类型。
请参阅“反制创造者” 。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| bodyPart | ["Head"] | string array | If populated, requires specific kill shots to count. See Body Part Values |
| compareMethod | ">=" | string | Compare method, there’s really no reason to use anything other than ">=" |
| conditionType | "Kills" | string | Kills condition |
| daytime | see example below | object | In game hour requirement, not required - if either value is not 0 then it is enforced for the kill to count (typically used for night raids). Leave from & to both at 0 to not have a time requirement |
| distance | see example below | object | Distance requirement, not required - if either value is not 0 then it is enforced for the kill to count (typically used for night raids). Set compareMethod to ">=" & value to 0 to not have a distance requirement. Value is distance in meters. |
| dynamicLocale | false | boolean | Currently unused |
| enemyEquipmentExclusive | [] | boolean | If populated, requires specific equipment to not be worn by enemy when killed (Not Used by BSG, untested) |
| enemyEquipmentInclusive | [] | boolean | If populated, requires specific equipment to be worn by enemy when killed (Not Used by BSG, untested) |
| enemyHealthEffects | [] | boolean | If populated, requires specific health ailments to be active on enemy when killed (Not Used by BSG, untested) |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| resetOnSessionEnd | false | boolean | Whether the condition resets to 0 if not completed by session end (Exfil/death/etc) - In otherwords, the kill condition must be completed in 1 raid or it resets if true |
| savageRole | [] | string array | If specified, then the kill will only count if the player kills that specific bot type. See Bot Type & Name Reference Sheet |
| target | "AnyPmc" | string | Must be "AnyPmc", "Savage", or "Any". See Bot Type & Name Reference Sheet for clarification on what is a Savage or Pmc. Specifying "Any" will count any kill no matter what. |
| value | 1 | int | This is always 1. The actual value of how many kills you must achieve to complete the condition is the value property on the CounterCreator itself, and not the one within the Kills condition. |
| weapon | [] | string array | Array of weapons that must make the killing blow to count towards the condition. Can be empty. |
| weaponCaliber | [] | string array | Unused |
| weaponModsExclusive | [] | string array | Array of weapon attachments - if the killing weapon has any of these attachments then the kill will not count. |
| weaponModsInclusive | [] | string array | Array of weapon attachments - the killing weapon must have these attachments to be counted. |
例子:
{
"completeInSeconds": 0,
"conditionType": "CounterCreator",
"counter": {
"conditions": [
{
"bodyPart": [],
"compareMethod": ">=",
"conditionType": "Kills",
"daytime": {
"from": 22,
"to": 7
},
"distance": {
"compareMethod": ">=",
"value": 20
},
"dynamicLocale": false,
"enemyEquipmentExclusive": [],
"enemyEquipmentInclusive": [],
"enemyHealthEffects": [],
"id": "5edab65ececc0069284c0ec3",
"resetOnSessionEnd": false,
"savageRole": [
"bossSanitar"
],
"target": "Savage",
"value": 1,
"weapon": [],
"weaponCaliber": [],
"weaponModsExclusive": [],
"weaponModsInclusive": []
}
],
"id": "5edab5a6cecc0069284c0ec1"
},
"doNotResetIfCounterCompleted": false,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5edab5a6cecc0069284c0ec2",
"index": 0,
"isNecessary": false,
"isResetOnConditionFailed": false,
"oneSessionOnly": false,
"parentId": "",
"type": "Elimination",
"value": 1,
"visibilityConditions": []
}退出状态
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
请注意,此类任务结构实际上位于“反制创造者”条件内。
“反制创造者”条件包含各种条件类型,必须用于此类条件类型。
在“计数器创建器”中,可以将“撤离状态”条件与“撤离名称”条件结合使用,以要求玩家必须执行特定的撤离操作才能计入统计。请参见示例。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| conditionType | "ExitStatus" | string | ExitStatus condition |
| dynamicLocale | false | boolean | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| status | ["Survived", "Transit", "Runner"] | string array | Depending on what you populate in the array, those are the available exfil statuses that can complete the condition. If you specify the example to the left and the player is killed, the counter remains at 0, because you did not specify “Killed” as a status. If they Transit, they will complete this condition. For valid statuses, see below table. |
| Status Name | Requirements |
|---|---|
| “Survived” | Player earned 200+ XP or spent at least 7 minutes in raid, and successfully exfilled - not transit. |
| “Killed” | Player dies in raid. |
| “Left” | Player left raid. (Does not apply in SPT) |
| “Runner” | Player exfilled before 7 minutes in raid and did not earn at least 200 XP. |
| “MissingInAction” | Player did not exfil or transit prior to raid time expiring. |
| “Transit” | Player activated a transit and moved to another map. |
| 例子: |
{
"completeInSeconds": 0,
"conditionType": "CounterCreator",
"counter": {
"conditions": [
{
"conditionType": "ExitStatus",
"dynamicLocale": false,
"id": "669fb170617a3971bb525b2a",
"status": [
"Survived",
"Transit"
]
},
{
"conditionType": "ExitName",
"dynamicLocale": false,
"exitName": "Gate_o",
"id": "66c0a86de55c52cd17921935"
}
],
"id": "669fb12ec1fbcb64b49837ab"
},
"doNotResetIfCounterCompleted": false,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "669fb12eb01ceef19a5b4ebc",
"index": 0,
"isNecessary": false,
"isResetOnConditionFailed": false,
"oneSessionOnly": false,
"parentId": "",
"type": "Completion",
"value": 1,
"visibilityConditions": []
}出口名称
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
请注意,此类任务结构实际上位于“反制创造者”条件内。
“反制创造者”条件包含各种条件类型,必须用于此类条件类型。
在“计数器创建器”中,可以将“出口名称”条件与“出口状态”条件结合使用,从而要求玩家必须处于特定的撤离状态才能计入统计。请参见示例。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| conditionType | "ExitName" | string | ExitStatus condition |
| dynamicLocale | false | boolean | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| exitName | "EXFIL_Train" | string | Name of the exfil that the player must take to complete the condition. For valid exfil names, see SPT Location Data on the GitHub, and view the allExtracts.json for the location you are interested in requiring players to exfil from. |
| 例子: |
{
"completeInSeconds": 0,
"conditionType": "CounterCreator",
"counter": {
"conditions": [
{
"conditionType": "ExitStatus",
"dynamicLocale": false,
"id": "669fb170617a3971bb525b2a",
"status": [
"Survived",
"Runner",
"Transit"
]
},
{
"conditionType": "ExitName",
"dynamicLocale": false,
"exitName": "Gate_o",
"id": "66c0a86de55c52cd17921935"
}
],
"id": "669fb12ec1fbcb64b49837ab"
},
"doNotResetIfCounterCompleted": false,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "669fb12eb01ceef19a5b4ebc",
"index": 0,
"isNecessary": false,
"isResetOnConditionFailed": false,
"oneSessionOnly": false,
"parentId": "",
"type": "Completion",
"value": 1,
"visibilityConditions": []
}交易者忠诚度
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| compareMethod | ">=" | string | Compare method, no reason to really change this unless you want to require them to be lower loyalty levels, which may cause the player to be unable to complete this |
| conditionType | "TraderLoyalty" | string | TraderLoyalty condition |
| dynamicLocale | false | boolean | Currently unused |
| globalQuestCounterId | "" | string | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| target | "54cb50c76803fa8b248b4571" | MongoID string | Trader ID for the value requirement of the loyalty level. See Trader IDs |
| value | 3 | float | Loyalty Level required for the player to compare against using the compareMethod |
| visibilityConditions | [] | array | see Visibility Conditions for example usage |
例子:
{
"compareMethod": ">=",
"conditionType": "TraderLoyalty",
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5dbadfd186f77449467d1482",
"index": 0,
"parentId": "",
"target": "54cb50c76803fa8b248b4571",
"value": 3,
"visibilityConditions": []
}地点要求
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
请注意,此类任务结构实际上位于“反制条件”内。
“反制条件”包含多种条件类型,必须用于此类条件。
您需要将此条件与其他条件配对,这要求“反制条件”内的其他条件CounterCreator已在指定地图上完成。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| conditionType | "Location" | string | Location condition |
| dynamicLocale | false | boolean | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| target | ["Interchange"] | string array | Use Target Name data for the locations - see Location Information |
例子:
{
"completeInSeconds": 0,
"conditionType": "CounterCreator",
"counter": {
"conditions": [
{
"conditionType": "ExitStatus",
"dynamicLocale": false,
"id": "5a577b4186f7743e797f6f04",
"status": [
"Survived",
"Runner"
]
},
{
"conditionType": "Location",
"dynamicLocale": false,
"id": "5bf5393d86f77458f17c1993",
"target": [
"factory4_day",
"factory4_night"
]
}
],
"id": "5977784486f774285402cf51"
},
"doNotResetIfCounterCompleted": false,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5977784486f774285402cf52",
"index": 2,
"isNecessary": false,
"isResetOnConditionFailed": false,
"oneSessionOnly": false,
"parentId": "",
"type": "Completion",
"value": 1,
"visibilityConditions": [
{
"conditionType": "CompleteCondition",
"id": "5a5779e486f774411f6c321f",
"target": "59674fe586f7744f4e358aa2"
}
]
}计数器创建者
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
条件生成器用于将多个条件组合到任务的单个任务中,或者单独使用,只要是必需的条件即可。强烈建议您事先阅读相关文档,了解您要创建的条件类型。
不要害怕尝试各种计数生成器中的条件,以了解它的工作原理以及如何利用它来创建其他人(包括 BSG!)可能没有想到的独特任务。
下面列举了两种截然不同的此类应用场景。
许多任务条件都嵌套在计数器生成器中。要了解它们在计数器生成器中的具体行为,请阅读相应条件类型的章节。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| completeInSeconds | 0 | int | Currently unused |
| conditionType | "CounterCreator" | string | CounterCreator condition |
| counter | object | See relevant condition documentation | |
| doNotResetIfCounterCompleted | false | boolean | Works in tandem with isResetOnConditionFailed and on its own. If true, and value is less than condition value, can set the condition value to 0. In some scenarios, it will check the isResetOnConditionFailed property first. Largely unused. See the quest "Chemistry Closet" in the Vanilla Quests Data -> Useful Links for usage. |
| dynamicLocale | false | boolean | Currently unused |
| globalQuestCounterId | "" | string | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| isNecessary | false | boolean | Used in tandem with parentId. If true, and parentId used for optional condition, requires it instead of being optional. Largely unused. |
| isResetOnConditionFailed | false | boolean | Used in tandem with doNotResetIfCounterCompleted. If true, and doNotResetIfCounterCompleted is true - Will reset the value of the counter to 0 if any conditions are not met when starting a raid. This has never been used, untested if works properly. |
| oneSessionOnly | false | boolean | Currently unused |
| parentId | "" | MongoID string | Used to create optional sub-tasks for a task - see "Bad Rep Evidence" in the Vanilla Quests Data -> Useful Links — Leave this as an empty string if not needed. |
| type | "Elimination" | string | Type of condition for the counter creator. |
| value | 5 | int | Number of nested condition counts required to count the CounterCreator condition as completed. (Ie, 5 kills, 5 visits, etc) |
| visibilityConditions | [] | array | see Visibility Conditions for example usage |
25 Scav kills on a specific Map example:
{
"completeInSeconds": 0,
"conditionType": "CounterCreator",
"counter": {
"conditions": [
{
"bodyPart": [],
"compareMethod": ">=",
"conditionType": "Kills",
"daytime": {
"from": 0,
"to": 0
},
"distance": {
"compareMethod": ">=",
"value": 0
},
"dynamicLocale": false,
"enemyEquipmentExclusive": [],
"enemyEquipmentInclusive": [],
"enemyHealthEffects": [],
"id": "5ae44ef386f774149f15ed84",
"resetOnSessionEnd": false,
"savageRole": [],
"target": "Savage",
"value": 1,
"weapon": [],
"weaponCaliber": [],
"weaponModsExclusive": [],
"weaponModsInclusive": []
},
{
"conditionType": "Location",
"dynamicLocale": false,
"id": "5ae44efd86f774149d4cc6a4",
"target": [
"Interchange"
]
}
],
"id": "5ae44ecd86f77414a13c970d"
},
"doNotResetIfCounterCompleted": false,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5ae44ecd86f77414a13c970e",
"index": 0,
"isNecessary": false,
"isResetOnConditionFailed": false,
"oneSessionOnly": false,
"parentId": "",
"type": "Elimination",
"value": 25,
"visibilityConditions": []
}Player exfil 7 times from a specific location, with a specific status, from a specific exfil example:
{
"completeInSeconds": 0,
"conditionType": "CounterCreator",
"counter": {
"conditions": [
{
"conditionType": "Location",
"dynamicLocale": false,
"id": "5ae9e46686f77440d37ce046",
"target": [
"Interchange"
]
},
{
"conditionType": "ExitName",
"dynamicLocale": false,
"exitName": "Saferoom Exfil",
"id": "63929163c115f907b14700bb"
},
{
"conditionType": "ExitStatus",
"dynamicLocale": false,
"id": "5bb60cc688a4507f2f385a76",
"status": [
"Survived"
]
}
],
"id": "5ae9e44f86f7746b6a466a8d"
},
"doNotResetIfCounterCompleted": false,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "5bb60cbc88a45011a8235cc5",
"index": 0,
"isNecessary": false,
"isResetOnConditionFailed": false,
"oneSessionOnly": false,
"parentId": "",
"type": "Completion",
"value": 7,
"visibilityConditions": []
}可立即开始的要求
所有起始条件都可以组合成多个不同的要求。
你可以发挥创意,甚至可以强制玩家达到特定等级,同时完成特定任务才能解锁新任务。
我通常建议只使用 2-3 个条件。
你可以设置多个任务要求,一个值得参考的任务是
"Collector"Vanilla Quests Data -> Useful Links - 这是 Tarkov 中迄今为止拥有最多独立任务要求的 Vanilla 任务。
玩家必须满足所有条件才能接受任务。
起始等级要求
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| compareMethod | ">=" | string | Compare method, no reason to really change this unless you want to require the player to be a lower level than dictated to receive the quest, which may cause the player to be unable to ever see this quest depending on other requirements |
| conditionType | "Level" | string | Level condition |
| dynamicLocale | false | boolean | Currently unused |
| globalQuestCounterId | "" | string | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| parentId | "" | string | Currently unused for Quest Start requirements |
| value | 10 | float | Player Side Level required for the player to compare against using the compareMethod |
| visibilityConditions | [] | array | see Visibility Conditions for example usage. This is unused for Start Requirements, I would not advise using it. |
例子:
{
"availableAfter": 0,
"conditionType": "Quest",
"dispersion": 0,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "66796ea13b61733d65fc59a6",
"index": 0,
"parentId": "",
"status": [
2,
5,
4
],
"target": "657315ddab5a49b71f098853",
"visibilityConditions": []
}任务开始要求
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| availableAfter | 0 | int | Minutes that must have passed since completing the quest target for this quest to become available. |
| conditionType | "Quest" | string | Quest condition |
| dispersion | 0 | int | Currently unused |
| dynamicLocale | false | boolean | Currently unused |
| globalQuestCounterId | "" | string | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| parentId | "" | string | Currently unused for Quest Start requirements |
| status | [4, 5] | int array | Possible quest statuses for the target quest within the players profile. The target quest must be one of these statuses to become available. See Quest Status for possible values. |
| target | "657315ddab5a49b71f098853" | MongoID string | Quest ID of the quest that is checked for the status conditions to control availability of the quest you are building this requirement for. |
| visibilityConditions | [] | array | see Visibility Conditions for example usage. This is unused for Start Requirements, I would not advise using it. |
例子:
{
"availableAfter": 0,
"conditionType": "Quest",
"dispersion": 0,
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "66796ea13b61733d65fc59a6",
"index": 0,
"parentId": "",
"status": [
2,
5,
4
],
"target": "657315ddab5a49b71f098853",
"visibilityConditions": []
}交易员资格要求
与任务中的所有属性一样,无论是否需要,都应该使用所有可用的属性。BSG
任务会使用所有属性,无论它们是否与要交付的物品相关。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| compareMethod | ">=" | string | Compare method, no reason to really change this unless you want to require the player to be a lower loyalty level than dictated to receive the quest, which may cause the player to be unable to ever see this quest depending on other requirements |
| conditionType | "TraderStanding" | string | TraderStanding condition |
| dynamicLocale | false | boolean | Currently unused |
| globalQuestCounterId | "" | string | Currently unused |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the condition |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| parentId | "" | string | Currently unused for Quest Start requirements |
| target | "579dc571d53a0658a154fbec" | MongoID string | Trader ID for the value requirement of the loyalty level. See Trader IDs |
| value | 3 | float | Loyalty Level required for the player to compare against using the compareMethod |
| visibilityConditions | [] | array | see Visibility Conditions for example usage. This is unused for Start Requirements, I would not advise using it. |
Example:
{
"compareMethod": ">=",
"conditionType": "TraderStanding",
"dynamicLocale": false,
"globalQuestCounterId": "",
"id": "6672daa3a5f158174abeaab2",
"index": 0,
"parentId": "",
"target": "579dc571d53a0658a154fbec",
"value": 4,
"visibilityConditions": []
}失败条件
失败条件可能非常复杂,而且很容易被破坏。强烈建议您在添加可能导致任务失败的条件时,务必进行测试。您可以使用 USEC 开发账号来测试任务失败条件,因为在创建该账号时,所有任务都会自动启动并接受,无需设置任何AvailableForStart条件。
如果你添加了失败条件,并且希望玩家能够重新开始任务,请确保在任务属性中启用此功能
restartable。true如果你没有这样做,导致玩家任务失败,则任务将永久失败。
AvailableForStart失败条件的工作方式与条件完全相同AvailableForFinish。请参阅相关文档了解如何创建失败条件。唯一的区别在于,失败条件应放在Fail数组中,而不是数组AvailableForStart中AvailableForFinish。
使用原版任务是构建失败条件的绝佳方法。参见原版任务数据 ->实用链接
Rewards
Experience
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| availableInGameEditions | [] | string array | If you would like the rewards for a quest to be restricted to specific game editions, you add those editions to this array |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the reward |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| type | "Experience" | string | Experience reward |
| unknown | false | boolean | Whether or not the reward will be shown, or if it will display a ? on the trader task page. |
| value | 85000 | int | Amount of experience to grant to the player upon quest completion |
Example:
{
"availableInGameEditions": [],
"id": "60c8c2d02238043a5267864d",
"index": 0,
"type": "Experience",
"unknown": false,
"value": 7500
}物品
我强烈建议你先了解一下原版游戏任务的物品奖励机制。刚开始玩的时候,这些机制可能会比较复杂。
本节提供了多个关于物品奖励的示例。请注意数组
StackObjectsCount内部的items内容与奖励对象上的属性之间的value区别。这一点很容易出错。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| availableInGameEditions | [] | string array | If you would like the rewards for a quest to be restricted to specific game editions, you add those editions to this array |
| findInRaid | false | boolean | Whether the item being rewarded is marked as FIR or not |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the reward |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| items | object array | See examples | |
| target | "67d82e6f4f4b5340e611a4cb" | MongoID string | The target is the _id of the item you are rewarding. This target ID is targetted to a different _id depending on if it’s a single item reward, multi item reward, or a weapon/armour reward (item that has children). See the examples. |
| type | "Item" | string | Will always be "Item" for an Item reward |
| unknown | false | boolean | Whether or not the reward will be shown, or if it will display a ? on the trader task page. |
| value | 1 | int | The value here is dependent on how many items you are rewarding, or what type of item you are rewarding. Stackable single item rewards will match the StackObjectsCount of the item in the items array. Multiple of the same item will be the sum of the StackObjectsCount inside the items array, but the items array must only contain the same _tpl item to be valid. Rewarding a weapon/armour/etc, this value will always be 1 since they cannot stack. |
Rouble reward (single item reward) example:
{
"availableInGameEditions": [],
"findInRaid": false,
"id": "60cb694077dc197c77424fcd",
"index": 0,
"items": [
{
"_id": "67d82e6f4f4b5340e611a4cb",
"_tpl": "5449016a4bdc2d6f028b456f",
"upd": {
"StackObjectsCount": 75000
}
}
],
"target": "67d82e6f4f4b5340e611a4cb",
"type": "Item",
"unknown": false,
"value": 75000
}Single item reward example:
{
"availableInGameEditions": [],
"findInRaid": true,
"id": "60cb69576a2a1958fc522d04",
"index": 0,
"items": [
{
"_id": "67d82e6f4f4b5340e611a4cd",
"_tpl": "5d02778e86f774203e7dedbe",
"upd": {
"SpawnedInSession": true,
"StackObjectsCount": 1
}
}
],
"target": "67d82e6f4f4b5340e611a4cd",
"type": "Item",
"unknown": false,
"value": 1
}Multiple item reward example:
{
"availableInGameEditions": [],
"findInRaid": true,
"id": "5ac6643e86f774055a77c730",
"index": 0,
"items": [
{
"_id": "67d82e6f4f4b5340e611a646",
"_tpl": "5673de654bdc2d180f8b456d",
"upd": {
"SpawnedInSession": true,
"StackObjectsCount": 1
}
},
{
"_id": "67d82e6f4f4b5340e611a647",
"_tpl": "5673de654bdc2d180f8b456d",
"upd": {
"SpawnedInSession": true,
"StackObjectsCount": 1
}
},
{
"_id": "67d82e6f4f4b5340e611a648",
"_tpl": "5673de654bdc2d180f8b456d",
"upd": {
"SpawnedInSession": true,
"StackObjectsCount": 1
}
},
{
"_id": "67d82e6f4f4b5340e611a649",
"_tpl": "5673de654bdc2d180f8b456d",
"upd": {
"SpawnedInSession": true,
"StackObjectsCount": 1
}
}
],
"target": "67d82e6f4f4b5340e611a649",
"type": "Item",
"unknown": false,
"value": 4
}Weapon reward example:
{
"availableInGameEditions": [],
"findInRaid": true,
"id": "60d062e01bdece56c249cc0b",
"index": 0,
"items": [
{
"_id": "67d82e6e4f4b5340e611a3d5",
"_tpl": "59f9cabd86f7743a10721f46",
"upd": {
"StackObjectsCount": 1
}
},
{
"_id": "67d82e6e4f4b5340e611a3d6",
"_tpl": "5998517986f7746017232f7e",
"parentId": "67d82e6e4f4b5340e611a3d5",
"slotId": "mod_pistol_grip"
},
{
"_id": "67d82e6e4f4b5340e611a3d7",
"_tpl": "599851db86f77467372f0a18",
"parentId": "67d82e6e4f4b5340e611a3d5",
"slotId": "mod_stock"
},
{
"_id": "67d82e6e4f4b5340e611a3d8",
"_tpl": "5998529a86f774647f44f421",
"parentId": "67d82e6e4f4b5340e611a3d5",
"slotId": "mod_magazine"
},
{
"_id": "67d82e6e4f4b5340e611a3d9",
"_tpl": "5998598e86f7740b3f498a86",
"parentId": "67d82e6e4f4b5340e611a3d5",
"slotId": "mod_muzzle"
},
{
"_id": "67d82e6e4f4b5340e611a3da",
"_tpl": "59985a8086f77414ec448d1a",
"parentId": "67d82e6e4f4b5340e611a3d5",
"slotId": "mod_reciever"
},
{
"_id": "67d82e6e4f4b5340e611a3db",
"_tpl": "599860e986f7743bb57573a6",
"parentId": "67d82e6e4f4b5340e611a3d5",
"slotId": "mod_sight_rear"
},
{
"_id": "67d82e6e4f4b5340e611a3dc",
"_tpl": "59ccd11386f77428f24a488f",
"parentId": "67d82e6e4f4b5340e611a3d5",
"slotId": "mod_gas_block"
},
{
"_id": "67d82e6e4f4b5340e611a3dd",
"_tpl": "5648b1504bdc2d9d488b4584",
"parentId": "67d82e6e4f4b5340e611a3dc",
"slotId": "mod_handguard"
}
],
"target": "67d82e6e4f4b5340e611a3d5",
"type": "Item",
"unknown": false,
"value": 1
}解锁商品种类
我强烈建议您了解一下自定义商人物品解锁的结构。
对于新手来说,这可能会比较复杂。
如果您要修改原版商人,您还需要调整商人的商品种类,使其包含您需要的物品,并且需要调整商人的questassort.json任务 ID,使其与商品种类 ID 相匹配。这些步骤在解锁自定义商人时同样适用。
本节提供了多个物品解锁示例。3.11 版本中,解锁机制略有变化,目标物品不再需要与物品种类完全匹配。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| availableInGameEditions | [] | string array | If you would like the rewards for a quest to be restricted to specific game editions, you add those editions to this array |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the reward |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| items | object array | See examples. This array should only have 1 entry unless you are adding an item that has children (weapon, armour, etc). | |
| loyaltyLevel | 1 | int | Loyalty Level for the Unlock. Must match the Quest Assort Loyalty Level for the trader. |
| target | "67d82e6f4f4b5340e611a4cb" | MongoID string | The target is the _id of the item you are rewarding as an unlock. The _tpl of that target is the item that is actually going to be unlocked, only if that _tpl has an entry in the assort and the quest ID for this condition is in the questassort.json for the traderId being targetted…and that questassort entry for the questID is targetted to the id of the assort entry for the _tpl. You can see how this is confusing, use custom traders or vanilla traders as a reference. |
| traderId | "58330581ace78e27b8b10cee" | MongoID string | Trader ID for the assortment unlock. See Trader IDs |
| type | "AssortmentUnlock" | string | Will always be "Item" for an Item reward |
| unknown | false | boolean | Whether or not the reward will be shown, or if it will display a ? on the trader task page. |
武器组合解锁示例(将解锁此特定武器及其组合中的这些特定配件):
{
"availableInGameEditions": [],
"id": "63a1a03b4ebcff1c995dc341",
"index": 0,
"items": [
{
"_id": "67d82e6e4f4b5340e611a312",
"_tpl": "5a7828548dc32e5a9c28b516"
},
{
"_id": "67d82e6e4f4b5340e611a313",
"_tpl": "5a787f7ac5856700177af660",
"parentId": "67d82e6e4f4b5340e611a312",
"slotId": "mod_barrel"
},
{
"_id": "67d82e6e4f4b5340e611a314",
"_tpl": "5a788089c5856700142fdd9c",
"parentId": "67d82e6e4f4b5340e611a312",
"slotId": "mod_handguard"
},
{
"_id": "67d82e6e4f4b5340e611a315",
"_tpl": "5a7882dcc5856700177af662",
"parentId": "67d82e6e4f4b5340e611a312",
"slotId": "mod_magazine"
},
{
"_id": "67d82e6e4f4b5340e611a316",
"_tpl": "5a7880d0c5856700142fdd9d",
"parentId": "67d82e6e4f4b5340e611a312",
"slotId": "mod_stock"
}
],
"loyaltyLevel": 1,
"target": "67d82e6e4f4b5340e611a312",
"traderId": "58330581ace78e27b8b10cee",
"type": "AssortmentUnlock",
"unknown": false
}单件物品解锁示例:
{
"availableInGameEditions": [],
"id": "5ac667f686f77403df401d1d",
"index": 0,
"items": [
{
"_id": "67d82e6f4f4b5340e611a5ec",
"_tpl": "584984812459776a704a82a6"
}
],
"loyaltyLevel": 1,
"target": "67d82e6f4f4b5340e611a5ec",
"traderId": "58330581ace78e27b8b10cee",
"type": "AssortmentUnlock",
"unknown": false
}交易员立场
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| availableInGameEditions | [] | string array | If you would like the rewards for a quest to be restricted to specific game editions, you add those editions to this array |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the reward |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| target | "5a7c2eca46aef81a7ca2145d" | MongoID string | Trader ID that the condition targets - see Trader IDs |
| type | "TraderStanding" | string | Will always be "TraderStanding" for an TraderStanding reward |
| unknown | false | boolean | Whether or not the reward will be shown, or if it will display a ? on the trader task page. |
| value | 0.45 | float | How many loyalty points to award to the player for the targetted Trader |
例子:
{
"availableInGameEditions": [],
"id": "60cc7aff179f8541b8469273",
"index": 0,
"target": "5a7c2eca46aef81a7ca2145d",
"type": "TraderStanding",
"unknown": false,
"value": 0.02
}技能
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| availableInGameEditions | [] | string array | If you would like the rewards for a quest to be restricted to specific game editions, you add those editions to this array |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the reward |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| target | "Attention" | string | Skill name that the condition targets - see Skill Table |
| type | "Skill" | string | Will always be "Skill" for a Skill reward |
| unknown | false | boolean | Whether or not the reward will be shown, or if it will display a ? on the trader task page. |
| value | 100 | int | How many points to award to the target skill |
储藏行
玩家只有在重启 EFT 客户端或完成突袭撤离后,才能在仓库栏中看到奖励。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| availableInGameEditions | [] | string array | If you would like the rewards for a quest to be restricted to specific game editions, you add those editions to this array |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the reward |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| type | "StashRows" | string | Will always be "StashRows" for a StashRows reward |
| unknown | false | boolean | Whether or not the reward will be shown, or if it will display a ? on the trader task page. |
| value | 2 | int | How many rows to award to the player’s stash |
例子:
{
"availableInGameEditions": [],
"id": "668858720221bbe5f306b4e7",
"index": 0,
"type": "StashRows",
"unknown": false,
"value": "2"
}### 成就
成就奖励需要自定义代码来导入成就数据和图标,以便正确地授予玩家,除非您奖励的是已有的成就。
建议参考服务器数据库模板中的服务器
achievements.json文件,以了解成就的实际结构。本参考表不会详细介绍如何正确地向服务器添加成就。
| Property Name | Example Value | Type | Notes |
|---|---|---|---|
| availableInGameEditions | [] | string array | If you would like the rewards for a quest to be restricted to specific game editions, you add those editions to this array |
| id | "5a3fbdb086f7745a554f0c31" | MongoID string | Unique ID for the reward |
| index | 0 | int | Currently unused (suspected added via BSG Tooling to build quests) |
| target | "664f1f8768508d74604bf556" | MongoID string | Unique AchievementID, this is the achievement that will be rewarded |
| type | "Achievement" | string | Will always be "Achievement" for an Achievement reward |
| unknown | false | boolean | Whether or not the reward will be shown, or if it will display a ? on the trader task page |
例子:
{
"availableInGameEditions": [],
"id": "664f249468508d74604bf55f",
"index": 0,
"target": "664f1f8768508d74604bf556",
"type": "Achievement",
"unknown": false
}贡献者
<NolebaseGitContributors />
文件历史
<NolebaseGitChangelog />