|
|
@@ -74,6 +74,7 @@ local TalismanLogic = require("talisman.TalismanLogic")
|
|
|
local WeekTaskLogic = require("dailyTask.WeekTaskLogic")
|
|
|
local TriggerLogic = require("trigger.TriggerLogic")
|
|
|
local TriggerDefine = require("trigger.TriggerDefine")
|
|
|
+local OverflowFundLogic = require("present.OverflowFundLogic")
|
|
|
|
|
|
local queryFields = {["uuid"] = 1}
|
|
|
local queryFieldsList = {}
|
|
|
@@ -1707,4 +1708,101 @@ function ChallengeLevelByDiamond(human, levelId)
|
|
|
|
|
|
-- 发放奖励
|
|
|
BagLogic.addItemList(human, itemArray, "drill")
|
|
|
+end
|
|
|
+
|
|
|
+-- 一键扫荡
|
|
|
+function oneClickSaodang(human)
|
|
|
+ -- 检查是否购买了基金(购买项207)
|
|
|
+ if not human.db.overflow or not human.db.overflow.state or not human.db.overflow.state[OverflowFundLogic.OVERFLOW_TYPE_2] then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ -- 检查是否开启了试炼
|
|
|
+ if not isOpen(human, true) then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ local drill = human.db.drill
|
|
|
+ if not drill then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ local drillData = DrillDB.getDrillDataByUuid(human.db._id)
|
|
|
+ if not drillData then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ local diff = drill.diff
|
|
|
+ if not drill.diff or drill.diff == 0 then
|
|
|
+ diff = drillData.diff
|
|
|
+ end
|
|
|
+
|
|
|
+ if diff == 0 then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ -- 获取当前关卡ID
|
|
|
+ local currentDrillId = drillData.drillId or 1
|
|
|
+ if currentDrillId <= 1 then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ -- 检查是否有可扫荡的关卡(需要达到等级要求)
|
|
|
+ if human.db.lv < SAODANG_COND_LEVEL then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ -- 计算可扫荡的关卡数(从1到currentDrillId-1,最多扫荡到currentDrillId-1)
|
|
|
+ local maxSaodangId = currentDrillId - 1
|
|
|
+ if maxSaodangId < 1 then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ -- 双倍奖励
|
|
|
+ local double = RoleSystemLogic.isDouble(human, RoleSystemDefine.ROLE_SYS_ID_1204)
|
|
|
+ local rewardCnt = double and 2 or 1
|
|
|
+
|
|
|
+ -- 秘宝加成
|
|
|
+ local talismanAdd_jinbi = getTalismanAdd(human)
|
|
|
+
|
|
|
+ -- 初始化今日奖励
|
|
|
+ drill.dayGet = drill.dayGet or {}
|
|
|
+
|
|
|
+ -- 遍历所有可扫荡的关卡,发放奖励
|
|
|
+ for i = 1, maxSaodangId do
|
|
|
+ local drillItems = getDrillItems(i, diff)
|
|
|
+ if drillItems then
|
|
|
+ for _, item in ipairs(drillItems) do
|
|
|
+ local itemID = item[1]
|
|
|
+ local itemCnt = item[2] * rewardCnt
|
|
|
+ if itemID == ItemDefine.ITEM_JINBI_ID then
|
|
|
+ itemCnt = itemCnt + math.ceil(itemCnt * talismanAdd_jinbi)
|
|
|
+ end
|
|
|
+
|
|
|
+ drill.dayGet[itemID] = (drill.dayGet[itemID] or 0) + itemCnt
|
|
|
+ BagLogic.addItem(human, itemID, itemCnt, "drill")
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ -- 发送奖励消息
|
|
|
+ local msgRet = Msg.gc.GC_DRILL_ONE_CLICK_SAODANG
|
|
|
+ msgRet.drillId = maxSaodangId
|
|
|
+ msgRet.double = double and 1 or 0
|
|
|
+
|
|
|
+ local len = 0
|
|
|
+ for k, v in pairs(drill.dayGet) do
|
|
|
+ len = len + 1
|
|
|
+ Grid.makeItem(msgRet.itemList[len], k, v)
|
|
|
+ end
|
|
|
+ msgRet.itemList[0] = len
|
|
|
+
|
|
|
+ Msg.send(msgRet, human.fd)
|
|
|
+
|
|
|
+ -- 更新数据
|
|
|
+ queryDrillId(human)
|
|
|
+
|
|
|
+ -- 触发相关回调
|
|
|
+ YunYingLogic.onCallBack(human, "onDrill", maxSaodangId)
|
|
|
+ RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_1204)
|
|
|
end
|