石器百科 开始游戏

任务系统总览

石器时代没有任务日志窗口。所有任务都由一种叫「事件 NPC」(服务端类型 changeevent)的人物驱动:你身上带着什么、等级多少、以前做过什么,决定了 NPC 这次对你说什么、给你什么。看懂这套规则以后,NPC 的反应基本都能预判,也能少走很多冤枉路。

本文先讲机制,再给几条主要原版任务线的完整步骤。

一、任务旗标:完成与进行中

每个角色身上有两组旗标,各 192 位(编号 0~191):

旗标 意思 什么时候设上 什么时候清掉
完成旗标(ENDEV) 这个任务已经做完 交差时 NPC 的 EndSetFlg 只有 CleanFlg(「重置」类 NPC)会清
进行中旗标(NOWEV) 接了任务、还没交 接任务(REQUEST)时,或某些剧情对话(MESSAGE)时 交差(EndSetFlg)时一并清掉;放弃任务时也清掉

任务编号就是旗标的位号。例如成人礼是 4 号任务:接任务后 NOWEV 4 被设上,交差后 ENDEV 4 被设上、NOWEV 4 被清掉。

出处:include/char_base.h CHAR_ENDEVENTCHAR_ENDEVENT6、CHAR_NOWEVENTCHAR_NOWEVENT6(_NEWEVENT 开启时 6 组 × 32 位);npc/npcutil.c NPC_EventSetFlg / NPC_NowEventSetFlg / NPC_NowEndEventSetFlgCls。

完成任务顺带拿声望

第一次设上某个完成旗标时,服务器会按一张固定表给你加个人声望(家族资料里显示的数值是内部值 ÷ 100)。不在家族里也照加,在家族里还会同步给家族。部分任务的数值:

任务编号 声望(内部值) 任务编号 声望(内部值)
1(哈罗山草药) 15 19(哈恩造斧) 120
2(弥生与日美子) 5 22(强恩的奖赏) 60
4(成人礼) 10 35 225
16 120 40 600
17(龙之巢穴) 90 71 / 72 15000 / 20000

表里没有的编号(或填 0 的)不给声望。判断「第一次」的依据只是该旗标位当时是否为 0,所以被 CleanFlg 重置过的任务再次完成会再加一次声望。

出处:npc/npcutil.c FMAdvTbl[]、AddFMAdv(_PERSONAL_FAME、_FMVER21 均开启,CHAR_earnFame 不检查家族);NPC_EventSetFlg 里的 if (!(point & (1 << shift)))。声望另见 家族。

二、事件 NPC 怎么运作

一个事件 NPC 的设定由若干「段」组成,每段以 EventEnd 结尾。你和 NPC 说话时,服务器从第一段往下逐段检查,用第一段条件成立的段来回应;全部不成立就随机说一句闲聊(NomalMainMsg,显示在聊天栏)。

逐段检查时有两个要点:

  1. 段的 EventNo 如果是你已经完成的任务号,整段直接跳过——所以做完的任务不会再接到。EventNo:-1 表示与旗标无关,不会被跳过。
  2. 段里写了 KeyWord 的,只有你在 NPC 面前用聊天说出这个词才会成立(2.5 数据里有 54 处,例如「近藏」)。

出处:npc/npc_exchangeman.c NPC_TypeCheck。

四种段类型

TYPE 玩家看到的流程 发生的事
REQUEST(委托) 请求窗口(是/否)→ 选「是」→ 感谢窗口 给委托道具 / 收东西,设上 NOWEV
ACCEPT(交差 / 交换) 确认窗口(是/否)→ 选「是」→ 感谢窗口 → 按「确定」 收东西、给奖励,按 EndSetFlg 设完成旗标,清 NOWEV
MESSAGE(剧情) 一个或几页窗口,或聊天栏一句话 可能顺带给道具;EventNo 不是 -1 时设上 NOWEV
CLEAN(重置) 确认窗口(是/否) 选「是」后按 CleanFlg 清掉旗标,任务可以重做

几个流程细节:

  • ACCEPT 要按完最后一页的「确定」才算交差。 版本开启了 _NEWEVENT,ACCEPT 的感谢词窗口按「确定」那一刻才收道具、发奖励、设旗标。中途关窗口什么都不会发生。
  • 重复和接过任务的 NPC 说话:REQUEST 段在你已有 NOWEV 时会弹 StopMsg(「想放弃吗?」)。选「是」= 放弃任务:NPC 会收回当初给的委托道具,进行中旗标被清掉,魅力 -1。选「否」只是一句鼓励。
  • 背包满:要给你东西时如果空格不够,会弹 ItemFullMsg 并中止,什么都不交换。GetItem:编号*15 这种一次给 15 个的,就需要 15 个空格。
  • 石币:GetStone 会让石币超过上限时弹 StoneFullMsg 中止;DelStone 不够时弹 StoneLessMsg。DelStone:LV*40 表示收「等级 × 40」石币,窗口里的 %8d 会显示实际金额。
  • 和 NPC 对话的距离:面对面 2 格以内,或者紧贴 1 格。

