石器百科 开始游戏

宠物

宠物是石器时代的核心:它陪你战斗、可以骑、能帮你寄信,还能学技能和转生。本文按「抓到 → 养大 → 学技能 → 转生 → 日常使用」的顺序讲,每节先说怎么做,再给出原版服务端(gmsv)里的公式。

本文依据 2.5 原版服务端源码(battle/battle_event.c、char/char.c、char/char_data.c、char/pet.c、char/petmail.c、npc/npc_petskillshop.c、npc/npc_transmigration.c 等)和数据文件(data/enemybase.txt、data/petskill.txt、data/itemset.txt),并以 include/version.h 实际打开的功能为准。能力值在服务端以「1/100 点」存储,下文换算成游戏里看到的点数。骑乘另见骑乘。

一、宠物的基本数值

每只宠物来自 enemybase.txt 里的一个「怪物模板」(宠物图鉴页的编号就是模板号,例如乌力是 1 号)。模板决定了宠物的:

模板字段 含义
初始值 / 每级点数 决定刚生成时四项基础能力的倍数
体力 / 腕力 / 耐力 / 敏捷 成长 俗称「成长档」,四项加起来越高越强
modai 驯服难度,越大越难养忠诚(见第三节)
捕获难度 get 越大越好抓,可以是负数(见第二节)
地水火风 属性,四项合计一般为 100
技能 1~7 天生的技能
slot 技能栏数(最多 7)
等级上限 有值的宠物(例如玛蕾菲雅)升到上限后就不再获得经验

宠物的战斗数值由四项基础能力换算(和人物同一条公式,详见人物属性与成长):

显示数值 公式(点数)
最大 HP 体力×4 + 腕力 + 耐力 + 敏捷
攻击 腕力 + 耐力×0.1 + 体力×0.1 + 敏捷×0.05
防御 耐力 + 腕力×0.1 + 体力×0.1 + 敏捷×0.05
敏捷 敏捷

出处:char/char.c CHAR_initcharWorkInt;网页版 game/rules.ts compliance。

宠物的「排名」(rank)

模板四项成长的总和决定宠物的 rank,rank 影响升级时的成长倍率(第四节)和野怪经验:

四项成长总和 rank
≥ 100 0
95 ~ 99 1
90 ~ 94 2
85 ~ 89 3
80 ~ 84 4
< 80 5

出处:char/enemy.c ENEMY_getRank。

二、捕捉宠物

怎么抓

  1. 在野外遇到可以捕捉的怪物(enemy.txt 里标记了可捕捉的才行,剧情怪、大部分 BOSS 不行)。
  2. 战斗指令栏选「捕捉」,再点要抓的怪。
  3. 成功的话怪物被拖回来,直接进入你的宠物栏;失败则怪物生气,什么也没发生。

捕捉之前先看清楚:

  • 宠物栏必须有空位(身上最多 5 只)。栏满时捕捉一定失败。
  • 怪物等级不能比你高 5 级以上(怪物 Lv > 人物 Lv + 5 时成功率直接为 0)。装备万兽之戒可以无视这条限制。
  • 少数怪物要求身上带着特定道具才能抓(见下文「需要道具的怪物」)。

成功率公式

HP项   = 10 − 怪物当前HP² ÷ 怪物最大HP
等级项 = 人物Lv÷2 − 怪物Lv÷2
敏捷项 = 人物敏捷÷15 − 怪物敏捷÷15
成功率 = (HP项 + 等级项 + 敏捷项 + 捕获难度get + 人物运气) × 人物魅力 ÷ 50
         + 捕获率加成
         + 15(怪物在睡眠中)
上限 99;掷 1~100,小于成功率即成功

出处:battle/battle_event.c BATTLE_CaptureCheck、BATTLE_Capture。

要点:

  • HP 项是关键。怪物满血时 HP 项 = 10 − 最大HP,是一个很大的负数,几乎抓不到;HP 打到个位数时 HP 项接近 10。所以要先把怪打到快死再抓。
  • 魅力是乘数:魅力 50 时不加不减,魅力 100 时成功率翻倍。人物初始魅力 60。
  • 运气是人物的运气值(每个游戏日登录时随机为 1~5,饰品也可能加运气)。
  • 捕获难度 get 写在模板里,例如乌力是 11、拉奇鲁哥是 5、左迪洛斯是 1、帖拉所伊朵是 −3、玛蕾菲雅是 0。
  • 让怪物睡着(催眠攻击、催眠魔法)额外 +15%。

