Skip to content
RF DataData reference
RU

Quests

Client: Quest.edf and texts

Total 71 Known 1 Derived 63 Unused 7

Used parameters

Fields read by the server or the client, or assembled from other files. The description says what the field means and how it acts; below it — where that was established.

DataTable\<language>\NDQuest.edf client file

Total 6 Known 0 Derived 4 Unused 2
Schema
RF IDE\strs\client\NDQuest.strs
Registry level
derived
Derived from
quest texts and QuestItem names
Digest
quests.md §11.1; STRS does not support dynamic strings (client-codecs.md §2.4)

Record: Quest trophies (QuestItems)

OffsetFieldWhat it is and how it actsAssembled fromServer readersRoleStatusData
+0x000Name
QuestItem name, cstr[32]
quests.md §11.1
entity text—clientderived—

Record: Indexes (something)

OffsetFieldWhat it is and how it actsAssembled fromServer readersRoleStatusData
+0x000nIdx
text number
quests.md §11.1
——clientderived—
+0x008Title Size
text length, including NUL
quests.md §11.1
——clientderived—

Record: Text (qTitle)

OffsetFieldWhat it is and how it actsAssembled fromServer readersRoleStatusData
+0x000(unnamed)
texts in sequence (RU — cp1251, EN — cp1252); the text number in the quest record is the index row number
quests.md §11.1
quest texts—clientderived—

DataTable\Quest.edf client file

Total 65 Known 1 Derived 59 Unused 5
Schema
RF IDE\strs\client\Quest.edf.strs
Registry level
derived
Derived from
Quest.dat, HolyStoneKeepperQuest.dat, Quest*Event.dat
Digest
12 sections (quests.md §9.1)
Corrections to the digest
  • quests.md: §9.2: rewards (+0x88) — 6 × {u8 group, u32 code, u8 quantity}; i32 in STRS
  • quests.md: §9.2: +0x16C — NPC portrait (i8), i32 “StoreTrade” in STRS
  • quests.md: §9.2: +0x0C (bSelMannually in STRS) is not read by the client

Record: QuestDummyEvent, QuestNPCEvent, QuestKillOtherRaceEvt, QuestLevelUPEvt, QuestPromoteEvent, QuestGradeEvent, QuestGainItemEvent (QuestHappenEvent)

OffsetFieldWhat it is and how it actsAssembled fromServer readersRoleStatusData
+0x000Index
row number
quests.md §9.3
QuestEvent.m_dwIndex—clientderived163 values; most often 0 (2%)
+0x004strCode
code (non-NPC conditions — hex prefix, NPC — hex)
quests.md §9.3, §9.4
QuestEvent.m_strCode—clientderived146 values; most often 11 (12%)
+0x009(skip)
padding, constant 0
quests.md §9.3
——clientderivedalways 000000
+0x00CisUsed ×3
3 × {isUsed (kept by the client itself), QuestType, 5 conditions {type, subtype, u16, value, group}, 5 × {u32, quest code}}; the client needs only NPC events to give quests
quests.md §9.3, §9.4
QuestEvent (race blocks)—clientderived7 values; most often 0 / 0 / 0 (54%)
+0x010QuestType ×3
3 × {isUsed (kept by the client itself), QuestType, 5 conditions {type, subtype, u16, value, group}, 5 × {u32, quest code}}; the client needs only NPC events to give quests
quests.md §9.3, §9.4
QuestEvent (race blocks)—clientderived6 values; most often 0 / 0 / 0 (72%)
+0x014CondType ×15
3 × {isUsed (kept by the client itself), QuestType, 5 conditions {type, subtype, u16, value, group}, 5 × {u32, quest code}}; the client needs only NPC events to give quests
quests.md §9.3, §9.4
QuestEvent (race blocks)—clientderived148 values; most often 10 / 0 / 0 / 0 … (22%)
+0x015CondSubtype ×15
3 × {isUsed (kept by the client itself), QuestType, 5 conditions {type, subtype, u16, value, group}, 5 × {u32, quest code}}; the client needs only NPC events to give quests
quests.md §9.3, §9.4
QuestEvent (race blocks)—clientderived41 values; most often 15 / 0 / 0 / 0 … (22%)
+0x016?? ×15
3 × {isUsed (kept by the client itself), QuestType, 5 conditions {type, subtype, u16, value, group}, 5 × {u32, quest code}}; the client needs only NPC events to give quests
quests.md §9.3, §9.4
QuestEvent (race blocks)—clientderived9 values; most often 0 / 0 / 0 / 0 … (31%)
+0x018CondVal ×15
3 × {isUsed (kept by the client itself), QuestType, 5 conditions {type, subtype, u16, value, group}, 5 × {u32, quest code}}; the client needs only NPC events to give quests
quests.md §9.3, §9.4
QuestEvent (race blocks)—clientderived269 values; most often 0 / 4294967295 / 0 / 0 … (22%)
+0x01CBlock ×15
3 × {isUsed (kept by the client itself), QuestType, 5 conditions {type, subtype, u16, value, group}, 5 × {u32, quest code}}; the client needs only NPC events to give quests
quests.md §9.3, §9.4
QuestEvent (race blocks)—clientderived5 values; most often 0 / 0 / 0 / 0 … (87%)
+0x050strLinkQuest ×30
3 × {isUsed (kept by the client itself), QuestType, 5 conditions {type, subtype, u16, value, group}, 5 × {u32, quest code}}; the client needs only NPC events to give quests
quests.md §9.3, §9.4
QuestEvent (race blocks)—clientderived263 values; most often 4294967295 / 4294967295 / 4294967295 / 4294967295 … (24%)

