EFT Domain Knowledge Skill
Game Context
Escape from Tarkov (EFT) is a hardcore tactical FPS with RPG elements. Players complete quests from traders to unlock gear, gain reputation, and progress toward the Kappa container (ultimate goal).
EFT-Tracker helps players track quest progress and visualize quest dependencies.
Quest System
Quest Status
type QuestStatus = "locked" | "available" | "completed";
-
locked - Prerequisites not met (level or quest requirements)
-
available - Can be started (all prerequisites met)
-
completed - Already finished
Quest Types
type QuestType = | "standard" // Regular trader quests | "pvp_zone" // PVP Zone quests (Arena) | "reputation" // Fence reputation repair | "lightkeeper" // Lightkeeper questline | "faction_bear" // BEAR-only quests | "faction_usec" // USEC-only quests | "story" // Main story quests (1.0) | "prestige"; // Prestige quests (require The Collector)
Quest Dependencies
Quests can have prerequisites with different status requirements:
type RequirementStatusType = "complete" | "active" | "failed";
// Quest A requires Quest B to be completed { requiredQuest: questB, requirementStatus: ["complete"] }
// Quest A requires Quest B to be active OR completed { requiredQuest: questB, requirementStatus: ["active", "complete"] }
Traders
Trader Specialty Color
Prapor Weapons, ammo Red
Therapist Medical, food Purple
Fence Scav items, reputation Gray
Skier Western weapons Blue
Peacekeeper NATO weapons, USD Light Blue
Mechanic Weapon mods Yellow
Ragman Armor, clothing Orange
Jaeger Survival, hunting Green
Lightkeeper Special endgame Cyan
BTR Driver Convoy quests Olive
Ref Arena quests Pink
Kappa Container
The Kappa Secure Container is the ultimate progression goal:
-
Requires completing all "Kappa required" quests
-
Quest: "The Collector" unlocks Kappa
-
kappaRequired: boolean flag on quests indicates if needed for Kappa
Kappa Progress Tracking
// Filter for Kappa-required quests only const kappaQuests = quests.filter((q) => q.kappaRequired);
// Calculate Kappa progress const completed = kappaQuests.filter((q) => q.computedStatus === "completed"); const progress = (completed.length / kappaQuests.length) * 100;
Data Structures
Quest Interface
interface Quest { id: string; title: string; wikiLink: string | null; levelRequired: number; kappaRequired: boolean; questType: QuestType; factionName: string | null; // "BEAR" | "USEC" | null traderId: string; trader: Trader; objectives: Objective[]; dependsOn: QuestDependency[]; dependedOnBy: QuestDependent[]; }
Quest with Progress
interface QuestWithProgress extends Quest { progress: QuestProgress | null; computedStatus: QuestStatus; // Calculated based on dependencies }
tarkov.dev API
The app syncs quest data from tarkov.dev GraphQL API.
Key Endpoints
query { tasks { id name wikiLink minPlayerLevel kappaRequired taskRequirements { task { id } status } trader { id name } } }
Data Sync
Quest data is periodically synced and stored in the database. The sync process:
-
Fetches all tasks from tarkov.dev
-
Maps API structure to internal Quest model
-
Updates database with new/changed quests
-
Preserves user progress associations
Quest Tree Visualization
The quest tree uses ReactFlow to visualize dependencies:
-
Nodes = Quests (colored by status)
-
Edges = Dependencies (arrows show requirement direction)
-
Layout = Hierarchical (dagre algorithm)
Node Colors
const statusColors = { locked: "gray", available: "cyan", completed: "green", };
Focus Mode
Double-click a quest to enter Focus Mode:
-
Shows only the selected quest and its dependency chain
-
Filters out unrelated quests
-
ESC exits focus mode
Common Operations
Mark Quest Complete
await updateQuestProgress({ questId: quest.id, status: "completed", completedAt: new Date(), });
Get Next Available Quests
const nextQuests = quests.filter( (q) => q.computedStatus === "available" && q.levelRequired <= playerLevel );
Calculate Dependency Chain
function getDependencyChain(quest: Quest): Quest[] { const chain: Quest[] = [quest]; for (const dep of quest.dependsOn) { chain.push(...getDependencyChain(dep.requiredQuest)); } return chain; }
Wipe Cycles
EFT has periodic wipes that reset all player progress. The tracker supports:
-
Resetting all quest progress for new wipe
-
Preserving historical progress (optional)
-
Quick-start options for returning players
Terminology Reference
Term Meaning
PMC Private Military Contractor (main character)
SCAV Scavenger (alternate play mode)
Wipe Server reset of all progress
Kappa Best secure container (5x3 slots)
Hideout Player base for crafting
Labs High-tier locked map
FIR Found In Raid (item status)
Fence rep Scav karma system
Files Reference
File Purpose
packages/types/src/quest.ts
Quest type definitions
packages/types/src/api.ts
API response types
apps/web/src/app/api/quests/
Quest API routes
apps/web/src/components/quest-tree/
ReactFlow visualization