举例:20 级、敏捷 30、魅力 60、运气 2 的人物,去抓一只 18 级、最大 HP 60、敏捷 20 的乌力:

怪物剩余 HP HP 项 成功率
60(满血) 10 − 60 = −50 0%
20 10 − 6.7 = 3.3 (3.3 + 1 + 0.67 + 11 + 2) × 1.2 ≈ 21.6%
5 10 − 0.42 = 9.58 (9.58 + 1 + 0.67 + 11 + 2) × 1.2 ≈ 29.1%

捕获率加成道具

战斗中对自己(或队友)使用「捕获率 N up」的料理,会给使用对象加上 N 的 90%~110%(随机)的捕获率,可以叠加。这个加成在该玩家下一次捕捉动作之后清零(不论成败)。野外使用没有效果。

道具 加成
野蛮团子 30
超甜的桃子 40
清脆的红萝卜 50
饱满的地瓜 60
红透的蕃茄 70
很酸的橘子 80
蜂蜜 80

此外还有许多料理类点心(团子、大福、蛋糕等)只加 1~13,道具说明里写着「捕获率 N 上升」的都属于这一类。

出处:item/item_event.c ITEM_useCaptureUp;battle/battle_item.c ITEM_useCaptureUp_Battle;battle/battle_magic.c BATTLE_MultiCaptureUp。

需要道具的怪物

以下怪物必须身上带着指定道具才能抓,抓到后这些道具全部被收走(同名的全部删除):

怪物 需要的道具
巨大玛恩摩 富商的货物
卡特利奴 加特利奴喜爱的食物
夏普德 海蓝之棒、海蓝之兜、海蓝之铠(三件都要)

代码里还为艾蜜、雷诛、讦谯龙(伊甸任务)以及佩露夏、嘎吱拉、斑尼迪克指定了道具(编号 20219、20223、20222、20253、20247、20259),但这些编号在 2.5 的 itemset.txt 里并不存在,所以按原版数据这 6 种实际上抓不到。

出处:battle/battle_event.c NeedEnemy[]、BATTLE_CaptureItemCheck、BATTLE_CaptureItemDelAll。_NEED_ITEM_ENEMY 会尝试读取 data/needitemeneny.txt,原版数据没有这个文件,读取失败后保持上表的内置值。

抓到的宠物是什么样

  • 等级、四项能力、成长档、技能都照搬战斗中那只怪(不会重新随机),HP 也保持被打残的状态,记得补血。
  • 宠物会记下「捕获时的等级」,卖给宠物店时用来算价钱。
  • 刚抓到的宠物忠诚度最多 60:如果按公式算出来超过 60,系统会给它一个负的「忠诚修正」把它压回 60(见第三节)。

出处:char/pet.c PET_createPetFromCharaIndex;battle/battle_event.c BATTLE_Capture(CHAR_DEFAULTMAXAI = 60)。

三、忠诚度(服从度)

宠物详细页的「忠诚」就是服务端的 AI 值(0~100)。它由两部分组成:

基础 = 人物Lv × 人物魅力 × 1.1 ÷ (宠物Lv × modai) × 100     (取整,最多 100)
忠诚 = 基础 + 忠诚修正÷100
      + (140 − 人物Lv) ÷ 2           (仅当人物已转生)
结果限制在 0 ~ 100

modai ≤ 0 时按 100 算。忠诚修正(VARIABLEAI)存在宠物身上,范围 −100 ~ +100 点。

出处:char/char.c CHAR_initcharWorkInt 宠物段、CHAR_PetAddVariableAi;include/char_base.h。

几个结论:

  • 人物等级越高、魅力越高,宠物越听话;宠物等级越高越难管。
  • modai 是模板写死的:乌力 150、玛蕾菲雅 100、大部分骑宠(布林帖斯、左迪洛斯 等)300。例如 20 级、魅力 60 的人带同样 20 级的乌力,基础忠诚 = 20×60×1.1÷(20×150)×100 = 44。
  • 转生过的人物有一大笔额外忠诚:(140 − 人物等级)÷2,1 级转生人物就是 +69。