出处:npc/npc_exchangeman.c NPC_ExChangeManWindowTalked(CHAR_WINDOWTYPE_WINDOWEVENT_ACCTHANKNEW 按 OK 才走 NPC_MsgDisp(…, 8))、NPC_MsgDisp case 7(EndStopMsg:收回 + 魅力 -1)、NPC_ItemFullCheck、NPC_EventGetCost。

三、条件(EVENT)怎么读

每段的 EVENT: 写着成立条件:

  • 逗号 , 表示「或」,& 表示「且」。例:NOWEV=1&ITEM!=2401,NOWEV=87&ITEM!=2401 = 「接了 1 号任务且没有 2401」或「接了 87 号任务且没有 2401」。
  • 比较符:=、!=、<、>。没有 >=,所以「Lv30 以上」写成 LV>29。
条件 含义 备注
LV>n / LV<n / LV=n 人物等级 见下方「怪处」
ITEM=id 道具栏里有这件道具 只看道具栏,不看身上穿戴的
ITEM!=id 道具栏里没有这件道具 同上
ITEM=id*n 这件道具至少 n 个 堆叠按堆叠数算;这种写法连装备栏也算进去
ENDEV=n / ENDEV!=n n 号任务已完成 / 未完成
NOWEV=n n 号任务进行中
SP=n 你在第 n 号记录点登记过 0~3 号是建角时选的出身村:0 萨姆吉尔、1 玛丽娜丝、2 加加、3 卡鲁它那
TIME=n 当前游戏时段 0 夜、1 早、2 午、3 傍晚
IMAGE=n 人物外形图号
PET>lv-id*n 带着 n 只编号 id、等级 > lv 的宠物 写成 PETEV… 时只认任务给的「事件宠」
reITEM>n 道具栏空格数

PET 条件里的「宠物编号」是宠物图鉴编号(即本站 /pets/ 页的编号),比较符作用于宠物等级。例如猜谜大师任务的 PET=77-12 意思是「身上有一只等级恰好 77 的 金布伊」(详见 小游戏与猜谜塔)。

出处:npc/npc_exchangeman.c NPC_ExChangeManEventCheck(, 与 &)、NPC_EventBigSmallCheck、NPC_EventFreeIfCheck、NPC_EventItemCheck(从 CHAR_STARTITEMARRAY 起)、NPC_EventReduce(从第 0 格起,计 ITEM_USEPILENUMS)、NPC_SavePointCheck、NPC_PetLvCheck;char/char_data.c CHAR_getInitElderPosition(出身村 = 1 << hometown);include/handletime.h LS_NIGHT~`LS_EVENING`。

原版条件的几个怪处

这些是原版服务端代码的实际行为,网页版也照样复刻:

  • LV!=n 判定是反的:等级恰好等于 n 时才成立。
  • NOWEV!=n 永远成立;ITEM<n、ITEM>n 永远不成立;ENDEV<n、ENDEV>n 只看有没有完成。
  • 数据里拼错的条件(如 NOEEV、DR、?18542)一律当作不成立。

出处:NPC_EventLevelCheck / NPC_NOWEventNoCheck / NPC_EventItemCheck 中按 flg 分支的写法;网页版对照见仓库 docs/QUEST_COVERAGE.md「原版的怪处」。

四、动作(NPC 给你 / 收你什么)

键 作用
GetItem:a,b*n 给道具(逗号分隔多件,*n 给 n 个)
GetRandItem:a,b,c 从列表里随机给一件
DelItem:a,b 收走道具:写编号不带 * 时,身上这种道具全部收走(含装备栏)
DelItem:a*n 见下方「收道具的怪处」
GetStone / DelStone 给 / 收石币
GetPet:id / DelPet 给宠物(逗号分隔 = 随机一只)/ 收宠物
EndSetFlg:n,m 设完成旗标(同时清本任务的进行中旗标)
CleanFlg:n 清掉旗标
Charm:n 魅力 +n(交差时,魅力未满 100 才加)
NpcWarp NPC 自己换位置(轮流出现在列表里的几处),不是传送你

