bayuMIR/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A1_一大陆/幸运项链.lua
2026-06-18 02:06:14 +08:00

139 lines
4.1 KiB
Lua

XingYunXiangLianOBJ = Up_BaseClass:new()
XingYunXiangLianOBJ._name = "XingYunXiangLianOBJ"
-- NPCID
XingYunXiangLianOBJ.id = { 11 }
for i, v in ipairs(XingYunXiangLianOBJ.id or {}) do
Npc.clicknpcCfg[v] = XingYunXiangLianOBJ
end
-- 配置文件
XingYunXiangLianOBJ.cfg = {
ps = {
"1.幸运项链<最大+4/FCOLOR=251>",
"2.幸运+2强化至+3时,<有20%几率+4/FCOLOR=249>",
"3.幸运<+3时/FCOLOR=250>,随机获得<暴击几率 + 1-3%/FCOLOR=251>",
"3.幸运<+4时/FCOLOR=250>,随机获得<暴击几率 + 3-5%/FCOLOR=251>",
"<4.幸运绑定人物,切换装备自动继承/FCOLOR=249>",
"<5.人物幸运超过+9,每多1点对怪增伤+1%/FCOLOR=249>",
},
xh = {
{ "元宝", 50, 1 },
},
cgl = { 50, 30, 15 },
}
---* 加入上线同步数据
Player.sycCfg[XingYunXiangLianOBJ._name] = XingYunXiangLianOBJ.cfg
function XingYunXiangLianOBJ:up(actor, p1, p2, p3, data)
if not Npc.CheckNPCRange(actor, 11) then
return
end
--* 获取当前项链唯一id
local makeIndex = GetItemByPos(actor, 3)
if makeIndex == "0" then
Func.sendmsg9(actor, "请先佩戴好项链!")
return
end
local level = Player.getkeycount(actor,VarCfg.Player.str["幸运项链"],"Luck") or 0
if level >= 3 then
Func.sendmsg9(actor, "项链幸运已满级,如果继续提升暴击率,请重置幸运!")
return
end
if Func.takeitmes(actor, self.cfg.xh, true, true) then
if Func.random(self.cfg.cgl[level + 1]) then
local value = level + 1
if level == 2 then
if Func.random(20) then
value = 4
end
end
Player.setkeycount(actor,VarCfg.Player.str["幸运项链"], "Luck", value)
local baoji = 0
if value == 3 then
baoji = math.random(1, 3)
elseif value == 4 then
baoji = math.random(3, 5)
end
if baoji > 0 then
Player.setkeycount(actor, VarCfg.Player.str["幸运项链"], "BaoJi", baoji)
end
-- Func.sendmsg9(actor, "恭喜你,成功提升幸运!")
Message:SubLink(actor, self._name .. "_upBool", { 21100 })
self:OnTake(actor, makeIndex, 3)
else
-- Func.sendmsg9(actor, "抱歉,提升项链幸运失败!")
Message:SubLink(actor, self._name .. "_upBool", { 21102 })
end
end
end
function XingYunXiangLianOBJ:reset(actor, p1, p2, p3, data)
if not Npc.CheckNPCRange(actor, 11) then
return
end
Func.messagebox(actor, "[幸运重置]本次重置免费\n将清除项链附加幸运及幸运暴击\n是否确认重置?", "@xianglian_reset", "@exit")
end
function xianglian_reset(actor)
--* 获取当前项链唯一id
local makeIndex = GetItemByPos(actor, 3)
if makeIndex == "0" then
Func.sendmsg9(actor, "请先佩戴好项链!")
return
end
Player.setstr(actor, VarCfg.Player.str["幸运项链"], "")
XingYunXiangLianOBJ:OffTake(actor, makeIndex, 3)
end
------------* 触发穿戴绑定人物事件
---*穿戴项链
function XingYunXiangLianOBJ:OnTake(actor, makeIndex, where, itemName)
if where == 3 then
local LuckData = Player.getkeytbl(actor,VarCfg.Player.str["幸运项链"]) or {}
if not LuckData then
return
end
if LuckData["Luck"] and LuckData["Luck"] > 0 then
SetItemLuck(actor, makeIndex, LuckData["Luck"])
end
if LuckData["BaoJi"] and LuckData["BaoJi"] > 0 then
additemattr(actor, makeIndex, ConstCfg.temattr["幸运暴击"], 3, 21, LuckData["BaoJi"])
end
end
end
GameEvent.add(EventCfg.onTakeOnEx, function(actor, makeIndex, where, itemName)
XingYunXiangLianOBJ:OnTake(actor, makeIndex, where, itemName)
end, XingYunXiangLianOBJ)
---*脱下项链
function XingYunXiangLianOBJ:OffTake(actor, makeIndex, where, itemName)
if where == 3 then
SetItemLuck(actor, makeIndex, 0)
delitemattr(actor, makeIndex, ConstCfg.temattr["幸运暴击"], 0)
end
end
GameEvent.add(EventCfg.onTakeOffEx, function(actor, makeIndex, where, itemName)
XingYunXiangLianOBJ:OffTake(actor, makeIndex, where, itemName)
end, XingYunXiangLianOBJ)
XingYunXiangLianOBJ.allowFunc = {"up", "reset"}
return XingYunXiangLianOBJ