宠物
宠物是石器时代的核心:它陪你战斗、可以骑、能帮你寄信,还能学技能和转生。本文按「抓到 → 养大 → 学技能 → 转生 → 日常使用」的顺序讲,每节先说怎么做,再给出原版服务端(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.cCHAR_initcharWorkInt;网页版game/rules.tscompliance。
宠物的「排名」(rank)
模板四项成长的总和决定宠物的 rank,rank 影响升级时的成长倍率(第四节)和野怪经验:
| 四项成长总和 | rank |
|---|---|
| ≥ 100 | 0 |
| 95 ~ 99 | 1 |
| 90 ~ 94 | 2 |
| 85 ~ 89 | 3 |
| 80 ~ 84 | 4 |
| < 80 | 5 |
出处:
char/enemy.cENEMY_getRank。
二、捕捉宠物
怎么抓
- 在野外遇到可以捕捉的怪物(
enemy.txt里标记了可捕捉的才行,剧情怪、大部分 BOSS 不行)。 - 战斗指令栏选「捕捉」,再点要抓的怪。
- 成功的话怪物被拖回来,直接进入你的宠物栏;失败则怪物生气,什么也没发生。
捕捉之前先看清楚:
- 宠物栏必须有空位(身上最多 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.cBATTLE_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.cITEM_useCaptureUp;battle/battle_item.cITEM_useCaptureUp_Battle;battle/battle_magic.cBATTLE_MultiCaptureUp。
需要道具的怪物
以下怪物必须身上带着指定道具才能抓,抓到后这些道具全部被收走(同名的全部删除):
| 怪物 | 需要的道具 |
|---|---|
| 巨大玛恩摩 | 富商的货物 |
| 卡特利奴 | 加特利奴喜爱的食物 |
| 夏普德 | 海蓝之棒、海蓝之兜、海蓝之铠(三件都要) |
代码里还为艾蜜、雷诛、讦谯龙(伊甸任务)以及佩露夏、嘎吱拉、斑尼迪克指定了道具(编号 20219、20223、20222、20253、20247、20259),但这些编号在 2.5 的 itemset.txt 里并不存在,所以按原版数据这 6 种实际上抓不到。
出处:
battle/battle_event.cNeedEnemy[]、BATTLE_CaptureItemCheck、BATTLE_CaptureItemDelAll。_NEED_ITEM_ENEMY会尝试读取data/needitemeneny.txt,原版数据没有这个文件,读取失败后保持上表的内置值。
抓到的宠物是什么样
- 等级、四项能力、成长档、技能都照搬战斗中那只怪(不会重新随机),HP 也保持被打残的状态,记得补血。
- 宠物会记下「捕获时的等级」,卖给宠物店时用来算价钱。
- 刚抓到的宠物忠诚度最多 60:如果按公式算出来超过 60,系统会给它一个负的「忠诚修正」把它压回 60(见第三节)。
出处:
char/pet.cPET_createPetFromCharaIndex;battle/battle_event.cBATTLE_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.cCHAR_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.hAI_FIX_*;battle/battle.cBATTLE_AddProfit、BATTLE_UltimateExtra、BATTLE_NormalDeadExtra;battle/battle_event.cBATTLE_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.cBATTLE_PetLoyalCheck、battle/battle_event.cBATTLE_LostEscape。
忠诚度还关系到:骑乘需要忠诚 100(见骑乘),宠物店卖宠物的价格也参考忠诚(第九节)。
四、成长与升级
宠物怎么拿经验
- 只有出战中的宠物在战斗胜利后拿经验,计算方式和人物一样:每打倒一个敌人得到该敌人的经验,宠物比敌人高 5 级以上时按等级差打折(详见战斗系统)。
- 骑乘中的宠物也拿经验,但只有同样计算结果的 60%。
- 宠物和人物用同一张升级经验表;等级上限 140。
- 模板里写了「等级上限」的宠物(例如玛蕾菲雅、伊甸任务宠)升到上限后经验归零、不再升级。
出处:
battle/battle.cBATTLE_AddProfit(nowexp *= 0.6);char/char_data.cCHAR_LevelUpCheck。
刚生成时的能力
怪物(也就是将来的宠物)生成时:
- 模板的四项成长各自加上 −2 ~ +2 的随机值,这组数就是这只宠物的成长值(之后升级都用它)。
- 再把 10 点随机分配到四项上(只用于计算初始能力)。
- 每项能力 = ((等级 − 1) × 每级点数 + 初始值) × 该项数值 ÷ 100(点)。
模板里「每级点数」写成 4.50 这样的小数,但服务端用整数读取,实际按 4 计算。
出处:
char/enemy.cENEMY_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.cCHAR_PetLevelUp;网页版game/rules.tspetLevelUp。
五、宠物技能
技能栏
宠物的技能栏数由模板的 slot 决定(最多 7 栏),宠物详细页的「技能」页只列出这么多栏。天生技能来自模板的技能 1~7。转生后的宠物一律变成 7 栏。
技能栏里的技能在战斗中由你选择使用;技能页里灰色的是野外不能用的。野外常用的是加工和料理(见料理与合成)。
在宠物技能店学技能
找各村宠物店里的「饲育员」对话:
- 从列表选技能(买不起的显示灰色);
- 选要学的宠物;
- 选放在第几栏——原来那一栏的技能会被覆盖;
- 确认后扣钱。
价格 = 技能基础学费 × 该店倍率(取整)。服务端不检查宠物是否已经会这个技能,所以同一技能可以学在两栏,注意别花冤枉钱。
出处:
npc/npc_petskillshop.cNPC_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.cNPC_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,等级上限解除;
- 身上与所用玛蕾同编号的所有玛蕾菲雅都被收走;
- 背包里的地/水/火/风灵项链(19629
19632、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.cNPC_PetTransManGetAns;char/enemy.cGetNewPet。
关于转生后能否骑乘:精灵王的台词说「宠物进行二次转生后就无法骑乘」,但服务端骑乘检查写的是「转生次数大于 2 才不能骑」,而宠物最多只能转 2 次,所以按代码二转宠仍然能骑(见骑乘)。
七、宠物邮件
宠物可以帮你把信(和一件道具)送给名片簿里的朋友。
怎么寄
- 在宠物列表里把一只宠物的状态切换到「邮件」(状态按钮循环:休息 → 待机 → 战斗 → 邮件/骑乘)。
- 打开邮件(名片簿),选择收件人,选「宠物邮件」,写信并可以附带一件道具(只有允许宠物邮寄的道具才能附带)。
- 宠物飞走,过一段时间出现在对方身边,把信和道具交给对方,然后飞回来。
寄送条件
- 收件人必须在线,而且在你的名片簿里;
- 你不能在战斗中或交易中;
- 骑乘中的宠物、家族守护兽、有等级封印的特殊宠物(例如未解封的玛蕾菲雅)不能寄;
- 英雄战场(地图 8200
8213)、限时地图 3001730021 不能寄,对方在 30017~30021 也不行; - 同时在外送信的宠物不能超过 7 只;寄给同一个人且未送达的信超过 5 封时不能再寄;两次寄送至少间隔 6 秒;全服在途宠物邮件上限 1000 封。
出处:
char/petmail.cPETMAIL_sendPetMail(_PETMAIL_DEFNUMS、_MAP_TIME)。
送信过程
- 飞行时间:等待 (10 − 敏捷÷25) × 3 秒(敏捷÷25 按整数、限制在 0~10),也就是敏捷 250 以上几乎立刻出发、敏捷很低最多等 30 秒,之后宠物直接出现在收件人身边。
- 收件人在交易或战斗中时宠物会等;等超过 660 秒、或者收件人下线超过 30 秒,信件作废,宠物返回。
- 对方的名片簿里没有你:宠物到了,但信和道具都送不出去(「由於对方没有您的名片,所以信件被退回了」),道具随宠物带回。
- 对方道具栏满时,道具会被放在地上。
- 送达 10 秒后宠物返回,回到你身边后自动回到宠物栏;宠物栏满时会提示「宠物栏已满!无法自动拾回邮件宠物!」,宠物留在你身边,你要在 3 分钟内自己捡回来,否则它会变成无主的宠物被系统收走。
- 宠物返回时你不在线:它最多等 30 分钟,之后回到你寄信时的位置,身上的道具掉在地上,再过 3 分钟没人捡就被收走。
出处:
char/petmail.cPETMAIL_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.cPET_CHECKFreePetIsIt;configfile.cPetdeletetime。
谁能捡
- 原版默认(
PETUP未设定):只有宠物原来的主人能捡回,别人捡不起来。本服 setup.cf 设定了PETUP=1:任何人都能捡走地上的宠物——丢弃宠物前想清楚。 - 宠物栏满时捡不起来。
- 宠物比你高 5 级以上、而你还没转生时捡不起来(装备万兽之戒可以无视)。
- 捡起后宠物的主人改记为你(718 号玛蕾菲雅除外,她一直记着原主人)。
出处:
char/char_item.cCHAR_PickUpItemFXY宠物分支;configfile.cgetPetup。
溜宠(宠物跟随)
使用「宠物项圈」并选择一只宠物,宠物会从宠物栏出来,跟在你身后走:
| 道具 | 可带宠物等级 |
|---|---|
| 宠物项圈 Lv 1 | 40 级以下 |
| 宠物项圈 Lv 2 | 80 级以下 |
| 宠物项圈 Lv 3 | 140 级以下 |
| 宠物项圈 Lv 4 | 200 级以下(全部) |
| 宠物项圈 Lv 5 | 300 级以下(全部) |
- 项圈不会消耗。宠物等级超过项圈等级时「道具的等级不足!」;同时只能溜一只(「请先收回放出的宠物!」)。
- 家族守护兽、骑乘中的宠物不能溜。
- 收回:对着它「捡」就收回宠物栏,只有主人能收;跟着走满 1000 步、或下线时会自动收回。
- 放出满 60 分钟时系统尝试自动收回,宠物栏满收不回就提示「溜宠太久,宠物走失了!!」,宠物被系统扣留。
出处:
item/item_event.cITEM_petFollow;char/pet.cPET_dropPetFollow;char/char_walk.c;char/pet_event.cPET_Watchfunc(PETFOLLOW_TIME 60*60、_PET_LOSTPET)。
九、宠物数量、寄放与交易
| 项目 | 上限 |
|---|---|
| 身上携带 | 5 只 |
| 宠物栏中「待机」 | 3 只(原版客户端限制) |
| 出战 | 1 只 |
| 骑乘 | 1 只 |
| 宠物店寄放 | 5 + 转生次数×2 只,最多 15 只 |
出处:
include/char_base.hCHAR_MAXPETHAVE、CHAR_MAXPOOLPETHAVE(_ADD_POOL_ITEM开启为 15);char/char_base.cCHAR_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.hPetAlbumTbl、menu.cppCheckNewPet;网页版game/pet-album.ts、game/world.tsalbumSeen/albumSnap。
十一、网页版说明
- 网页版的捕捉、忠诚度、升级成长、宠物技能店、宠物转生、宠物邮件、丢弃/捡拾、溜宠都按上述原版代码移植(
packages/tools/src/game/rules.ts、world.ts、sa-server.ts)。 - 管理后台可以调整宠物经验和捕获率倍数,属于本服设定,不是原版数值。
- 地上的宠物在网页版会写入存档文件,服务器重启后仍在原地(原版重启会消失),放置时间照旧计算。
- 溜宠满 60 分钟又收不回时,原版(
_PET_LOSTPET开启)会把宠物扣留删除;网页版目前是让它变成普通的地上宠物,之后照 30 分钟的规则消失。 - 原版 2.5 没有编译宠物融合功能,本文不涉及。