收道具的怪处:DelItem:编号*数量 只有段里同时写了 Break(道具「坏掉」)时才真的收走;没有 Break 的话原版代码是空分支,一件也不收。这直接影响好几条任务的结果,下面的攻略里会标出来。

出处:npc/npc_exchangeman.c NPC_EventDelItem(if( breakflg != 1 ){ })、NPC_EventAddItem、NPC_RandItemGet、NPC_EventWarpNpc、NPC_MsgDisp case 8(Charm)。

五、传送员的条件

很多任务地点被「传送员」(npcgen_warpman)把守,它们的条件写法和事件 NPC 类似:

  • FREE: 成立就免费送你过去(FreeMsg);不成立显示 PayMsg。
  • MONEY:-1 表示条件不成立就不让过;MONEY:n 是付 n 石币过去;MONEY:LV*k 是付「等级 × k」。
  • 普通传送员不接待组队,要先解散队伍(PartyMsg)。
  • 传送员能用的条件比事件 NPC 多,例如 EQUIT=id(身上穿着某装备)、GOLD(石币)、TRANS(转生次数)、PARTY(队伍人数)。

出处:npc/npc_warpman.c NPC_WarpMan_selectWindow、NPC_PARTY_CHAECK;npc/npc_eventaction.c NPC_ActionPassCheck、NPC_ActionFreeIfCheck。

六、小技巧

  • 先看有没有 CLEAN 型 NPC。 有「重置」NPC 的任务可以反复做(如樵夫巴尔线),奖励和声望都能再拿。
  • 交差前把任务道具放在道具栏,别穿在身上。 ITEM= 条件不看装备栏。
  • 一次只能拿一种奖励时先想清楚。 比如龙之巢穴三条龙,交给哪一条就只能拿它那件,另外两条随即进入「已完成」对话。
  • 任务道具弄丢了先回去找发委托的人。 很多任务都有「弄丢了?再给你一次」的段(如哈恩的壶、巴尔的委托书、守护者的龙之笛)。
  • 放弃任务扣魅力。 在 StopMsg 里选「是」会魅力 -1,不想放弃就选「否」。

七、任务线攻略

以下 NPC 坐标均为 (x, y)。道具与奖励说明摘自道具资料。

1. 成人礼(任务 4)

条件:Lv30 以上,单人。奖励:仪之兜(防 +15、敏 -3、全异常状态防止 +3),声望 10。

  1. 前往 海底通路地下2楼(地图 10202)(31,13) 的「仪的值班者」。等级 ≥ 30 且没有组队,免费传送进仪式之路 地图 10204 (2,6)。等级不足或组队都会被拒绝。
  2. 入口旁 (14,6) 的「仪式的审判」处接任务(REQUEST,条件 LV>0),设上进行中旗标 4。
  3. 沿这条路一直走到尽头 (188,13),找「仪式审判的差使」(ACCEPT,条件:任务 4 进行中且身上没有仪的玉)。他一次给你 15 个 仪的玉,需要 15 个空格。
  4. 带着 15 个仪的玉走回 (14,6) 交给仪式的审判(ACCEPT,条件 ITEM=2417*15)→ 获得仪之兜,任务 4 完成。

注意:

  • 这条路上有敌人(地图 10204 设有遇敌)。
  • 原版数据写的是 DelItem:2417*15 而没有 Break,按原版代码仪的玉不会被收走,交差后仍留在包里,可以丢掉腾空间。
  • 交差后再和审判说话只会得到「以后也要不断地求进步」的祝福。

出处:data/npc/jaruga/event/event04_1、event04_2、event.create;data/npc/genout/wpm_10202_31_13(WARP:10204,2,6、FREE:LV>29、MONEY:-1);data/encount.txt 第 208 条(地图 10204)。

2. 哈罗山的草药(任务 1)

条件:无。奖励:老爷爷的护身符(魅 -1、全部状态异常耐性 +2),声望 15。

  1. 塔姆塔姆的民家 (16,15) 的「村庄小姑娘」请你去哈罗山顶拿草药(REQUEST)。
  2. 前往 森林洞窟山顶 (16,20) 找「咍罗山的医生」。任务进行中且身上没有草药时,他给你 哈罗的香草。他的话有好几页,按「下一页」看完再按确定。
  3. 回到村庄小姑娘处交出香草(ACCEPT,DelItem:2401 会收走)→ 拿到护身符。

小技巧:香草本身是「吃下去后耐久力回复 100」的回复道具。任务进行中把香草弄丢(或吃掉)了,可以再找医生要。

