gitxsm 1 год назад
Родитель
Сommit
f184d9c672

+ 1 - 0
script/core/ObjHuman.lua

@@ -705,6 +705,7 @@ function onLogin(human, isNew)
     TopupLogic.checkKf(human)
 	VoucherShopLogic.onLogin(human)
 	RacialTrialLogic.onLogin(human)
+	ZhanbuLogic.onLogin(human)
 	-- 最后执行离线发货
 	BuyLogic.onLogin(human)
 	GiftLogic.onLogin(human)

+ 8 - 5
script/module/battle/BattleLogic.lua

@@ -94,6 +94,8 @@ local BATTLE_ORDER_TYPE = 1
 -- 挂机收益最多累计x秒
 function getHangMaxTime(human)
     local hour = VipLogic.getPowerArgs(human, VipLogic.VIP_POWER10)
+    local talismanAdd_HangHours = TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.GJ_HANG_HOURS) or 0
+    hour = hour + talismanAdd_HangHours
     return(hour or 0) * 3600
 end
 
@@ -2811,10 +2813,6 @@ function mopupFight(human)
         end
     end
 
-    if not ObjHuman.checkRMB(human, need) then
-        return
-    end
-
     local bUseAddFree = false
     if need <= 0 and bUseFree == true then
         human.db.mopupFreeCnt = human.db.mopupFreeCnt + 1
@@ -2826,7 +2824,12 @@ function mopupFight(human)
         end
     end
 
-    ObjHuman.decZuanshi(human, - need, "battleMopup")
+    if need > 0 then
+        if not ObjHuman.checkRMB(human, need) then
+            return
+        end
+        ObjHuman.decZuanshi(human, - need, "battleMopup")
+    end
 
     human.db.mopupDoCnt = bUseAddFree == true and human.db.mopupDoCnt or human.db.mopupDoCnt + 1
 

+ 32 - 12
script/module/copy/CopyLogic.lua

@@ -31,6 +31,17 @@ COPY_TYPE_MAX     = 5
 
 COPY_SAODANG_CAN = 1 				--可扫荡
 
+--获取秘宝方面的加成
+local function getTalismanAdd(human)
+	local jinbiAdd = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_JB) or 0) / 100
+	local heroExpAdd = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_HERO_EXP) or 0) / 100
+	local longhunshiAdd = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_LHS) or 0) / 100
+	return jinbiAdd, heroExpAdd, longhunshiAdd
+end
+
+
+
+
 function updateDaily(human)
 	DragonNestLogic.updateDaily(human)
 	if not human.db.copy then return end
@@ -131,8 +142,11 @@ function challengeQuery(human, copyType)
 	msgRet.nextRefreshTime = 24 * 60 * 60 - (now - ts1)
 	
 	--秘宝加成
-	local talismanAdd_jinbi = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_JB) or 0) / 100
-	local talismanAdd_hero_exp = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_HERO_EXP) or 0) / 100
+	local jinbiAdd, heroExpAdd, longhunshiAdd = getTalismanAdd(human)
+	-- local talismanAdd_jinbi = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_JB) or 0) / 100
+	-- local talismanAdd_hero_exp = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_HERO_EXP) or 0) / 100
+	-- local talismanAdd_lhs = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_LHS) or 0) / 100
+
 
 	local j = 0  -- 存储相同副本类型的数量
 	for i=1, #CopyExcel.copy do
@@ -148,10 +162,12 @@ function challengeQuery(human, copyType)
 			for key,value in ipairs (copyConfig.reward) do
 				local itemID = value[1]
 				local itemCnt = value[2]
-				if itemID == ItemDefine.ITEM_JINBI_ID and talismanAdd_jinbi > 0 then
-					itemCnt = itemCnt + math.ceil(itemCnt * talismanAdd_jinbi)
-				elseif itemID == ItemDefine.ITEM_GREEN_EXP_ID and talismanAdd_hero_exp > 0 then
-					itemCnt = itemCnt + math.ceil(itemCnt * talismanAdd_hero_exp)
+				if itemID == ItemDefine.ITEM_JINBI_ID and jinbiAdd > 0 then
+					itemCnt = itemCnt + math.ceil(itemCnt * jinbiAdd)
+				elseif itemID == ItemDefine.ITEM_GREEN_EXP_ID and heroExpAdd > 0 then
+					itemCnt = itemCnt + math.ceil(itemCnt * heroExpAdd)
+				elseif itemID == ItemDefine.ITEM_LONGHUNSHI_ID and longhunshiAdd > 0 then
+					itemCnt = itemCnt + math.ceil(itemCnt * longhunshiAdd)
 				end
 				Grid.makeItem(msgRet.list[j].reward[key], itemID, itemCnt)
 			end
@@ -223,8 +239,10 @@ function doFightEnd(human,copyID,combatInfo, touch)
 
 
 	--秘宝加成