忠诚修正的增减

事件 修正 条件
宠物升级 +5 每升 1 级
战斗中有敌人被打倒 +0.2(敌人等级比宠物高)/ +0.01(其他) 宠物在场、非无风险战斗
战斗中被回复魔法补血 +0.1
战斗中被复活 +3
主人打自己的宠物 −2 对怪战斗
主人阵亡 −1 主人 Lv ≤ 10 时减半
主人被击飞 −10 主人 Lv ≤ 10 时减半
宠物阵亡 −5 主人 Lv ≤ 10 时减半
宠物被击飞 −10 主人 Lv ≤ 10 时减半

出处:include/battle.h AI_FIX_*;battle/battle.c BATTLE_AddProfit、BATTLE_UltimateExtra、BATTLE_NormalDeadExtra;battle/battle_event.c BATTLE_AttackSeq;battle/battle_magic.c。

另外,人物的魅力也会在战斗中变化:人物升级 +2、阵亡 −2、被击飞 −4、宠物逃走 −1。魅力直接影响上面的基础忠诚。

不听话时会怎样

每回合轮到宠物行动时(下了「待机」或无法行动的除外),按忠诚度掷 1~100:

忠诚 不听话的概率与表现
≥ 80 一定听话
70 ~ 79 9% 换成随机目标
60 ~ 69 19% 换成随机目标
50 ~ 59 34% 换成随机目标
40 ~ 49 49% 换成随机目标
20 ~ 39 69% 随机使用自己的技能
10 ~ 19 79% 攻击主人,其余攻击敌人
< 10 59% 攻击主人,其余直接逃离战斗

「换成随机目标」时如果原本是防御或指定自己,就变成发呆。宠物一个技能都没有时,不听话就是发呆。宠物逃离战斗不会丢失,只是这场战斗退场、回到休息状态,主人魅力 −1。

出处:battle/battle.c BATTLE_PetLoyalCheck、battle/battle_event.c BATTLE_LostEscape。

忠诚度还关系到:骑乘需要忠诚 100(见骑乘),宠物店卖宠物的价格也参考忠诚(第九节)。

四、成长与升级

宠物怎么拿经验

  • 只有出战中的宠物在战斗胜利后拿经验,计算方式和人物一样:每打倒一个敌人得到该敌人的经验,宠物比敌人高 5 级以上时按等级差打折(详见战斗系统)。
  • 骑乘中的宠物也拿经验,但只有同样计算结果的 60%。
  • 宠物和人物用同一张升级经验表;等级上限 140。
  • 模板里写了「等级上限」的宠物(例如玛蕾菲雅、伊甸任务宠)升到上限后经验归零、不再升级。

出处:battle/battle.c BATTLE_AddProfit(nowexp *= 0.6);char/char_data.c CHAR_LevelUpCheck。

刚生成时的能力

怪物(也就是将来的宠物)生成时:

  1. 模板的四项成长各自加上 −2 ~ +2 的随机值,这组数就是这只宠物的成长值(之后升级都用它)。
  2. 再把 10 点随机分配到四项上(只用于计算初始能力)。
  3. 每项能力 = ((等级 − 1) × 每级点数 + 初始值) × 该项数值 ÷ 100(点)。

模板里「每级点数」写成 4.50 这样的小数,但服务端用整数读取,实际按 4 计算。

出处:char/enemy.c ENEMY_createEnemy(PARAM_CAL)。

每升一级

倍率 f = 随机(下限, 上限) ÷ 100     (按 rank 查表)
每项增加 = (成长值 + 本级随机分到的点) × f      (1/100 点,取整)
本级随机分到的点:10 点随机分到四项
rank 倍率范围
0 4.50 ~ 5.00
1 4.70 ~ 5.20
2 4.90 ~ 5.40
3 5.10 ~ 5.60
4 5.30 ~ 5.80
5 5.50 ~ 6.00

可以看到,成长档总和低(rank 高)的宠物每级倍率反而更大,算是一种补偿;但成长值本身低,总体还是成长档高的宠物更强。