出处:data/npc/jaruga/event/event01_1、event01_2。

3. 弥生与日美子(任务 2)

条件:无,起点由出身村决定。奖励:对方送的谢礼,声望 5。

这是一对互相寄东西的朋友,按建角时选的出身村分两个方向:

出身村 起点 送到 委托物 谢礼
萨姆吉尔、卡鲁它那(SP=0 / 3) 萨姆吉尔村 (57,124) 日美子 玛丽娜丝渔村 (55,92) 弥生 仙尼亚的花 不可思议的贝壳
玛丽娜丝、加加(SP=1 / 2) 玛丽娜丝渔村 (55,92) 弥生 萨姆吉尔村 (57,124) 日美子 不可思议的贝壳 仙尼亚的花
  1. 在起点 NPC 处接任务,拿到委托物。
  2. 送到另一位手上(ACCEPT,委托物被收走)→ 拿到谢礼,任务 2 完成。萨姆吉尔在玛丽娜丝的东北方向,中间隔着一片森林。

完成后如果把谢礼弄丢了,回送礼的那位说话,会出现「重置」窗口(CLEAN),选「是」清掉任务 2,可以再做一次。

出处:data/npc/sainasu/event/event02_1、event02_2、event02.create;char/char_data.c elders[](出身村 0~3 = 地图 1006/2006/3006/4006)。

4. 樵夫巴尔与造斧专家哈恩(任务 18、19)

条件:Lv15 以上。奖励:哈恩的斧头(攻 +35 防 -15 敏 -15)、哈恩改造的斧头(攻 +33 防 -10 敏 -10)、伐木打工最高 20000 石币 + 杉的手环(攻 +8 防 +5 敏 -5 魅 -5);任务 19 声望 120。

  1. 接委托:乌鲁力村 (60,75)「樵夫巴尔」说他的斧头断了(REQUEST,LV>14)→ 给你 斧头制作依赖书。
  2. 找哈恩:深入阿鲁姆山的洞窟,到 哈恩的锻冶场 (12,11)「造斧专家哈恩」,带着依赖书说话(REQUEST)→ 拿到空的 哈恩的壶,让你去最下层打水。
  3. 打水:阿鲁姆山的洞窟地下7楼 (32,29)「看守用水的科巴尔特」把空壶换成装满水的 哈恩的壶。
  4. 造斧:回哈恩处(ACCEPT,条件:任务 19 进行中、有满水的壶和依赖书)→ 收走壶和依赖书,给你 哈恩的斧头,任务 19 完成。
  5. 交给巴尔:回乌鲁力村交给巴尔(ACCEPT)→ 拿到 巴尔的推荐书 和 折断的斧头,任务 18 完成。
    • 数据写的是 DelItem:2465*1、没有 Break,按原版代码哈恩的斧头不会被收走,你可以留着用。
  6. 改造斧头:把折断的斧头拿给哈恩(REQUEST,ITEM=2484)→ 给你 哈恩改造的斧头。这里同样是 DelItem:2484*1 不带 Break,折断的斧头也会留在你身上。注意身上若还带着哈恩的斧头,哈恩会先触发「这把斧头好用吗?」的对话,先把它放进仓库再来。
  7. 伐木打工:带推荐书到 加加村 (114,69)「木材商人赛尚」(REQUEST)→ 推荐书换成 采伐许可证。
  8. 带着采伐许可证在野外打「木」,掉 良质的木材(掉率 70%)。「木」这群敌人只在你持有采伐许可证时才会出现:加鲁卡大陆(地图 200)坐标 (516,238)~(772,452) 一带,占该区遇敌权重的一半。
  9. 回赛尚处结算(ACCEPT)。他按木材数量从多到少检查,取第一个满足的档:
木材数 酬劳(石币) 木材数 酬劳(石币)
14 以上 20000 + 杉的手环 7 5600
13 16000 6 4800
12 12000 5 4000
11 10000 4 3200
10 8000 3 2400
9 7200 2 1600
8 6400 1 400

结算时木材(不带 *,全部)和采伐许可证都会被收走,所以超过 14 根没有意义,凑够 14 根就去交。一根都没有时许可证照样被收回。

重做:乌鲁力村 (46,55)「喜欢八卦的年轻人」可以重置任务 18;任务 19 完成后,哈恩本人可以重置任务 19(都是 CLEAN;和哈恩说话时身上别带哈恩的斧头和折断的斧头,否则会先触发前面的段)。重置后整条线可以再跑一遍,再拿推荐书去打工;任务 19 重新完成时声望会再加。

