209 lines
5.8 KiB
Lua
209 lines
5.8 KiB
Lua
WuQiShengJIOBJ = Up_BaseClass:new()
|
|
|
|
|
|
WuQiShengJIOBJ._name = "WuQiShengJIOBJ"
|
|
-- NPCID
|
|
|
|
WuQiShengJIOBJ.id = { 13 }
|
|
for i, v in ipairs(WuQiShengJIOBJ.id or {}) do
|
|
Npc.clicknpcCfg[v] = WuQiShengJIOBJ
|
|
end
|
|
|
|
|
|
|
|
-- 配置文件
|
|
WuQiShengJIOBJ.cfg = {
|
|
ps = {
|
|
"1.武器可升级<7次/FCOLOR=251>,最高提升<21点/FCOLOR=251>攻击",
|
|
"<2.满7次后:/FCOLOR=249>",
|
|
" 附加攻击<大于13点/FCOLOR=251>",
|
|
" 可获得:<攻击速度+1/FCOLOR=251>",
|
|
" 附加攻击<大于16点/FCOLOR=251>",
|
|
" 可获得:<攻击速度+1、攻击伤害+2%/FCOLOR=251>",
|
|
" 附加攻击<大于19点/FCOLOR=251>",
|
|
" 可获得:<攻击速度+1、攻击伤害+2%、神圣一击+2%/FCOLOR=251>",
|
|
"<3.成功率50%/FCOLOR=70>",
|
|
" 成功<增加/FCOLOR=249><随机1-3点攻击/FCOLOR=251>!",
|
|
" 失败<减少/FCOLOR=249><随机0-1点攻击/FCOLOR=251>!",
|
|
},
|
|
top = 7,
|
|
random = { 1, 3 },
|
|
xh = {
|
|
--* 神兽之精、神兽之丹 按升级次数 增加数量 第2次为2个 升级第7次就7个
|
|
{ "黑铁矿石", 4, 0 },
|
|
{ "神兽之精", 1, 0 },
|
|
{ "神兽之丹", 1, 0 },
|
|
},
|
|
drop_xh = {
|
|
{ "神兽之精", 5, 0 },
|
|
{ "神兽之丹", 5, 0 },
|
|
},
|
|
reset_xh = {
|
|
{ "神兽之精", 100, 0 },
|
|
{ "神兽之丹", 100, 0 },
|
|
},
|
|
cgl = 50,
|
|
}
|
|
|
|
|
|
-- ---* 加入上线同步数据
|
|
-- Player.sycCfg[WuQiShengJIOBJ._name] = WuQiShengJIOBJ.cfg
|
|
|
|
WuQiShengJIOBJ.topAtt = {
|
|
[13] = {
|
|
id = 20,
|
|
value = 1
|
|
},
|
|
[16] = {
|
|
id = 25,
|
|
value = 2
|
|
},
|
|
[19] = {
|
|
id = 79,
|
|
value = 200
|
|
},
|
|
}
|
|
|
|
|
|
function WuQiShengJIOBJ:up(actor, p1, p2, p3, data)
|
|
if not Npc.CheckNPCRange(actor, 13) then
|
|
return
|
|
end
|
|
|
|
|
|
|
|
local equipmakeindex = GetItemByPos(actor, 1)
|
|
if equipmakeindex == "0" then
|
|
Func.sendmsg9(actor, "请先佩戴好要升级的武器!")
|
|
return
|
|
end
|
|
|
|
local level = GetInt(3, equipmakeindex, VarCfg.item.int["武器升级"]) or 0
|
|
if level >= self.cfg.top then
|
|
Func.sendmsg9(actor, "当前武器升级次数已满,可以重置!")
|
|
return
|
|
end
|
|
|
|
---* 计算消耗
|
|
local baohu = data[1].baohu > 0 and true or false
|
|
|
|
local xh = self:calcxh(actor, level, baohu)
|
|
|
|
if Func.takeitmes(actor, xh, true, true) then
|
|
local feilei = ConstCfg.temattr["武器升级"]
|
|
local attr = getitemattr(actor, equipmakeindex, feilei)
|
|
local attrNum = 0
|
|
|
|
if attr then
|
|
local attPart = Func.splitString(attr, "#")
|
|
if attPart then
|
|
attrNum = tonumber(attPart[3])
|
|
end
|
|
end
|
|
|
|
if Func.random(50) then
|
|
SetInt(3, equipmakeindex, VarCfg.item.int["武器升级"], level + 1)
|
|
local _random = math.random(1, 3)
|
|
additemattr(actor, equipmakeindex, feilei, 3, 4, _random)
|
|
SendItemVarToc(actor, equipmakeindex)
|
|
Func.sendmsg9(actor, string.format("[武器升级]:#70|恭喜,升级成功,获得#251|攻击:+%d#215|.", _random))
|
|
Message:SubLink(actor, self._name .. "_upBool", { 21100 })
|
|
|
|
if level + 1 >= self.cfg.top then
|
|
self:setAttr(actor)
|
|
end
|
|
else
|
|
if not baohu then
|
|
local _random = math.random(-1, 0)
|
|
if attrNum > 0 and _random < 0 then
|
|
additemattr(actor, equipmakeindex, feilei, 3, 4, _random)
|
|
-- Func.sendmsg9(actor, "[武器升级]:#70|抱歉,升级失败,未使用保护,本次#251|攻击-1#215|!")
|
|
Message:SubLink(actor, self._name .. "_upBool", { 21100 })
|
|
end
|
|
end
|
|
Message:SubLink(actor, self._name .. "_upBool", { 21102 })
|
|
|
|
-- Func.sendmsg9(actor, "[武器升级]:#70|抱歉,升级失败!")
|
|
end
|
|
end
|
|
end
|
|
|
|
--* 计算消耗
|
|
function WuQiShengJIOBJ:calcxh(actor, level, baofu)
|
|
local up_cs = 0
|
|
local xh = table.Copy(self.cfg.xh)
|
|
|
|
for i, v in ipairs(xh) do
|
|
if i > 1 then
|
|
v[2] = level + 1
|
|
end
|
|
end
|
|
|
|
if baofu then
|
|
xh = Func.deep_merge(xh, self.cfg.drop_xh)
|
|
end
|
|
return xh
|
|
end
|
|
|
|
---* 7次后附加属性
|
|
function WuQiShengJIOBJ:setAttr(actor)
|
|
local equipmakeindex = GetItemByPos(actor, 1)
|
|
if equipmakeindex == "0" then
|
|
return
|
|
end
|
|
local level = GetInt(3, equipmakeindex, VarCfg.item.int["武器升级"]) or 0
|
|
if level < self.cfg.top then
|
|
return
|
|
end
|
|
|
|
local feilei = ConstCfg.temattr["武器升级"]
|
|
local attr = getitemattr(actor, equipmakeindex, feilei)
|
|
local attrNum = 0
|
|
if attr then
|
|
local attPart = Func.splitString(attr, "#")
|
|
if attPart then
|
|
attrNum = tonumber(attPart[3])
|
|
end
|
|
end
|
|
local attStr = {}
|
|
for key, value in pairs(self.topAtt or {}) do
|
|
if attrNum >= key then
|
|
attStr[value.id] = value.value
|
|
end
|
|
end
|
|
if table.nums(attStr) > 0 then
|
|
additemattrEX(actor, equipmakeindex, feilei, 3, attStr)
|
|
end
|
|
end
|
|
|
|
---* 重置升级
|
|
function WuQiShengJIOBJ:reset(actor)
|
|
Func.messagebox(actor, "[武器升级]本次重置将清除武器升级所有属性\n是否确认重置?", "@wuqishengji_reset", "@exit")
|
|
end
|
|
|
|
function wuqishengji_reset(actor)
|
|
if not Npc.CheckNPCRange(actor, 13) then
|
|
return
|
|
end
|
|
local equipmakeindex = GetItemByPos(actor, 1)
|
|
if equipmakeindex == "0" then
|
|
Func.sendmsg9(actor, "请先佩戴好要重置的武器!")
|
|
return
|
|
end
|
|
|
|
local level = GetInt(3, equipmakeindex, VarCfg.item.int["武器升级"]) or 0
|
|
if level < WuQiShengJIOBJ.cfg.top then
|
|
Func.sendmsg9(actor, "当前武器升级次数未满,不可以重置!")
|
|
return
|
|
end
|
|
if Func.takeitmes(actor, WuQiShengJIOBJ.cfg.reset_xh, true, true) then
|
|
SetInt(3, equipmakeindex, VarCfg.item.int["武器升级"], 0)
|
|
SendItemVarToc(actor, equipmakeindex)
|
|
local feilei = ConstCfg.temattr["武器升级"]
|
|
delitemattr(actor, equipmakeindex, feilei, 0)
|
|
Func.sendmsg9(actor, "重置成功!")
|
|
end
|
|
end
|
|
|
|
WuQiShengJIOBJ.allowFunc = {"up", "reset"}
|
|
return WuQiShengJIOBJ
|