坐骑装备分鞍具与蹄铁两类:鞍具提升坐骑的负载与速度上限,蹄铁提升坐骑的冲击伤害。坐骑装备与主人装备分离存储,坐骑的装备栏独立管理,卸下坐骑时装备不丢失。
local MOUNT_SLOTS = { saddle = 1, horseshoe = 2 }
function MountEquip.wear(actor, mountIdx, slot, itemId)
local mount = actor:GetMount(mountIdx)
if not mount then return false, "坐骑不存在" end
local def = MOUNT_EQUIP_DEF[itemId]
if not def or def.slot ~= slot then return false, "装备位置不符" end
if mount.equip[slot] then return false, "该位置已有装备" end
if not actor:TakeItemByName(itemId, 1) then return false, "缺少装备" end
mount.equip[slot] = itemId
MountRecalc(actor, mountIdx)
return true
end
鞍具与蹄铁分别占独立的装备位,互不冲突。穿戴前校验装备类型与位置的匹配,不匹配的装备拒绝穿戴。装备穿戴后坐骑的属性即时重算,速度与负载的变化实时反馈到面板。
function MountRecalc(actor, mountIdx)
local mount = actor:GetMount(mountIdx)
local speedBonus, loadBonus = 0, 0
for _, itemId in pairs(mount.equip) do
local def = MOUNT_EQUIP_DEF[itemId]
speedBonus = speedBonus + (def.speed or 0)
loadBonus = loadBonus + (def.load or 0)
end
mount.totalSpeed = MOUNT_BASE_SPEED + speedBonus
mount.totalLoad = MOUNT_BASE_LOAD + loadBonus
end
每件装备的加成独立累加,速度与负载分开计算互不干扰。装备的品质决定加成的幅度,品质越高的装备加成越大。坐骑装备的更换规则:旧装备自动卸下返回背包,新装备即刻生效,不需要手动卸下。坐骑装备的界面在坐骑面板内嵌,装备位的图标与加成明细一目了然。
坐骑装备的穿戴率与属性加成的分布统计,穿戴率低于三成说明产出或引导需要优化。
装备的属性计算曾经把鞍具的速度加成重复计算了两次(穿戴与重算各算一次),属性来源的去重逻辑补齐后修复。蹄铁的耐久消耗曾经与主人装备的耐久共享,坐骑装备独立的耐久体系分离后互不影响。
坐骑装备的产出绑定坐骑副本的掉落,装备的获取与坐骑的养成同源。装备的品阶与坐骑等级挂钩:高阶鞍具需要坐骑等级达标才能穿戴,成长的门槛分阶段释放。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 跨服开放后,各服的世界频道各自为政,热门话题被服务器墙分隔。话题聚合方案:带话题标签的消息汇聚到跨服频道…
实战应用:用在哪里 运营要的是“这周谁打了副本、谁在挂机、谁在交易”,不是每天几万条的原始行为流。周报摘要方案:行为流水按玩…
实战应用:用在哪里 战斗中打字报点来不及,快捷短语轮盘让玩家按住轮盘键滑向常用语松手即发:集合、撤退、求奶、集火左,八条槽位…
实战应用:用在哪里 部分玩家用手柄玩传奇,键位习惯各不相同。按键映射方案:手柄的摇杆、十字键、肩键映射到游戏动作,映射表玩家…
实战应用:用在哪里 模块级的计数器、限流器都面临一个问题:状态存全局容易被别的代码改坏。闭包把状态封在函数的作用域里,外部只…
实战应用:用在哪里 师门任务的日常共同任务做成师徒双人副本:师父带徒弟进入专属关卡,关卡机制要求两人配合——师父扛伤开门、徒…