eft-domain

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

EFT Domain Knowledge Skill

EFT领域知识技能

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.
《逃离塔科夫》(Escape from Tarkov,简称EFT)是一款带有RPG元素的硬核战术FPS游戏。玩家通过完成商人的任务解锁装备、提升声望,并朝着Kappa容器(终极目标)推进进度。
EFT-Tracker帮助玩家追踪任务进度并可视化任务依赖关系。

Quest System

任务系统

Quest Status

任务状态

typescript
type QuestStatus = "locked" | "available" | "completed";
  • locked - Prerequisites not met (level or quest requirements)
  • available - Can be started (all prerequisites met)
  • completed - Already finished
typescript
type QuestStatus = "locked" | "available" | "completed";
  • locked - 未满足前置条件(等级或任务要求)
  • available - 可接取(所有前置条件已满足)
  • completed - 已完成

Quest Types

任务类型

typescript
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)
typescript
type QuestType =
  | "standard" // 常规商人任务
  | "pvp_zone" // PVP区域任务(竞技场)
  | "reputation" - 跳蚤市场(Fence)声望修复任务
  | "lightkeeper" // Lightkeeper任务线
  | "faction_bear" // 仅限BEAR阵营的任务
  | "faction_usec" // 仅限USEC阵营的任务
  | "story" // 主线剧情任务(1.0版本)
  | "prestige"; // 威望任务(需要完成《收藏家》任务)

Quest Dependencies

任务依赖

Quests can have prerequisites with different status requirements:
typescript
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"] }
任务可能带有不同状态要求的前置条件:
typescript
type RequirementStatusType = "complete" | "active" | "failed";

// 任务A需要任务B已完成
{ requiredQuest: questB, requirementStatus: ["complete"] }

// 任务A需要任务B处于激活或已完成状态
{ requiredQuest: questB, requirementStatus: ["active", "complete"] }

Traders

商人

TraderSpecialtyColor
PraporWeapons, ammoRed
TherapistMedical, foodPurple
FenceScav items, reputationGray
SkierWestern weaponsBlue
PeacekeeperNATO weapons, USDLight Blue
MechanicWeapon modsYellow
RagmanArmor, clothingOrange
JaegerSurvival, huntingGreen
LightkeeperSpecial endgameCyan
BTR DriverConvoy questsOlive
RefArena questsPink
商人主营品类颜色
Prapor武器、弹药红色
Therapist医疗用品、食物紫色
FenceScav物品、声望灰色
Skier西方武器蓝色
Peacekeeper北约武器、美元浅蓝色
Mechanic武器改装件黄色
Ragman护甲、服装橙色
Jaeger生存、狩猎用品绿色
Lightkeeper特殊终局内容青色
BTR Driver车队任务橄榄绿
Ref竞技场任务粉色

Kappa Container

Kappa安全容器

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安全容器是终极进度目标:
  • 需要完成所有“Kappa必备”任务
  • 完成《收藏家》任务可解锁Kappa
  • 任务中的
    kappaRequired: boolean
    标记表示是否为解锁Kappa的必备任务

Kappa Progress Tracking

Kappa进度追踪

typescript
// 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;
typescript
// 仅筛选Kappa必备任务
const kappaQuests = quests.filter((q) => q.kappaRequired);

// 计算Kappa进度
const completed = kappaQuests.filter((q) => q.computedStatus === "completed");
const progress = (completed.length / kappaQuests.length) * 100;

Data Structures

数据结构

Quest Interface

任务接口

typescript
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[];
}
typescript
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

带进度的任务

typescript
interface QuestWithProgress extends Quest {
  progress: QuestProgress | null;
  computedStatus: QuestStatus; // Calculated based on dependencies
}
typescript
interface QuestWithProgress extends Quest {
  progress: QuestProgress | null;
  computedStatus: QuestStatus; // 根据依赖关系计算得出
}

tarkov.dev API

tarkov.dev API

The app syncs quest data from tarkov.dev GraphQL API.
应用从tarkov.dev的GraphQL API同步任务数据。

Key Endpoints

核心端点

graphql
query {
  tasks {
    id
    name
    wikiLink
    minPlayerLevel
    kappaRequired
    taskRequirements {
      task {
        id
      }
      status
    }
    trader {
      id
      name
    }
  }
}
graphql
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:
  1. Fetches all tasks from tarkov.dev
  2. Maps API structure to internal Quest model
  3. Updates database with new/changed quests
  4. Preserves user progress associations
任务数据会定期同步并存储在数据库中。同步流程:
  1. 从tarkov.dev获取所有任务数据
  2. 将API结构映射到内部Quest模型
  3. 用新增/修改的任务更新数据库
  4. 保留用户进度关联

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)
任务树使用ReactFlow可视化依赖关系:
  • 节点 = 任务(按状态着色)
  • 连线 = 依赖关系(箭头指示要求方向)
  • 布局 = 层级结构(dagre算法)

Node Colors

节点颜色

typescript
const statusColors = {
  locked: "gray",
  available: "cyan",
  completed: "green",
};
typescript
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
双击任务进入聚焦模式
  • 仅显示选中任务及其依赖链
  • 过滤无关任务
  • 按ESC退出聚焦模式

Common Operations

常见操作

Mark Quest Complete

标记任务完成

typescript
await updateQuestProgress({
  questId: quest.id,
  status: "completed",
  completedAt: new Date(),
});
typescript
await updateQuestProgress({
  questId: quest.id,
  status: "completed",
  completedAt: new Date(),
});

Get Next Available Quests

获取可接取的下一批任务

typescript
const nextQuests = quests.filter(
  (q) => q.computedStatus === "available" && q.levelRequired <= playerLevel
);
typescript
const nextQuests = quests.filter(
  (q) => q.computedStatus === "available" && q.levelRequired <= playerLevel
);

Calculate Dependency Chain

计算依赖链

typescript
function getDependencyChain(quest: Quest): Quest[] {
  const chain: Quest[] = [quest];
  for (const dep of quest.dependsOn) {
    chain.push(...getDependencyChain(dep.requiredQuest));
  }
  return chain;
}
typescript
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
EFT会定期进行服务器重置(wipe),重置所有玩家进度。追踪器支持:
  • 为新的重置周期重置所有任务进度
  • 保留历史进度(可选)
  • 为回归玩家提供快速启动选项

Terminology Reference

术语参考

TermMeaning
PMCPrivate Military Contractor (main character)
SCAVScavenger (alternate play mode)
WipeServer reset of all progress
KappaBest secure container (5x3 slots)
HideoutPlayer base for crafting
LabsHigh-tier locked map
FIRFound In Raid (item status)
Fence repScav karma system
术语含义
PMC私人军事承包商(主角色)
SCAV拾荒者(替代游玩模式)
Wipe服务器重置所有进度
Kappa最佳安全容器(5x3格)
Hideout玩家基地,用于制作
Labs高等级锁定地图
FIRRaid内获取(物品状态)
Fence repScav karma系统(跳蚤市场声望)

Files Reference

文件参考

FilePurpose
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
文件用途
packages/types/src/quest.ts
任务类型定义
packages/types/src/api.ts
API响应类型
apps/web/src/app/api/quests/
任务API路由
apps/web/src/components/quest-tree/
ReactFlow可视化组件