Record: Quest

OffsetFieldWhat it is and how it actsAssembled fromServer readersRoleStatusData
+0x000N
N — client index; for HSK 0xF0000000 | index
quests.md §9.2
Quest.m_dwIndex—clientderived2610 values; most often 0 (0%)
+0x004Code
packed code: (letter − A) << 24 + 6 hex characters
quests.md §9.2, §9.4
Quest.m_strCode—clientderived2610 values; most often 268894208 (0%)
+0x008QuestType
quest type
quests.md §9.2
Quest.m_nQuestType—clientderived2 values; most often 0 (82%)
+0x009DifficultyLv
quest level
quests.md §9.2
Quest.m_nDifficultyLevel—clientderived56 values; most often 1 (10%)
+0x00ARace
race (0xFF — shared)
quests.md §9.2
Quest.m_n2—clientderived3 values; most often 0 (34%)
+0x00BLvLim
level cap
quests.md §9.2
Quest.m_nLimLv—clientderived2 values; most often -1 (100%)
+0x010ActionType ×3
target N: type (stride 0x20, 3 targets)
quests.md §9.2, §4
Quest.m_nActType—clientderived27 values; most often -1 / -1 / -1 (61%)
+0x011skp ×3
padding, constant 0
quests.md §9.2
——clientderivedalways 0 / 0 / 0
+0x012(unnamed) ×3
padding, constant 0
quests.md §9.2
——clientderivedalways 0 / 0 / 0
+0x014Target ID ×3
target N: object (monster/NPC — hex, item — group and ID)
quests.md §9.2, §9.4
Quest.m_strActSub—clientderived425 values; most often 4294967295 / 4294967295 / 4294967295 (61%)
+0x018Action Subject One ×3
target N: item (for %ITEM)
quests.md §9.2, §9.4
Quest.m_strActSub—clientderived93 values; most often 4294967295 / 4294967295 / 4294967295 (89%)
+0x01CAction Subject Two ×3
target N: item ID m_strActSub2 (type 14, the group is at +0x8 of the action); −1 for other types
quests.md §9.2 [user, 29.10.2026; bytes Q6], §4
Quest.m_strActSub2—clientderived91 values; most often 4294967295 / 4294967295 / 4294967295 (61%)
+0x020Quantity ×3
target N: how many
quests.md §9.2
Quest.m_nReqAct—clientderived41 values; most often -1 / -1 / -1 (60%)
+0x024QObjectiveTextIdx ×3
target N: target text (number in NDQuest)
quests.md §9.2 (layout confirmed in game)
entity text—clientderived47 values; most often -1 / -1 / -1 (60%)
+0x028QProgressTextIdx ×3
target N: progress text
quests.md §9.2
entity text—clientderived47 values; most often -1 / -1 / -1 (60%)
+0x02CQuestItem ×3
target N: QuestItem — row number of table 8
quests.md §9.2, §4
Quest.m_strLinkQuestItem—clientderived27 values; most often -1 / -1 / -1 (98%)
+0x070Reward: Exp
experience (double)
quests.md §9.2, §5
Quest.m_dConsExp—clientderived72 values; most often 0 (49%)
+0x078Reward: Dalant
dalant
quests.md §9.2, §5
Quest.m_nConsDalant—clientderived72 values; most often 0 (85%)
+0x07CReward: Gold
gold
quests.md §9.2, §5
Quest.m_nConsGold—clientderivedalways 0
+0x080Reward: CP
CP
quests.md §9.2, §5
Quest.m_nConsContribution—clientderived23 values; most often 0 (89%)
+0x084Reward: PvPPoint
PvP points
quests.md §9.2, §5
Quest.m_nConsPvP—clientderived2 values; most often 0 (99%)
+0x088Reward Type ×6
reward: 6 × {u8 group (FF — none), 3 b., u32 code, u8 quantity (mod 256), 3 b.}; wrongly i32 in STRS
quests.md §9.2, §5
Quest.m_strConsITCode, m_nConsITCnt—clientderived50 values; most often -1 / -1 / -1 / -1 … (80%)
+0x089(skip) ×6
reward: 6 × {u8 group (FF — none), 3 b., u32 code, u8 quantity (mod 256), 3 b.}; wrongly i32 in STRS
quests.md §9.2, §5
Quest.m_strConsITCode, m_nConsITCnt—clientderivedalways 000000 / 000000 / 000000 / 000000 …
+0x08CReward Code ×6
reward: 6 × {u8 group (FF — none), 3 b., u32 code, u8 quantity (mod 256), 3 b.}; wrongly i32 in STRS
quests.md §9.2, §5
Quest.m_strConsITCode, m_nConsITCnt—clientderived246 values; most often 4294967295 / 4294967295 / 4294967295 / 4294967295 … (80%)
+0x090Reward Quantity ×6
reward: 6 × {u8 group (FF — none), 3 b., u32 code, u8 quantity (mod 256), 3 b.}; wrongly i32 in STRS
quests.md §9.2, §5
Quest.m_strConsITCode, m_nConsITCnt—clientderived24 values; most often 255 / 255 / 255 / 255 … (80%)
+0x091(skip) ×6
reward: 6 × {u8 group (FF — none), 3 b., u32 code, u8 quantity (mod 256), 3 b.}; wrongly i32 in STRS
quests.md §9.2, §5
Quest.m_strConsITCode, m_nConsITCnt—clientderivedalways 000000 / 000000 / 000000 / 000000 …
+0x0D0Reward: Mastery Code ×2
mastery: 2 × {u8 kind, u8 subkind, u16, i32 points}
quests.md §9.2, §5
Quest.m_nConsMasteryID/SubID/Cnt—clientderived4 values; most often -1 / -1 (100%)
+0x0D1Reward: SubMastery Code ×2
mastery: 2 × {u8 kind, u8 subkind, u16, i32 points}
quests.md §9.2, §5
Quest.m_nConsMasteryID/SubID/Cnt—clientderived2 values; most often -1 / -1 (100%)
+0x0D2?? ×2
mastery: 2 × {u8 kind, u8 subkind, u16, i32 points}
quests.md §9.2, §5
Quest.m_nConsMasteryID/SubID/Cnt—clientderivedalways 0 / 0
+0x0D4Reward: Mastery Points ×2
mastery: 2 × {u8 kind, u8 subkind, u16, i32 points}
quests.md §9.2, §5
Quest.m_nConsMasteryID/SubID/Cnt—clientderived2 values; most often -1 / -1 (100%)
+0x0E0Reward: Skill Code
skill, force: code + points (the client does not show them in the reward window)
quests.md §9.2, §5
Quest.m_strConsSkillCode, m_nConsSkillCnt, m_strConsForceCode, m_nConsForceCnt—clientderivedalways 4294967295
+0x0E4Reward: Skill Points
skill, force: code + points (the client does not show them in the reward window)
quests.md §9.2, §5
Quest.m_strConsSkillCode, m_nConsSkillCnt, m_strConsForceCode, m_nConsForceCnt—clientderivedalways -1
+0x0E8Reward: Force Code
skill, force: code + points (the client does not show them in the reward window)
quests.md §9.2, §5
Quest.m_strConsSkillCode, m_nConsSkillCnt, m_strConsForceCode, m_nConsForceCnt—clientderivedalways 4294967295
+0x0ECReward: Force Points
skill, force: code + points (the client does not show them in the reward window)
quests.md §9.2, §5
Quest.m_strConsSkillCode, m_nConsSkillCnt, m_strConsForceCode, m_nConsForceCnt—clientderivedalways -1
+0x0F0QSuccBriefingText ×5
5 × success text (NDQuest)
quests.md §9.2
entity text—clientderived528 values; most often -1 / -1 / -1 / -1 … (75%)
+0x104QFailBriefingText ×5
5 × failure text (NDQuest)
quests.md §9.2
entity text—clientderived13 values; most often -1 / -1 / -1 / -1 … (100%)
+0x140Quest Title
name (NDQuest)
quests.md §9.2
entity text—clientderived996 values; most often -1 (62%)
+0x144QBriefTalkingHead ×5
5 × briefing
quests.md §9.2
entity text—clientderived900 values; most often -1 / -1 / -1 / -1 … (61%)
+0x158QDescriptionInQuestWindow ×5
5 × description in the quest window
quests.md §9.2
entity text—clientderived934 values; most often -1 / -1 / -1 / -1 … (59%)
+0x16CStoreTrade
NPC portrait (group in npc/<race>.spr)
quests.md §9.2
Quest.m_nStore_trade—clientderived15 values; most often 15 (60%)
+0x170isFailCheck
check failure
quests.md §9.2
Quest.m_bFailCheck—clientderived2 values; most often 0 (98%)
+0x174failCondition ×3
failure conditions: 3 × {i32 condition, u32 code, u8 table, 3 b.}
quests.md §9.2, §6
Quest.m_nFailCondition, m_strFailCode—clientderived2 values; most often -1 / -1 / -1 (98%)
+0x178failCode ×3
failure conditions: 3 × {i32 condition, u32 code, u8 table, 3 b.}
quests.md §9.2, §6
Quest.m_nFailCondition, m_strFailCode—clientderived5 values; most often -1 / -1 / -1 (98%)
+0x17Cnone ×3
failure conditions: 3 × {i32 condition, u32 code, u8 table, 3 b.}
quests.md §9.2, §6
Quest.m_nFailCondition, m_strFailCode—clientderivedalways 0 / 0 / 0
+0x1A4failLinkQuest
failLinkQuest
quests.md §9.2
Quest.m_nFailLinkQuest—clientderived10 values; most often -1 (100%)

