称号合成让三个低阶称号合成一个高阶称号:合成链从青铜到王者共五级,每一级的合成需要三个低阶称号加金币。合成链的设计让称号有了复利的价值——低阶称号不再是无用的收藏品,而是高阶称号的原材料。
local TITLE_CHAIN = { bronze = 1, silver = 2, gold = 3, platinum = 4, diamond = 5 }
function TitleCompose.compose(actor, lowRank)
local highRank = lowRank + 1
local need = 3
local owned = 0
for _, tid in ipairs(actor.ownedTitles) do
if TITLE_RANK[tid] == lowRank then owned = owned + 1 end
end
if owned < need then return false, "低阶称号不足 " .. need .. " 个" end
-- 扣除三个低阶称号
local removed = 0
for i, tid in ipairs(actor.ownedTitles) do
if removed < need and TITLE_RANK[tid] == lowRank then
table.remove(actor.ownedTitles, i)
removed = removed + 1
end
end
Title.grant(actor, highRank)
return true
end
三个同级称号合成一个高阶称号,合成后的高阶称号继承最高的属性加成。合成的失败率为零:材料齐必出成品,确定性降低试错成本。称号的合成链从青铜到王者五级,每级的属性增幅翻倍。
function TitleCompose.inheritBest(actor, lowRank, highRank)
local bestAtk = 0
for _, tid in ipairs(actor.ownedTitles) do
if TITLE_RANK[tid] == lowRank then
bestAtk = math.max(bestAtk, TITLE_DEF[tid].atk)
end
end
TITLE_DEF[highRank].atk = math.max(TITLE_DEF[highRank].atk, bestAtk * 3)
end
高阶称号的属性不低于三个低阶称号中最好的那个的三倍,合成的收益确定。称号的合成在称号图鉴中标注配方,玩家能清楚看到合成链的路径。合成的确认弹窗列出消耗的称号与产出,信息的完整减少误操作。
合成链的各级称号产出与消耗的周对账,合成的数量分布反映玩家的养成阶段。
合成时称号的移除曾经按数组索引移除,移除一个后后续的索引偏移导致多删,倒序遍历或按值查找移除修复。合成的属性继承曾经取平均而不是取最高,玩家合成后的属性不升反降引发投诉,取最高的规则更符合直觉。
合成链的配方在称号图鉴中标注,玩家能看到从青铜到王者的完整路径。合成的金币消耗按等级递增,金币的消耗是合成的经济门槛。称号合成的播报只发王者级别,低级别的合成静默完成。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 跨服开放后,各服的世界频道各自为政,热门话题被服务器墙分隔。话题聚合方案:带话题标签的消息汇聚到跨服频道…
实战应用:用在哪里 运营要的是“这周谁打了副本、谁在挂机、谁在交易”,不是每天几万条的原始行为流。周报摘要方案:行为流水按玩…
实战应用:用在哪里 战斗中打字报点来不及,快捷短语轮盘让玩家按住轮盘键滑向常用语松手即发:集合、撤退、求奶、集火左,八条槽位…
实战应用:用在哪里 部分玩家用手柄玩传奇,键位习惯各不相同。按键映射方案:手柄的摇杆、十字键、肩键映射到游戏动作,映射表玩家…
实战应用:用在哪里 模块级的计数器、限流器都面临一个问题:状态存全局容易被别的代码改坏。闭包把状态封在函数的作用域里,外部只…
实战应用:用在哪里 师门任务的日常共同任务做成师徒双人副本:师父带徒弟进入专属关卡,关卡机制要求两人配合——师父扛伤开门、徒…