骑乘
骑上宠物后,人物在地图上会换成「人骑宠」的造型,战斗中人和骑宠一起行动、一起分担伤害。想骑宠物要先去骑乘训练师那里上课,还要有一只和你的造型相配、忠诚度满 100 的宠物。
本文依据 2.5 原版服务端源码(
char/family.cFAMILY_RidePet、char/char_base.c骑宠表、npc/npc_riderman.c、battle/battle_event.c)与数据(data/npc/family/riderman.*、data/leaderride.txt、data/ride.txt),并以include/version.h实际打开的功能为准:_NEW_RIDEPETS、_RIDE_CF、_FM_LEADER_RIDE、_RIDEMODE_20、_ITEM_RIDE、_VIP_RIDE、_EVERYONE_RIDE、_PET_2TRANS开启;_RIDELEVEL、_GM_METAMO_RIDE未开启。宠物本身的养成见宠物。
一、怎么骑
- 打开宠物窗口(Ctrl+P),点宠物左边的状态按钮。按钮在「休息 → 待机 → 战斗 → 邮件/骑乘」之间循环;符合骑乘条件的宠物会切到「骑乘」,人物立即换成骑乘造型。
- 再点一次骑乘中宠物的状态按钮就下骑,人物恢复原来的造型。
- 战斗中、交易中不能上骑(「战斗中不可骑宠!」「交易中不可骑宠!」);乌力化状态下也不能骑。
骑乘中的宠物不能同时作为出战宠物,也不能寄宠物邮件、不能丢弃、不能转生。
二、骑乘训练师
新角色的「骑乘等级」是 −1,什么都骑不了,必须先找骑乘训练师上课。四大村的庄园里各有一位:
| 地点 | 坐标 |
|---|---|
| 萨姆吉尔庄园 | (61,45) |
| 玛丽娜丝的庄园 | (55,16) |
| 加加村的庄园 | (50,21) |
| 卡鲁它那庄园 | (16,35) |
出处:
data/npc/family/riderman.create。另有一位「特级骑乘训练师」(萨姆吉尔村长家)在数据里被注释掉了,不会出现。
和他对话可以选「关于骑乘宠物」「查询可骑乘的宠物」「学习骑乘宠物」。「查询可骑乘的宠物」会按你的人物造型列出下面第四节对照表里你能骑的宠物。
课程与学费
| 课程 | 学费 | 学完后的骑乘等级 | 能骑的宠物 | 前置 |
|---|---|---|---|---|
| 初级班 | 5,000 石币 | 40 | Lv40 以下 | 无 |
| 中级班 | 10,000 石币 | 80 | Lv80 以下 | 初级班 |
| 高级班 | 15,000 石币 | 120 | Lv120 以下 | 中级班 |
| 特级班 | 20,000 石币 | 200 | 全部等级 | 高级班 |
- 必须按顺序学,跳级会被拒绝(「你必须先学过初级班才能来中级班唷。」)。已经学过的课不用再学。
- 学费不足时会提示需要多少石币,不扣钱。
- 学费的 1/5 会进入占领该村庄园的家族的家族资金。
出处:
npc/npc_riderman.cNPC_RidermanWindowTalked;data/npc/family/riderman.conf(takegold)。新角色的骑乘等级来自char/char.c建角时的getRidePetLevel()(configfile.c):setup.cf 没设RIDEPETLEVEL时为 −1。私服可以改这个值,例如设成 200 就等于出生即学会特级班。
三、骑乘条件
点「骑乘」时,服务端按下面的顺序检查,任一条不满足就骑不上:
| 顺序 | 条件 | 不满足时 |
|---|---|---|
| 1 | 这只宠物不是出战宠物,你也没有正在骑别的宠物 | 没有提示 |
| 2 | 宠物等级 ≤ 你的骑乘等级(40/80/120/200) | 「你目前只能骑乘等级小于N级的宠。」 |
| 3 | 宠物忠诚度 = 100 | 「该骑宠的忠小于100」 |
| 4 | 宠物等级 ≤ 人物等级 + 5 | 没有提示 |
| 5 | 宠物转生次数 ≤ 2 | 没有提示 |
| 6 | 能为你的造型找到对应的骑乘图(第四~七节) | 没有提示 |
出处:
char/family.cFAMILY_RidePet。
几点说明:
- 忠诚度 100 是最大的门槛。骑宠的驯服难度 modai 大多是 300,要靠人物等级、魅力和宠物升级累积的忠诚修正才能拉满(公式见宠物第三节)。人物转生后忠诚度会大幅提高。
- 原版客户端在送出骑乘请求前也会自己检查一遍:忠诚 ≥ 100、宠物等级 ≤ 骑乘等级、宠物等级 < 人物等级 + 5,再查客户端内置的骑宠表(是否包含第五、六节的特殊骑宠未确认)。所以用原版客户端时,宠物最多只能比人物高 4 级。
- 二转宠能不能骑:精灵王的台词说宠物二次转生后就无法骑乘,但服务端只拦「转生次数大于 2」,宠物最多只能转 2 次,所以按代码二转宠仍可骑。
- 现行
family.c里第 4 条之后多了一段无条件的「你最高只能骑宠等级比你大5级的宠。」并直接返回,会让任何人都骑不上;这是一段坏掉的调试改动,备份文件family.c.bak里没有。本文和网页版都按family.c.bak的逻辑。
四、人物造型 × 骑宠 对照表(ridePetTable)
人物有 12 种体型,每种 4 个颜色(图号末位 +0、+5、+10、+15)。每种体型都能骑一种「大型骑宠」(四色通用),另外每个颜色还能各骑一种「贝鲁系」骑宠:
| 体型(图号) | 大型骑宠(四色通用) | 颜色 1(+0) | 颜色 2(+5) | 颜色 3(+10) | 颜色 4(+15) |
|---|---|---|---|---|---|
| 小矮子(100000) | 布林帖斯 | 格鲁西斯 | 贝鲁卡 | 金格萨贝鲁 | 贝鲁伊卡 |
| 赛亚人(100020) | 邦恩多斯 | 贝鲁伊卡 | 格鲁西斯 | 贝鲁卡 | 金格萨贝鲁 |
| 辫子男孩(100040) | 布洛多斯 | 贝鲁伊卡 | 金格萨贝鲁 | 贝鲁卡 | 格鲁西斯 |
| 酷哥(100060) | 布拉奇多斯 | 格鲁西斯 | 贝鲁卡 | 金格萨贝鲁 | 贝鲁伊卡 |
| 熊皮男(100080) | 邦恩多斯 | 贝鲁伊卡 | 贝鲁卡 | 金格萨贝鲁 | 格鲁西斯 |
| 大个(100100) | 布拉奇多斯 | 格鲁西斯 | 贝鲁伊卡 | 金格萨贝鲁 | 贝鲁卡 |
| 小矮妹(100120) | 斯天多斯 | 贝鲁卡 | 金格萨贝鲁 | 贝鲁伊卡 | 格鲁西斯 |
| 熊皮妹(100140) | 斯天多斯 | 贝鲁卡 | 格鲁西斯 | 金格萨贝鲁 | 贝鲁伊卡 |
| 帽子妹(100160) | 布林帖斯 | 金格萨贝鲁 | 格鲁西斯 | 贝鲁卡 | 贝鲁伊卡 |
| 短发夹妹(100180) | 布洛多斯 | 贝鲁伊卡 | 金格萨贝鲁 | 格鲁西斯 | 贝鲁卡 |
| 手套女(100200) | 布拉奇多斯 | 格鲁西斯 | 贝鲁伊卡 | 贝鲁卡 | 金格萨贝鲁 |
| 辣妹(100220) | 邦恩多斯 | 金格萨贝鲁 | 贝鲁卡 | 格鲁西斯 | 贝鲁伊卡 |
出处:
char/char_base.cridePetTable[](_GM_METAMO_RIDE未开启的部分)。
- 表是按宠物的图像比对的,所以同一种宠物的不同版本(例如新手村送的「新手贝鲁卡」、各地的贝鲁卡)只要外观相同就都能骑。
- 表里还有两行特殊组合:外观为「鲁比」(图号 101177)的角色可以骑「吉比」、外观为「吉比」(101178)的角色可以骑「鲁比」,以及 6 行只对赛亚人族长造型(图号 100710/100715)有效的霍尔克、奇宝、瑞里西尔。一般玩家的外观不会是这些图号,用不到。
五、特殊骑宠(_NEW_RIDEPETS)
除了上表,2.5 还准备了 15 种「特殊骑宠」,每种对应 12 种体型各自的骑乘图(RideNoList)。人物身上有一组「已学会的特殊骑宠」旗标,学会了哪一种才能骑哪一种:
| 编号 | 骑宠 | 编号 | 骑宠 |
|---|---|---|---|
| RIDE_PET0 | 帖拉所伊朵 | RIDE_PET8 | 左迪洛斯 |
| RIDE_PET1 | 玛恩摩洛斯 | RIDE_PET9 | 巴朵兰恩 |
| RIDE_PET2 | 朵拉比斯 | RIDE_PET10 | 史卡鲁 |
| RIDE_PET3 | 拉奇鲁哥 | RIDE_PET11 | 罗多克雷 |
| RIDE_PET4 | 扬奇洛斯 | RIDE_PET12 | 奇宝 |
| RIDE_PET5 | 卡达鲁卡斯 | RIDE_PET13 | 霍尔克 |
| RIDE_PET6 | 卡卡金宝 | RIDE_PET14 | 瑞里西尔 |
| RIDE_PET7 | 格尔格 |
出处:
char/char_base.cRideCodeMode[]、RideNoList[];include/char_base.hRIDE_PET0..31(原版把 RIDE_PET10 与 RIDE_PET11 的位对调了:RIDE_PET10 = 1<<11、RIDE_PET11 = 1<<10)。
同样按宠物图像比对,同种骑宠的任何版本都算。可是按原版 2.5 的数据,玩家几乎没有途径学会这些旗标:
| 取得方式 | 原版 2.5 的实际情况 |
|---|---|
骑宠证书(ITEM_useLearnRideCode) |
函数写好了,但没有在道具函数表里登记,用了也「什么也没发生」;itemset.txt 里也没有这种道具 |
会员骑宠(_VIP_RIDE,ITEM_VipRide 赠送瑞里西尔) |
函数已登记,但 itemset.txt 里没有使用它的道具 |
ride.txt 自定义(_RIDE_CF) |
读取时要求逗号分隔、名称中间带空格(「豆 丁」等),而原版 ride.txt 是竖线分隔、名称无空格,一行都对不上,表格保持内置值 |
家族族长骑宠(_FM_LEADER_RIDE) |
唯一实际有效的途径,见下一节 |
2.0 骑宠模式(_RIDEMODE_20) |
由 setup.cf 的 RIDEMODE 控制,原版默认 0 = 关闭 |
六、族长骑宠(leaderride.txt)
拥有庄园的家族,成员可以按职位骑 leaderride.txt 里指定的特殊骑宠。每个庄园有三个位置:族长能用全部三个,长老能用后两个,一般成员只能用最后一个(申请中的不算成员)。
| 庄园(族长家地图) | 位置 1(族长) | 位置 2(族长、长老) | 位置 3(全体成员) | 实际可骑 |
|---|---|---|---|---|
| 萨姆吉尔(1041) | 26 | 28 | 9 | 巴朵兰恩 |
| 玛丽娜丝(2031) | 26 | 28 | 8 | 左迪洛斯 |
| 加加(3031) | 26 | 28 | 27 | 无 |
| 卡鲁它那(4031) | 26 | 28 | 29 | 无 |
| 伊甸、塔尔塔、尼克斯、弗烈顿、亚伊欧(5031~9031) | 26 | 28 | 10 | 罗多克雷 |
| 瑞尔亚斯(10031) | 26 | 28 | 24 | 无 |
表中的数字是旗标位:位 8 = 左迪洛斯、位 9 = 巴朵兰恩、位 10 = RIDE_PET11 罗多克雷(因为 10、11 两位对调),位 24~29 没有对应的宠物。所以:
- 占领萨姆吉尔庄园的家族,全体正式成员都能骑巴朵兰恩;
- 占领玛丽娜丝庄园的家族,全体正式成员都能骑左迪洛斯;
- 5031~9031 的庄园在 2.5 的庄园表里是否存在未确认。
骑乘的其他条件(骑乘等级、忠诚 100、等级差)照样要满足。判定看的是「家族拥有的庄园」,不是你当前所在的地图,所以在哪里都能骑。
出处:
data/leaderride.txt;char/char_base.cCHAR_FmLeaderRide_init、CHAR_FmLeaderRide;char/family.c.bakFAMILY_RidePet。
七、驯骑装备(_ITEM_RIDE)
_ITEM_RIDE 允许一种头部装备充当「驯骑装备」:道具的使用函数写成 ITEM_RIDE、参数写成「宠物图号|骑乘图号」。戴着它时,如果骑的宠物外观与参数里的宠物图号相同,就能用参数里的骑乘图骑上去(前面几节都找不到骑乘图时才会用到)。卸下这件头部装备会立刻下骑。
原版 2.5 的 itemset.txt 里没有任何使用 ITEM_RIDE 的道具,这个功能只是代码支持。
出处:
char/family.c.bakFAMILY_RidePet的_ITEM_RIDE段;char/char_item.c卸下装备时的_ITEM_RIDE段。
八、骑乘中的战斗
骑上宠物进入战斗后,人和骑宠算作一个整体(骑宠不会作为出战宠物另外站位)。
能力合成
开启了 _BATTLE_NEWPOWER,骑乘时的攻防敏这样合成:
| 数值 | 近战武器 / 空手 | 投掷武器(弓、回力镖、投掷石、投掷斧) |
|---|---|---|
| 攻击 | 人×0.8 + 宠×0.8 | 人 + 宠×0.4 |
| 防御 | 人×0.7 + 宠×0.7 | 人×0.7 + 宠×0.7 |
| 敏捷(自己出手时) | 人×0.2 + 宠×0.8 | 人×0.8 + 宠×0.2 |
| 敏捷(被攻击时) | 人×0.1 + 宠×0.9 | 人×0.1 + 宠×0.9 |
出处:
battle/battle_event.cBATTLE_adjustRidePet3A。
伤害分担与落马
受到攻击时,伤害按双方防御力分给人和骑宠:
人承受 = 伤害 × 骑宠防御 ÷ (人物防御 + 骑宠防御) + 1
骑宠承受 = 伤害 − 人承受 + 1
注意公式里人承受的比例用的是骑宠的防御:骑宠防御越高,人反而分到越多。骑宠 HP 已经是 0 时,伤害全部由人承受。
骑宠 HP 被打到 0 就会落马:人物恢复步行造型,战斗结束后骑乘状态解除。一些技能(例如媚惑术)命中时也会让人落马。
出处:
battle/battle_event.c伤害结算段(playerdamage/petdamage、CHAR_WORKPETFALL)、BATTLE_changeRideImage。
骑宠的经验
骑宠也会获得经验,按和人物同样的方式计算后再乘 60%,所以边骑边练也能让骑宠升级(升级同样会增加忠诚修正)。
出处:
battle/battle.cBATTLE_AddProfit(nowexp *= 0.6)。
九、网页版说明
- 网页版的骑乘逻辑按
family.c.bak移植(packages/tools/src/game/world.tstoggleRide/rideImageFor,特殊骑宠表在game/ride.ts),条件与提示文字和本文一致。 - 骑乘训练师的四个课程、学费、家族分成都照原版;「查询可骑乘的宠物」在网页版用消息窗列出你能骑的宠物名。
- 旧存档如果原本就在骑宠物,迁移时会自动给能骑这只宠物的最低一班骑乘等级,其余旧存档改为原版的 −1。
- 网页版采用原版默认值:新角色骑乘等级 −1、
RIDEMODE= 0(2.0 骑宠模式关闭)。原私服的 setup.cf 曾设定RIDEPETLEVEL=200、RIDEMODE=1、RIDELEVEL=10,网页版没有沿用(其中RIDELEVEL需要_RIDELEVEL,原版本来就没编译)。