Record: QuestItem

OffsetFieldWhat it is and how it actsAssembled fromServer readersRoleStatusData
+0x000n_idx
number
quests.md §12
QuestItem (row number)—clientderived249 values; most often 0 (0%)
+0x004strCode
code
quests.md §12
QuestItem (code)—clientderived249 values; most often 268959744 (0%)
+0x008idx
icon number in frame 28 of item.spr; in AoP — row number + 1
quests.md §12
———known249 values; most often 1 (0%)
+0x00CName
name: replaced by the string of the first NDQuest section
quests.md §12
NDQuest.edf—clientderivedalways ``

Unused parameters

Fields that neither the server nor the client reads. For each: why it was decided so and where that was established. The editor keeps their bytes as they are.

DataTable\<language>\NDQuest.edf client file

Record: Indexes (something)

OffsetFieldWhy unusedData
+0x004QuestCode
0 in all 5 279 AoP records; the AoP client does not read it
quests.md §11.1: the index table ([027BDBE0]+0x60) is taken only by the loader 005E2020 (+0x08, +0x0C), destructor 005E1C10 (+0x0C) and getter 005E2470, whose result is read by 005E15A0 and 005E1A30 (only +0x0C); there are no other accesses to +0x60 of the object or its methods (clines); the generic table functions 005CD7C0/005CD8C0/005CD870 do not parse fields
—
+0x00C??
unused: 005E2020 writes the address of the allocated text here and does not read the file value
quests.md §11.1
—