-	local talismanAdd_jinbi = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_JB) or 0) / 100
-	local talismanAdd_hero_exp = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_HERO_EXP) or 0) / 100
+	local jinbiAdd, heroExpAdd, longhunshiAdd = getTalismanAdd(human)
+	-- local talismanAdd_jinbi = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_JB) or 0) / 100
+	-- local talismanAdd_hero_exp = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_HERO_EXP) or 0) / 100
+	-- local talismanAdd_lhs = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.NW_LHS) or 0) / 100
 
 
 	-- 给奖励
@@ -235,10 +253,12 @@ function doFightEnd(human,copyID,combatInfo, touch)
 		local itemID = copyConfig.reward[i][1]
 		local itemCnt = copyConfig.reward[i][2]
 		local finalCnt = itemCnt * rewardRate * fightCnt
-		if itemID == ItemDefine.ITEM_JINBI_ID and talismanAdd_jinbi > 0 then
-			finalCnt = finalCnt + math.ceil(finalCnt * talismanAdd_jinbi)
-		elseif itemID == ItemDefine.ITEM_GREEN_EXP_ID and talismanAdd_hero_exp > 0 then
-			finalCnt = finalCnt + math.ceil(finalCnt * talismanAdd_hero_exp)
+		if itemID == ItemDefine.ITEM_JINBI_ID and jinbiAdd > 0 then
+			finalCnt = finalCnt + math.ceil(finalCnt * jinbiAdd)
+		elseif itemID == ItemDefine.ITEM_GREEN_EXP_ID and heroExpAdd > 0 then
+			finalCnt = finalCnt + math.ceil(finalCnt * heroExpAdd)
+		elseif itemID == ItemDefine.ITEM_LONGHUNSHI_ID and longhunshiAdd > 0 then
+			finalCnt = finalCnt + math.ceil(finalCnt * longhunshiAdd)
 		end
 		BagLogic.addItem(human, itemID, finalCnt, "copy_win")
 		local index = #itemList+1

+ 39 - 5
script/module/drawCard/DrawCardLogic.lua

@@ -52,6 +52,7 @@ local LimitPerpleHeroLogic = require("present.LimitPerpleHeroLogic")
 local HeroComeLogic = require("absAct.HeroComeLogic")
 local NewHeroLogic = require("absAct.NewHeroLogic")
 Json = Json or require("common.Json")
+local TalismanLogic = require("talisman.TalismanLogic")
 
 DRAWCARD_ID0 = 0	-- 积分召唤
 DRAWCARD_ID1 = 1	-- 基础召唤
@@ -77,6 +78,18 @@ MAX_JIFEN = 3000
 DRAWCARD_40 = 40    -- 40连抽,必得SSR
 DRAWCARD_100 = 100  -- 新英雄抽卡活动期间100抽必得
 
+
+local function getTalismanAdd(human)
+    local jyzh_lottery10 = TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.JYZH_LOTTERY10) or 0
+    if jyzh_lottery10 <= 0 then
+        jyzh_lottery10 = 100
+    end
+    jyzh_lottery10 = jyzh_lottery10 / 100
+    return jyzh_lottery10
+end
+
+
+
 -- 积分
 function getJifen(human)
     return human.db.drawCard.jifen 
@@ -252,8 +265,8 @@ function fontDrawCardNet(net, id, human)
     end
 
     if config.item2[1] and config.item2[2] then
-       net.items[0] = net.items[0] + 1
-       Grid.makeItem(net.items[net.items[0]], config.item2[1], math.floor(config.item2[2] * vipArg / 100 ) )
+        net.items[0] = net.items[0] + 1
+        Grid.makeItem(net.items[net.items[0]], config.item2[1], math.floor(config.item2[2] * vipArg / 100 ) )
     end
 
     vipArg = 0
@@ -264,6 +277,14 @@ function fontDrawCardNet(net, id, human)
     net.zuanshi[0] = 2
     net.zuanshi[1] = config.zuanshi1
     net.zuanshi[2] = config.zuanshi2 + vipArg
+    net.jyzhLottery10Dis = 100
+
+    if id == DRAWCARD_ID8 then
+        --秘宝对精英召唤10连的增益
+        local talisman_jyzh_lotter10 = getTalismanAdd(human)
+        net.jyzhLottery10Dis = talisman_jyzh_lotter10 * 100  --转成整数
+    end
+
     net.isFirst = (getDraw2Cnt(human, id) < 1) and 1 or 0
     net.canBuy = ItemExcel.buy[config.item1[1]] and 1 or 0
 end
@@ -355,6 +376,19 @@ function checkUseItem(human, id, op, config,isAct)
 
     local itemID = item[1]
     local itemCnt = item[2]