换算成点数:成长值 25 的一项,每级大约加 (25 + 2.5) × 4.75 ÷ 100 ≈ 1.3 点。

出处:char/char_data.c CHAR_PetLevelUp;网页版 game/rules.ts petLevelUp。

五、宠物技能

技能栏

宠物的技能栏数由模板的 slot 决定(最多 7 栏),宠物详细页的「技能」页只列出这么多栏。天生技能来自模板的技能 1~7。转生后的宠物一律变成 7 栏。

技能栏里的技能在战斗中由你选择使用;技能页里灰色的是野外不能用的。野外常用的是加工和料理(见料理与合成)。

在宠物技能店学技能

找各村宠物店里的「饲育员」对话:

  1. 从列表选技能(买不起的显示灰色);
  2. 选要学的宠物;
  3. 选放在第几栏——原来那一栏的技能会被覆盖;
  4. 确认后扣钱。

价格 = 技能基础学费 × 该店倍率(取整)。服务端不检查宠物是否已经会这个技能,所以同一技能可以学在两栏,注意别花冤枉钱。

出处:npc/npc_petskillshop.c NPC_PetSkillShop_DoPetSkill、NPC_PetSkillMakeStr;data/petskill.txt 第 11 栏 COST。

技能基础学费:

技能 学费 技能 学费
待机 500 背水之战其之1 2000
攻击 1000 背水之战其之2 2500
防御 1000 毒攻击 2500
破除防御 1500 猛毒攻击 4000
连续攻击 2000 石化攻击 2300
三段攻击 5000 混乱攻击 2000
忠犬 2500 泥醉攻击 2000
突击 4000 催眠攻击 2500
双重突击 8000 地球一周 2000
一击必杀 2500 旅程伙伴 3000
不防守战法 3000 加工 1500
料理 1000

各地宠物技能店(倍率 1.2 表示价格 ×1.2):

地点(坐标) NPC 倍率 教的技能(编号)
萨姆吉尔的宠物店(18,13) 超级饲育员 1.0 0、1、2、3、10、50、100、200、201
师傅的房间(28,24) 道场技屋 1.0 11 三段攻击
柯奥的宠物店(14,13) 饲育员 1.0 0、1、2、3、10、40、80、130
柯尔克的宠物店(18,13) 饲育员 1.2 0、1、2、3、10、50、80、100、120、130
霍特尔的宠物店(13,13) 饲育员 1.1 0、1、2、3、50、61、130
卡坦的宠物店(19,18) 饲育员 1.2 0、1、2、3、51、120
玛丽娜丝的宠物店(18,14) 饲育员 1.0 0、1、2、3、10、51、200、201
加加的宠物店(16,13) 饲育员 1.0 0、1、2、3、10、50、200、201
师傅的房间(28,23) 道场技屋 1.0 31 双重突击
塔姆塔姆的宠物店(18,17) 饲育员 1.1 0、1、2、10、40、80、130
多多的宠物店(13,13) 饲育员 1.2 0、1、2、3、10、51、120
乌鲁力的宠物店(13,14) 饲育员 1.1 0、1、2、3、50、80、100
奇喀喀的宠物店(18,14) 饲育员 1.2 0、1、2、3、50、61、130
卡鲁它那的宠物店(18,15) 饲育员 1.0 0、1、2、3、10、50、100、200、201
福尔德的宠物店兼肉店(23,13) 饲育员 1.2 2、10、20、50、51、130
大厅 东(11,10) 达那的饲育员 1.2 20、40、60、61、120、130
迷幻洞窟最底层(18,34) 欺骗的特技店 1.2 90 混乱攻击
SBC本部(41,51) 高级饲育员 1.0 10、20、30、40、50、51、120、130、150
SBC本部(43,51) 高级饲育员 1.0 0、1、2、3、60、61、80、90、100、110、200、201
JBA本部(20,4) 高级饲育员 1.0 10、20、30、40、50、51、120、130、150
JBA本部(22,4) 高级饲育员 1.0 0、1、2、3、60、61、80、90、100、110、200、201

出处:data/npc/genout/shop_*.create 与 genout/psks_*(pet_skill、skill_rate)。