DataTable\Quest.edf client file

Record: QuestDummyEvent, QuestNPCEvent, QuestKillOtherRaceEvt, QuestLevelUPEvt, QuestPromoteEvent, QuestGradeEvent, QuestGainItemEvent (QuestHappenEvent)

OffsetFieldWhy unusedData
+0x008EventNo
EventNo (& 0xFF); nobody reads it
quests.md §8.4 (Q4): AoP and 2.2.3.2 server — EventNo is not read; AoP client — byte +0x08 is not read anywhere (the table is read only by 005E2270, 00462320, 00588420)
11 values; most often -1 (83%)

Record: Quest

OffsetFieldWhy unusedData
+0x00CbSelMannually
bSelMannually in STRS; the client does not read it
quests.md §9.2 (Q11): tracking the record pointer (qtaint.py) and reviewing all [reg+0Ch] in 51 quest record functions — no reads
always 0
+0x118LinkedQuest ×5
5 LinkedQuest pairs: (0,0) for a server-side transition, (−1,−1) when empty; the client does not read them
quests.md §9.2 (Q1): indexed accesses [reg+reg*8+118h…] and pointer tracking — no reads
3 values; most often -1 / -1 / -1 / -1 … (77%)
+0x11CLinkedQuest ×5
5 LinkedQuest pairs: (0,0) for a server-side transition, (−1,−1) when empty; the client does not read them
quests.md §9.2 (Q1): indexed accesses [reg+reg*8+118h…] and pointer tracking — no reads
3 values; most often -1 / -1 / -1 / -1 … (77%)
+0x198Under Inv ×3
3 × i32, (−1, −1, 0) everywhere; the client does not read it
quests.md §9.2: tracking the record pointer and searching offsets in the quest record functions — no reads
always -1 / -1 / 0

← Back to category

RF Online is a trademark of its owners. The reference is compiled from research for content development. Built 01.11.2026 · field catalog dated 29.10.2026 · Adagio UI 0.5.0