+    local finalItemCnt = itemCnt
+
+    --精英召唤10连抽的处理
+    if id == DRAWCARD_ID8 and op == DRAWCARD_OP_2 then
+        --秘宝对精英召唤10连的增益
+        local talisman_jyzh_lotter10 = getTalismanAdd(human)
+        finalItemCnt = math.floor(finalItemCnt * talisman_jyzh_lotter10)
+
+        if zuanshi and zuanshi > 0 then
+            zuanshi = math.floor(zuanshi * talisman_jyzh_lotter10)
+        end
+    end
+
 
     if id == DRAWCARD_ID2 and op == DRAWCARD_OP_2 then
         local vipArg = 100
@@ -362,7 +396,7 @@ function checkUseItem(human, id, op, config,isAct)
         print(" checkUseItem  vipArg   ", vipArg, "  ,   old  :  " ,itemCnt , "  ,  new : ", math.floor(itemCnt * vipArg / 100 ) )
         itemCnt = math.floor(itemCnt * vipArg / 100 )
     end 
-    print("  checkUseItem   itemID  itemCnt ", itemID, itemCnt)
+    print("  checkUseItem   itemID  itemCnt ", itemID, finalItemCnt)
     -- 活动只扣道具
     if isAct == AbsActDefine.ABS_ACT_TYPE_4 then
         local state,id = AbsActLogic.isStartedByType(human, AbsActDefine.ABS_ACT_TYPE_4)
@@ -411,8 +445,8 @@ function checkUseItem(human, id, op, config,isAct)
     if isFree(human, id, op) then -- 免费
         setUseFree(human, id)
         return true
-    elseif BagLogic.getItemCnt(human, itemID) >= itemCnt then -- 扣道具
-        BagLogic.delItem(human, itemID,  itemCnt, "draw_card")
+    elseif BagLogic.getItemCnt(human, itemID) >= finalItemCnt then -- 扣道具
+        BagLogic.delItem(human, itemID,  finalItemCnt, "draw_card")
         return true
     elseif zuanshi > 0 then -- 扣钻石
         -- 抵扣道具

+ 1 - 0
script/module/drawCard/Proto.lua

@@ -10,6 +10,7 @@ DrawCardNet = {
 	{"zuanshi",		3,		"short"},  -- {1次消耗钻石,10次消耗钻石}0为不能用钻石
 	{"isFirst",		1,		"byte"},   -- 是否首次十连
 	{"canBuy",		1,		"byte"},   -- 可否购买
+	{"jyzhLottery10Dis",	1,		"byte"},   -- 精英召唤10连抽折扣
 }
 
 GC_DRAWCARD_QUERY = {

+ 13 - 6
script/module/drill/DrillLogic.lua

@@ -100,6 +100,13 @@ local FRIEND_ITEM_CNT = 10 		-- 每次助战获得x点友情点
 local MAX_HEROCOMBAT_MUL = 150	-- 助战英雄最大倍数百分比
 local INIT_HP_MAX = 100
 
+--秘宝加成
+local function getTalismanAdd(human)
+	local jinbiAdd = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.DRILL_JINBI) or 0) / 100
+	return jinbiAdd
+end
+
+
 -- 获取剩余时间
 function getState()
 --	if MiddleConnect.IS_MIDDLE_CONNECT ~= true then
@@ -291,7 +298,7 @@ function checkSaoDang(human, diff, lastDiff, lastId)
     local rewardCnt = double and 2 or 1
 
 	--秘宝加成
-	local talismanAdd_jinbi = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.DRILL_JINBI) or 0) / 100
+	local talismanAdd_jinbi = getTalismanAdd(human)
 
 	if lastDiff and lastDiff == diff and lastId > 10 then
 		id = lastId - 10 
@@ -436,7 +443,7 @@ function queryDrillId(human, drillData)
 	Grid.makeItem(msgRet.dayGet[2], ItemDefine.ITEM_DRILL_COIN_ID,  dayCoin )
 
 	--秘宝加成
-	local talismanAdd_jinbi = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.DRILL_JINBI) or 0) / 100
+	local talismanAdd_jinbi = getTalismanAdd(human)
 
 	msgRet.box[0] = #DrillExcel.box
 	for k, config  in ipairs(DrillExcel.box) do
@@ -512,7 +519,7 @@ function query(human, drillId)
 	end
 
 	--秘宝加成
-	local talismanAdd_jinbi = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.DRILL_JINBI) or 0) / 100
+	local talismanAdd_jinbi = getTalismanAdd(human)
 
 	local double = RoleSystemLogic.isDouble(human, RoleSystemDefine.ROLE_SYS_ID_1204)
 	local rewardCnt = double and 2 or 1
@@ -677,7 +684,7 @@ function drillBoxGet(human, index)
 	end
 
 	--秘宝加成