出处:data/npc/jaruga/event/20501ev1~`20501ev5、20501ev.create;data/enemy.txt「木」(掉 2468,几率 700‰);data/group.txt「木」第 414 组(GROUP_APPEARBYITEMID = 2478);data/encount.txt 第 88 条;char/enemy.c(_FIX_ITEMPROB:RAND(0,999) < 掉率`)。

5. 龙之巢穴(任务 17)

条件:守护者本身不限等级,但巢穴里的龙是 Lv45~47 的敌人。奖励:三选一,声望 90。

奖励 谁给 说明
龙之衣 疾速龙 防 +13 敏 +4 魅 +2,复活的精灵 Lv1
龙之枪 刚气龙 攻 +36 防 -14 敏 -14 魅 +2,治愈的精灵 Lv2
龙之铠 钢格龙 防 +23 敏 -10 魅 +2,猛毒的精灵 Lv2
  1. 龙的巢穴1楼 (13,63)「守护者」接受使命(REQUEST)→ 拿到 龙的魅力之笛(魅 +3)。
  2. 带着笛子在巢穴里遇敌。三条龙只在你持有龙的魅力之笛时出现,各守一层:
敌人 出没楼层 遇敌权重 掉落
疾速之龙 4 楼 1 / 31 疾速的龙的玉(80%)
刚气之龙 5 楼 1 / 21 刚气的龙的玉(80%)
钢格之龙 6 楼 1 / 21 钢格的龙的玉(80%)

守护者也提醒「龙群可是没那么容易就现身的,耐着性子慢慢地找吧」。

  1. 集齐三颗龙玉,带着笛子到 龙的巢穴7楼。三条龙分别在:疾速龙 (7,8)、刚气龙 (23,6)、钢格龙 (41,14)。只能选一条交:交差时三颗龙玉和笛子全部收走,任务 17 完成,另外两条龙随即只会说「守护责任就交付给你了」。

笛子弄丢了可以回守护者处再要一支(任务进行中、身上没有笛子时)。

出处:data/npc/jaruga/event/event17_1event17_4、event17.create;data/group.txt 第 404406 组(出现需持有 2505);data/encount.txt 第 261263 条;data/enemy.txt 疾速之龙 / 刚气之龙 / 钢格之龙(Lv4547,掉率 800‰)。

6. 吉德的女儿(任务 20、21、22)

条件:无,但要深入强恩一族的洞窟 7 楼(山贼的地下城)。奖励:卡娜的木笛(魅 +2 毒 +5 石 -5 眠 +5,复活精灵 Lv2);强恩随机给一件山贼装备;任务 22 声望 60。

  1. 奇喀喀村 (59,66)「吉德的朋友」凯伊讲述 16 年前的事,给你 开在奇喀喀的花。拿到花之后别再和凯伊对话选「是」:他的下一段是「你不想帮我吗?」,确认后会把花收回去。
  2. 奇喀喀的村长家 (27,14)「吉德」——带着花说话,接下任务 20(REQUEST,花被收走)。
  3. 同屋 (28,17)「吉德的儿子」给你 母亲的发饰。
  4. 前往 强恩一族的洞窟7楼 (68,5) 找首领「强恩」(ACCEPT,任务 20 进行中 + 发饰)→ 任务 20 完成。旁边 (71,7) 强恩的妻子会告诉你女孩的房间在楼上。
  5. 沙拉的房间 (9,3)「沙拉」:把发饰交给她(REQUEST,发饰被收走,任务 21 进行中)。她决定留下。
  6. 回强恩处(ACCEPT)→ 从 山贼的羽饰、山贼的手环、山贼的投掷斧头、山贼的爪、山贼的小棍棒 中随机得一件,任务 22 完成。
  7. 再找沙拉 → 拿到 给双亲的信。
  8. 回奇喀喀村长家把信交给吉德(ACCEPT)→ 信被收走,获得卡娜的木笛,任务 21 完成。

出处:data/npc/jaruga/event/event20_1~`event20_6、event20.create`。


八、网页版说明

网页版的事件 NPC、传送员、NPC 敌人都按原版 C 代码逐函数重写,并用差分测试与原版行为对照(包括上文所有「怪处」)。目前已知与原版的少数差异:

  • 宠物栏是紧凑排列:原版交出宠物后留下空栏,网页版后面的宠物会前移。
  • 原版在没有台词时也会送一个空白窗口,网页版不送。
  • 原版连送两个窗口时客户端只剩后一个,网页版直接只送后一个。

更多地图位置见 世界地图,奖励装备的数值说明见 道具与装备。