技能在战斗中的具体效果见战斗系统。

六、宠物转生

_PET_TRANS 与 _PET_2TRANS 都已开启:宠物最多可以转生 2 次。主持者是漆黑的洞窟 地下20楼(31,28)的精灵王(和人物转生是同一个 NPC,见转生)。

条件

条件 说明
人物等级 80 以上
任务事件 事件 4、69、70 都已完成
玛蕾菲雅 身上带一只属于你自己、正好 79 级的玛蕾菲雅。第一次转生可以用718 号或401 号玛蕾,第二次转生只能用 401 号
要转生的宠物 80 级以上;不能是玛蕾菲雅本身;转生次数 0 或 1;不能正在骑乘

「属于自己」指宠物身上记录的主人帐号和名字与你一致。718 号玛蕾菲雅被别人从地上捡走时不会改记主人,所以从别人那里得来的这种玛蕾不能用来转生(她对话时也会说「陌生人?我不认识你呀!」)。

出处:npc/npc_transmigration.c NPC_PetTransManCheck、NPC_PetTransMan_selectWindow、NPC_PetTransManStatus;char/char_item.c(拾取时 718 号不改主人)。

玛蕾菲雅本身有等级封印:模板等级上限是 10,要靠和她对话触发的一连串事件把上限逐步提到 15、20……75、79(data/npc/pettalk),任务流程见任务。

转生结果

转生后:

  • 宠物回到 1 级,经验清零,HP 补满;
  • 技能保留,技能栏变成 7 栏;
  • 按下面的公式重算成长值和 rank,再按 1 级重算四项能力;
  • 宠物转生次数 +1,等级上限解除;
  • 身上与所用玛蕾同编号的所有玛蕾菲雅都被收走;
  • 背包里的地/水/火/风灵项链(1962919632、1967219687)与灵石(19625~19628)一并被收走;
  • 设定任务事件 71。

新成长值公式

玛蕾总成长 T1 = 玛蕾四项成长值之和(最多算 150)
宠物总成长 T2 = 要转生宠物四项成长值之和
Fx = int((5 − 宠物rank) × 1.2) + 5        (rank 0→11,1→9,2→8,3→7,4→6,5→5)
玛蕾加成 = (T1÷100)^5 × 1.3,不足 1 时为 0(取整)
ans = 玛蕾加成 + T2 + (宠物Lv − 100) ÷ Fx     (宠物Lv 超过 130 按 130;整数除法)
ans 上限:第一次转生 150,第二次转生 200

新的某项成长 = ans × (玛蕾该项 + 宠物该项×4) ÷ (T1 + T2×4),再 ±2 随机

新的 rank 按新成长总和重排:≥130 → 0,≥100 → 1,≥95 → 2,≥85 → 3,≥80 → 4,其余 5。转生后的新能力 = 模板初始值 × 新成长值(再加 10 点随机分配),也就是一只成长档更高的 1 级宠物。

举例:玛蕾四项成长合计 100、要转生的宠物合计 100(rank 1)、等级 120:玛蕾加成 = 1^5×1.3 = 1,等级项 = 20÷9 = 2,ans = 1 + 100 + 2 = 103,成长总和从 100 提高到约 103(另有 ±2 随机)。宠物等级越高、玛蕾成长越高,提升越多。

出处:char/char_data.c NPC_PetTransManGetAns;char/enemy.c GetNewPet。

关于转生后能否骑乘:精灵王的台词说「宠物进行二次转生后就无法骑乘」,但服务端骑乘检查写的是「转生次数大于 2 才不能骑」,而宠物最多只能转 2 次,所以按代码二转宠仍然能骑(见骑乘)。

七、宠物邮件

宠物可以帮你把信(和一件道具)送给名片簿里的朋友。

怎么寄

  1. 在宠物列表里把一只宠物的状态切换到「邮件」(状态按钮循环:休息 → 待机 → 战斗 → 邮件/骑乘)。
  2. 打开邮件(名片簿),选择收件人,选「宠物邮件」,写信并可以附带一件道具(只有允许宠物邮寄的道具才能附带)。
  3. 宠物飞走,过一段时间出现在对方身边,把信和道具交给对方,然后飞回来。