-	local talismanAdd_jinbi = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.DRILL_JINBI) or 0) / 100
+	local talismanAdd_jinbi = getTalismanAdd(human)
 	local awardVec = {}
 	for i, v in ipairs(itemConfig) do
 		local itemID = v[1]
@@ -704,7 +711,7 @@ function rewardPreview(human)
     msgRet.list[0] = 0
 
 	--秘宝加成
-	local talismanAdd_jinbi = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.DRILL_JINBI) or 0) / 100
+	local talismanAdd_jinbi = getTalismanAdd(human)
 
     for drillId, cf in pairs(DrillExcel.drill) do 
     	msgRet.list[0] = msgRet.list[0] + 1
@@ -1496,7 +1503,7 @@ function onFightEnd(human, result, combatType, cbParam, combatInfo)
 	combatInfo.double = double and 2 or 0
 
 	--秘宝加成
-	local talismanAdd_jinbi = (TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.DRILL_JINBI) or 0) / 100
+	local talismanAdd_jinbi = getTalismanAdd(human)
 
 	-- 关卡奖励		
 	local itemList = {}

+ 5 - 52
script/module/talisman/TalismanLogic.lua

@@ -25,16 +25,20 @@ local RoleSystemDefine = require("roleSystem.RoleSystemDefine")
 local LOGTYPE = "talisman"
 local COND_TOWER_LEVEL = 100 --开启本系统需要通关恶魔之塔的层数
 
---秘宝对挂机钻石/情报等其他方面加成标识
+--秘宝对挂机钻石/情报等其他方面增益标识
 OTHER_EFFECT_TBL = {
     ["GJ_QB"] = "GJ_QB",                            --挂机情报类型
     ["GJ_ZS"] = "GJ_ZS",                            --挂机钻石类型
     ["GJ_HERO_EXP"] = "GJ_HERO_EXP",                --挂机英雄经验类型
+    ["GJ_HANG_HOURS"] = "GJ_HANG_HOURS",            --挂机最大时间类型
     ["GJ_SD_FREE_CNT"] = "GJ_SD_FREE_CNT",          --每日扫荡次数类型
     ["DJ"] = "DJ",                                  --点金
     ["NW_JB"] = "NW_JB",                            --女巫森林金币类型
     ["NW_HERO_EXP"] = "NW_HERO_EXP",                --女巫森林英雄经验类型
+    ["NW_LHS"] = "NW_LHS",                          --女巫森林龙魂石
     ["DRILL_JINBI"] = "DRILL_JINBI",                --勇者试炼金币类型
+    ["ZHANBU_MAX_POINTS"] = "ZHANBU_MAX_POINTS",    --占卜最大积分类型
+    ["JYZH_LOTTERY10"] = "JYZH_LOTTERY10",          --精英召唤10连类型
 }
 
 --是否开启本系统
@@ -87,57 +91,6 @@ local function populateMsg(config, msgTb, nLevel)
 end
 
 
--- local function send(human, type_m)
---     local cfg = generateCfgByType(type_m)
---     if not cfg then
---         return Broadcast.sendErr(human, Lang.COMMON_ARGUMENT_ERROR)
---     end
-
---     local msgRet = Msg.gc.GC_TALISMAN_QUERY
---     msgRet.type = type_m
---     local talismanVec = msgRet.talismanVec
---     talismanVec[0] = #cfg
-
---     local talismanData
---     if human.db.talismanData and human.db.talismanData[type_m] then
---         talismanData = human.db.talismanData[type_m]
---     end
-
---     local mathCeil = math.ceil
---     for i = 1, #cfg do
---         local singleCfg = cfg[i]
---         local singleTalisman = talismanVec[i]
-
---         singleTalisman.id = singleCfg.id
---         singleTalisman.name = singleCfg.name
---         singleTalisman.iconId = singleCfg.iconId
-
---         local nLevel = 0
---         if talismanData and talismanData[singleCfg.id] then
---             nLevel = talismanData[singleCfg.id]
---         end
---         singleTalisman.level = nLevel
-
---         local descList = singleTalisman.descList
---         local effectDescCfg = singleCfg.effectDesc
---         descList[0] = #effectDescCfg
---         for j = 1, #effectDescCfg do
---             local singleDesc = descList[j]
---             singleDesc.desc = effectDescCfg[j]
---             singleDesc.isActivate = nLevel >= j and 1 or 0
---         end
-
---         if nLevel < singleCfg.maxLevel then
---             nLevel = nLevel + 1
---             nLevel = mathCeil(nLevel/3)
---         else
---             nLevel = 0
---         end
---         Grid.makeItem(singleTalisman.upGradeCost, singleCfg.costItemId, nLevel)
---     end
---     Msg.send(msgRet, human.fd)
--- end
-
 --红点判断
 local function dotJudgment(human, cfgHtbl)
     local talismanData = human.db.talismanData