寄送条件

  • 收件人必须在线,而且在你的名片簿里;
  • 你不能在战斗中或交易中;
  • 骑乘中的宠物、家族守护兽、有等级封印的特殊宠物(例如未解封的玛蕾菲雅)不能寄;
  • 英雄战场(地图 82008213)、限时地图 3001730021 不能寄,对方在 30017~30021 也不行;
  • 同时在外送信的宠物不能超过 7 只;寄给同一个人且未送达的信超过 5 封时不能再寄;两次寄送至少间隔 6 秒;全服在途宠物邮件上限 1000 封。

出处:char/petmail.c PETMAIL_sendPetMail(_PETMAIL_DEFNUMS、_MAP_TIME)。

送信过程

  • 飞行时间:等待 (10 − 敏捷÷25) × 3 秒(敏捷÷25 按整数、限制在 0~10),也就是敏捷 250 以上几乎立刻出发、敏捷很低最多等 30 秒,之后宠物直接出现在收件人身边。
  • 收件人在交易或战斗中时宠物会等;等超过 660 秒、或者收件人下线超过 30 秒,信件作废,宠物返回。
  • 对方的名片簿里没有你:宠物到了,但信和道具都送不出去(「由於对方没有您的名片,所以信件被退回了」),道具随宠物带回。
  • 对方道具栏满时,道具会被放在地上。
  • 送达 10 秒后宠物返回,回到你身边后自动回到宠物栏;宠物栏满时会提示「宠物栏已满!无法自动拾回邮件宠物!」,宠物留在你身边,你要在 3 分钟内自己捡回来,否则它会变成无主的宠物被系统收走。
  • 宠物返回时你不在线:它最多等 30 分钟,之后回到你寄信时的位置,身上的道具掉在地上,再过 3 分钟没人捡就被收走。

出处:char/petmail.c PETMAIL_getIdleTime、PETMAIL_IdleProc1~5、PETMAIL_returnMail、CHAR_AutoPickupMailPet(PETMAIL_IDLETIME 10、PETMAIL_IDLETIMEOUT 30、PETMAIL_BATTLETIMEOUT 660、PETMAIL_IDLE_RETURNOWNER 1800、PETMAIL_IDLEDISCARD 180)。

八、丢弃、捡拾与溜宠

丢弃宠物(放生)

在宠物列表里右键点宠物名字就会把它放到地上(2.5 没有确认框,小心误点)。宠物会落在你面前一格,不能放时依次试其他方向,都不行就放在脚下。

不能丢的情况:战斗中、交易中、家族守护兽(「家族守护兽无法丢出!」)、骑乘中的宠物(「骑乘中的宠物无法丢出!」);周围物件或角色超过 80 个时「这里已经太拥挤了,不能再丢了。」

出处:char/pet.c _PET_dropPet(_AVID_TRADETRYBUG、_DROPCHECK2)。

地上的宠物会存在多久

地上的宠物超过 Petdeletetime 秒没人捡就会被删除。这个值由服务端设定文件决定,源码里没有默认值(不设定就是 0);本服设定为 1800 秒(30 分钟)。

出处:char/pet_event.c PET_CHECKFreePetIsIt;configfile.c Petdeletetime。

谁能捡

  • 原版默认(PETUP 未设定):只有宠物原来的主人能捡回,别人捡不起来。本服 setup.cf 设定了 PETUP=1:任何人都能捡走地上的宠物——丢弃宠物前想清楚。
  • 宠物栏满时捡不起来。
  • 宠物比你高 5 级以上、而你还没转生时捡不起来(装备万兽之戒可以无视)。
  • 捡起后宠物的主人改记为你(718 号玛蕾菲雅除外,她一直记着原主人)。

出处:char/char_item.c CHAR_PickUpItemFXY 宠物分支;configfile.c getPetup。

溜宠(宠物跟随)

使用「宠物项圈」并选择一只宠物,宠物会从宠物栏出来,跟在你身后走:

道具 可带宠物等级
宠物项圈 Lv 1 40 级以下
宠物项圈 Lv 2 80 级以下
宠物项圈 Lv 3 140 级以下
宠物项圈 Lv 4 200 级以下(全部)
宠物项圈 Lv 5 300 级以下(全部)
  • 项圈不会消耗。宠物等级超过项圈等级时「道具的等级不足!」;同时只能溜一只(「请先收回放出的宠物!」)。
  • 家族守护兽、骑乘中的宠物不能溜。
  • 收回:对着它「捡」就收回宠物栏,只有主人能收;跟着走满 1000 步、或下线时会自动收回。
  • 放出满 60 分钟时系统尝试自动收回,宠物栏满收不回就提示「溜宠太久,宠物走失了!!」,宠物被系统扣留。

出处:item/item_event.c ITEM_petFollow;char/pet.c PET_dropPetFollow;char/char_walk.c;char/pet_event.c PET_Watchfunc(PETFOLLOW_TIME 60*60、_PET_LOSTPET)。

九、宠物数量、寄放与交易

项目 上限
身上携带 5 只
宠物栏中「待机」 3 只(原版客户端限制)
出战 1 只
骑乘 1 只
宠物店寄放 5 + 转生次数×2 只,最多 15 只

出处:include/char_base.h CHAR_MAXPETHAVE、CHAR_MAXPOOLPETHAVE(_ADD_POOL_ITEM 开启为 15);char/char_base.c CHAR_getCharPoolPetElement。

宠物店

各村宠物店的店员可以买下你的宠物,也可以寄放、领回宠物:

  • 寄放 / 领回:每次收费 50 + 人物等级×4 石币。
  • 卖宠物价格:
基础 = (宠物Lv² × 10 − 捕获时Lv² × 10 + 宠物Lv × 10) × 稀有系数
       (转生过的宠物「捕获时Lv² × 10」一项固定为 10)
稀有系数:普通 1,稀有 5,更稀有 8
价格 = 基础 × 店铺倍率 × ((人物魅力 + 宠物忠诚) ÷ 2) ÷ 100
       (魅力+忠诚 小于 20 时按 20 算;店铺指定的特殊宠物改用特殊倍率,默认 1.2)

出处:npc/npc_petshop.c(NPC_GETPOOLCOST、PETCOST)。

交易宠物

宠物可以放进交易窗交换,但:骑乘中的宠物、家族守护兽不能交易;对方还没转生时,不能把比对方高 5 级以上的宠物交给他(对方装备万兽之戒除外)。

出处:char/trade.c。

改名

宠物详细页的「改名」:宠物从没被改过名、或者是你自己改的名,才能再改;被别的帐号改过名的宠物显示不能改名。家族守护兽不能改名。

出处:char/char.c 宠物改名函数(检查宠物记录的 CDKEY)。

十、相簿(宠物图鉴)

按 Ctrl+A 或任务栏的「相簿」打开。相簿共有 224 个格子,对应 2.5 客户端的宠物种族表(按宠物的图像区分,同一种族的不同模板算同一格)。

  • 见过:战斗中出现过的怪物、你和队友带的宠物,都会自动登记成「见过」(灰色,不能点)。
  • 照相:在宠物详细页按「照相」,把这只宠物当时的名字、等级、HP、攻防敏和属性记进相簿(显示 NEW)。同一格再照会覆盖。不在种族表里的宠物不能照相。
  • 点选已照相的格子可以查看记录的数值,NEW 标记随之消失。

出处:客户端 systeminc/petName.h PetAlbumTbl、menu.cpp CheckNewPet;网页版 game/pet-album.ts、game/world.ts albumSeen / albumSnap。

十一、网页版说明

  • 网页版的捕捉、忠诚度、升级成长、宠物技能店、宠物转生、宠物邮件、丢弃/捡拾、溜宠都按上述原版代码移植(packages/tools/src/game/rules.ts、world.ts、sa-server.ts)。
  • 管理后台可以调整宠物经验和捕获率倍数,属于本服设定,不是原版数值。
  • 地上的宠物在网页版会写入存档文件,服务器重启后仍在原地(原版重启会消失),放置时间照旧计算。
  • 溜宠满 60 分钟又收不回时,原版(_PET_LOSTPET 开启)会把宠物扣留删除;网页版目前是让它变成普通的地上宠物,之后照 30 分钟的规则消失。
  • 原版 2.5 没有编译宠物融合功能,本文不涉及。