Explorar o código

Merge branch '360test' of http://43.226.57.217:3000/yishanyou/GongFuServer into 360test

pigflower hai 1 mes
pai
achega
68d0c049d9

+ 17 - 8
script/module/bag/Grid.lua

@@ -11,9 +11,10 @@ local ItemDefine = require("bag.ItemDefine")
 local SuipianLogic = require("bag.SuipianLogic")
 local RoleAttr = require("role.RoleAttr")
 local EquipLogic = require("equip.EquipLogic")
+local EquipLogicGrid = require("equip.EquipLogicGrid")
 
 -- 填充装备,道具信息 
-function makeItem(net, itemID, itemCnt, shuijingAttrID, itemGrid, itemIndex, opFlag, equipQuality, gemBonus, sourceType, isShowEquipBaseAttrArea)
+function makeItem(net, itemID, itemCnt, shuijingAttrID, itemGrid, itemIndex, opFlag, equipQuality, gemBonus, sourceType, human)
 	local itemConfig = ItemDefine.getConfig(itemID)
 	net.id = itemConfig and itemID or 0 
 	net.cnt = itemConfig and itemCnt or 0
@@ -52,7 +53,7 @@ function makeItem(net, itemID, itemCnt, shuijingAttrID, itemGrid, itemIndex, opF
 
     makeItemSuipian(net, itemConfig)
     makeItemFuwen(net, itemID, itemConfig, itemGrid, itemIndex)
-    makeItemEquip(net, itemConfig, itemGrid, itemIndex, shuijingAttrID, equipQuality, gemBonus, isShowEquipBaseAttrArea)
+    makeItemEquip(net, itemConfig, itemGrid, itemIndex, shuijingAttrID, equipQuality, gemBonus, human)
 end
 
 function makeFuwenSkill(net, skillID, skillLockList)
@@ -143,7 +144,7 @@ function makeItemFuwen(net, itemID, itemConfig, fuwenGrid, fuwenIndex)
 	end
 end
 
-function makeItemEquip(net, itemConfig, equipGrid, equipIndex, shuijingAttrID, equipQuality, gemBonus, isShowEquipBaseAttrArea)
+function makeItemEquip(net, itemConfig, equipGrid, equipIndex, shuijingAttrID, equipQuality, gemBonus, human)
 	if itemConfig.mainType ~= ItemDefine.MAINTYPE_EQUIP then
 		return
 	end
@@ -332,26 +333,34 @@ function makeItemEquip(net, itemConfig, equipGrid, equipIndex, shuijingAttrID, e
 	net.equip[1].suit = net.equip[1].suit or {}
 	net.equip[1].suit[0] = 0
 	if itemConfig.suitIm then
+		local suitImTemp = itemConfig.suitIm
+		if itemConfig.jobSuitIm and next(itemConfig.jobSuitIm) then
+			suitImTemp = Util.copyTable(itemConfig.suitIm)
+			local jobId = EquipLogicGrid.GetEquipOwnerJob(human, equipGrid)
+			local attrInfo = itemConfig.jobSuitIm[jobId]
+			EquipLogicGrid.MergeEquipSuitIm(suitImTemp, attrInfo)
+		end
+
 		net.equip[1].suit = net.equip[1].suit or {}
 		net.equip[1].suit[0] = 1
 		net.equip[1].suit[1] = net.equip[1].suit[1] or {}
 		net.equip[1].suit[1].attr = net.equip[1].suit[1].attr or {}
-		net.equip[1].suit[1].attr[0] = #itemConfig.suitIm
+		net.equip[1].suit[1].attr[0] = #suitImTemp -- #itemConfig.suitIm
 
 		net.equip[1].suit[1].gemAttr[0] = 0
 		if gemBonus then
-			net.equip[1].suit[1].gemAttr[0] = #itemConfig.suitIm
+			net.equip[1].suit[1].gemAttr[0] = #suitImTemp -- #itemConfig.suitIm
 		end
 
 		for i=1,net.equip[1].suit[1].attr[0] do
 			net.equip[1].suit[1].attr[i] = net.equip[1].suit[1].attr[i] or {}
-			net.equip[1].suit[1].attr[i].key = itemConfig.suitIm[i][1]
-			net.equip[1].suit[1].attr[i].value = itemConfig.suitIm[i][2]
+			net.equip[1].suit[1].attr[i].key = suitImTemp[i][1] -- itemConfig.suitIm[i][1]
+			net.equip[1].suit[1].attr[i].value = suitImTemp[i][2] -- itemConfig.suitIm[i][2]
 
 
 			if gemBonus and (gemBonus[i+1] or gemBonus.sp_suit) then
 				net.equip[1].suit[1].gemAttr[i] = net.equip[1].suit[1].gemAttr[i] or {}
-				net.equip[1].suit[1].gemAttr[i].key = itemConfig.suitIm[i][1]
+				net.equip[1].suit[1].gemAttr[i].key = suitImTemp[i][1] -- itemConfig.suitIm[i][1]
 
 				if itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_RING or itemConfig.subType == ItemDefine.EQUIP_SUBTYPE_AMULET then
 					net.equip[1].suit[1].gemAttr[i].value = gemBonus.sp_suit * 100

+ 9 - 6
script/module/battle/BattleGift.lua

@@ -189,6 +189,7 @@ function StageClearHandle(human, currentStage, stageType)
     local val = getStageVal(stageType, currentStage)
     if val > 0 then
         addDailyStoreVal(human, val)
+        updateRedDot(human)
     end
 end
 
@@ -204,11 +205,11 @@ function isDot(human)
         return false
     end
 
-    local dailyGetVal = battleGiftData.dailyGetVal or 0
-    local dailyMaxVal = calclDailyMaxGetVal(human)
-    if dailyGetVal >= dailyMaxVal then
-        return false
-    end
+    -- local dailyGetVal = battleGiftData.dailyGetVal or 0
+    -- local dailyMaxVal = calclDailyMaxGetVal(human)
+    -- if dailyGetVal >= dailyMaxVal then
+    --     return false
+    -- end
 
     return true
 end
@@ -250,6 +251,7 @@ function BattleGift_Query(human)
     msgRet.dailyStoreVal = battleGiftData and battleGiftData.dailyStoreVal or 0
     msgRet.dailyGetVal = battleGiftData and battleGiftData.dailyGetVal or 0
     msgRet.dailyMaxVal = calclDailyMaxGetVal(human)
+    msgRet.dailyLimitVal = 0
 
     local targetBuyId = 0
     for _, buyId in ipairs(EliteDefine.BATTLEGIFT_BUYID_LIST) do
@@ -259,6 +261,7 @@ function BattleGift_Query(human)
         end
     end
 
+    msgRet.dailyLimitVal = EliteDefine.BATTLEGIFT_BUYID_2_LIMIT[targetBuyId] or 0
     BuyLogic.fontBuyItem(human, msgRet.buyItem, targetBuyId)
 
     Msg.send(msgRet, human.fd)
@@ -293,7 +296,7 @@ function BattleGift_Get(human)
 
     local itemId = EliteDefine.BATTLEGIFT_2_ITEMID
     local itemCnt = math.floor(getVal / 100)
-    BagLogic.addItem(human, itemId, itemCnt, LOGTYPE)
+    BagLogic.addItemList(human, { {itemId, itemCnt} }, LOGTYPE)
 
     BattleGift_Query(human)
 

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

@@ -487,6 +487,7 @@ GC_BATTLEGIFT_QUERY = {
 	{"dailyGetVal",		1,	    "int"},	       -- 当日已领礼金数量
 	{"dailyMaxVal",		1,	    "int"},	       -- 当日可领礼金数量
 	{"buyItem",     	1,      BuyItem},      -- 购买信息, BuyItem.buyID为0, 则表示所有购买项均已购买
+	{"dailyLimitVal",	1,	    "int"},	       -- 充值当前购买项后,增加的"每日可领取上限值"
 }
 
 -- 闯关礼金领取

+ 34 - 0
script/module/equip/EquipLogicGrid.lua

@@ -7,6 +7,8 @@ local EquipExcel = require("excel.equip").equip
 -- local EquipLogic = require("equip.EquipLogic")
 local ItemDefine = require("bag.ItemDefine")
 local Util = require("common.Util")
+local HeroLogic = require("hero.HeroLogic")
+local HeroExcel = require("excel.hero")
 
 -- 装备品质
 EQUIP_COLOR_1 = 1   -- 绿
@@ -106,4 +108,36 @@ function createTempGrid(id, washAttr, washQuality)
    equip.attr = washAttr     --当前属性
    equip.quality = washQuality     --默认为1
    return equip
+end
+
+
+-- 获取穿戴装备的英雄的职业
+function GetEquipOwnerJob(human, equipGrid)
+   local jobId = 2 --默认是战士职业
+   if not human or not equipGrid or not equipGrid.putUuid then
+      return jobId
+   end
+
+   local heroGrid = HeroLogic.getHeroGridByUuid(human, equipGrid.putUuid)
+   if not heroGrid then
+      return jobId
+   end
+
+   local heroCfg = HeroExcel.hero[heroGrid.id]
+   if not heroCfg then
+      return jobId
+   end
+
+   jobId = heroCfg.job or 0
+
+   return jobId
+end
+
+-- 合并装备套装属性(用于装备等级>=15级的装备)
+function MergeEquipSuitIm(targetData, sourceData)
+   if not targetData or not sourceData or not next(sourceData) then
+      return
+   end
+
+   targetData[#targetData+1] = {sourceData[1], sourceData[2]}
 end

+ 29 - 11
script/module/hero/HeroArtifacts.lua

@@ -35,12 +35,21 @@ local HeroArtifactsConfig = require("excel.heroArtifacts")
 local Util = require("common.Util")
 local Lang = require("common.Lang")
 local Broadcast = require("broadcast.Broadcast")
+local TalismanLogic = require("talisman.TalismanLogic")
 
 local GiftLogic
 
 local LOGTAG = "Artifacts" --日志标识
 
 
+-- 获取来自秘宝的属性倍数加成
+local function getAttrMulFromTalisman(human)
+    local attrMul = TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.HeroArtifacts_LvAttr_Mul)
+    attrMul = attrMul / 100
+    return attrMul
+end
+
+
 local function initArtifactsData(heroGrid)
     heroGrid.artifacts = {
         level = 0,
@@ -187,10 +196,13 @@ local function populateActivateCostMsg(net)
 end
 
 -- 填充灵装当前等级/星级总加成属性协议结构数据
-local function populateTotalAttrMsg(net, n, tp)
+local function populateTotalAttrMsg(human, net, n, tp)
     local t
+    local attrMul = 1
     if tp == 1 then
         t = HeroArtifactsConfig.UpGradeLv
+        attrMul = getAttrMulFromTalisman(human)
+        attrMul = 1 + attrMul
     else
         t = HeroArtifactsConfig.UpGradeStar
     end
@@ -208,15 +220,18 @@ local function populateTotalAttrMsg(net, n, tp)
         len = len + 1
         net[0] = len
         net[len].key = attrId
-        net[len].value = n <= 0 and 0 or attrVal
+        net[len].value = (n <= 0 and 0 or attrVal) * attrMul
     end
 end
 
 -- 填充灵装下一等级/星级加成属性协议结构数据
-local function populateNextAttrMsg(net, n, tp, isMax)
+local function populateNextAttrMsg(human, net, n, tp, isMax)
     local t
+    local attrMul = 1
     if tp == 1 then
         t = HeroArtifactsConfig.UpGradeLv
+        attrMul = getAttrMulFromTalisman(human)
+        attrMul = 1 + attrMul
     else
         t = HeroArtifactsConfig.UpGradeStar
     end
@@ -227,7 +242,7 @@ local function populateNextAttrMsg(net, n, tp, isMax)
     for k,v in ipairs(attrArrCfg or {}) do
         net[0] = k
         net[k].key = v[1]
-        net[k].value = isMax and 0 or v[2]
+        net[k].value = (isMax and 0 or v[2]) * attrMul
     end
 end
 
@@ -529,9 +544,12 @@ function doCalcHero(human, heroGrid, addAttrs)
     local artifactsData = heroGrid.artifacts
 
     if artifactsData.level > 0 then
+        local attrMul = getAttrMulFromTalisman(human)
+        attrMul = 1 + attrMul
+
         local attrList = calcAttrs(HeroArtifactsConfig.UpGradeLv, artifactsData.level)
         for attrId, attrVal in pairs(attrList) do
-            RoleAttr.updateValue(attrId, attrVal, addAttrs)
+            RoleAttr.updateValue(attrId, attrVal * attrMul, addAttrs)
         end
     end
 
@@ -657,8 +675,8 @@ function HeroArtifacts_Base_Query(human, heroID, heroIndex)
     msgRet.redDotArr[2] = 0
 
     populateActivateCostMsg(msgRet.ActivateCost)
-    populateTotalAttrMsg(msgRet.nowLevelAttrs, currentLevel, 1)
-    populateTotalAttrMsg(msgRet.nowStarAttrs, currentStar, 2)
+    populateTotalAttrMsg(human, msgRet.nowLevelAttrs, currentLevel, 1)
+    populateTotalAttrMsg(human, msgRet.nowStarAttrs, currentStar, 2)
 
     if artifactsData and artifactsData.effectArr then
         populateEffectMsg(msgRet.effectArr, artifactsData.effectArr)
@@ -740,8 +758,8 @@ function HeroArtifacts_Lv_Query(human, heroID, heroIndex)
     local msgRet = Msg.gc.GC_HEROARTIFACTS_LV_QUERY
     msgRet.artifactsLv = currentLevel
     msgRet.artifactsLvMax = maxLevel
-    populateTotalAttrMsg(msgRet.nowLevelAttrs, currentLevel, 1)
-    populateNextAttrMsg(msgRet.nextLevelAttrs, nextLevel, 1, isMax)
+    populateTotalAttrMsg(human, msgRet.nowLevelAttrs, currentLevel, 1)
+    populateNextAttrMsg(human, msgRet.nextLevelAttrs, nextLevel, 1, isMax)
 
     local itemId, itemCnt = getNextStageCost(currentLevel, 1, isMax)
     Grid.makeItem(msgRet.cost, itemId, itemCnt)
@@ -815,8 +833,8 @@ function HeroArtifacts_Star_Query(human, heroID, heroIndex)
     local msgRet = Msg.gc.GC_HEROARTIFACTS_STAR_QUERY
     msgRet.artifactsStar = currentStar
     msgRet.artifactsStarMax = maxStar
-    populateTotalAttrMsg(msgRet.nowStarAttrs, currentStar, 2)
-    populateNextAttrMsg(msgRet.nextStarAttrs, nextStar, 2, isMax)
+    populateTotalAttrMsg(human, msgRet.nowStarAttrs, currentStar, 2)
+    populateNextAttrMsg(human, msgRet.nextStarAttrs, nextStar, 2, isMax)
 
     local itemId, itemCnt = getNextStageCost(currentStar, 2, isMax)
     Grid.makeItem(msgRet.cost, itemId, itemCnt)

+ 32 - 18
script/module/hero/HeroEquip.lua

@@ -16,6 +16,7 @@ local ItemExcel = require("excel.item").item
 local FuwenLogic = require("fuwen.FuwenLogic")
 local EquipLogic = require("equip.EquipLogic")
 local HeroGem = require("hero.HeroGem")
+local EquipLogicGrid = require("equip.EquipLogicGrid")
 
 function query(human, heroID, heroIndex)
 	local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
@@ -36,9 +37,9 @@ function query(human, heroID, heroIndex)
 		if equipGrid then
 			cnt = cnt + 1
 			if i == ItemDefine.EQUIP_SUBTYPE_SHUIJIN then -- 水晶比较特殊
-				Grid.makeItem(msgRet.equips[cnt], equipGrid.id, 1, heroGrid.shuijingAttrID)
+				Grid.makeItem(msgRet.equips[cnt], equipGrid.id, 1, heroGrid.shuijingAttrID, nil, nil, nil, nil, nil, nil, human)
 			else
-				Grid.makeItem(msgRet.equips[cnt], equipGrid.id, 1, nil, equipGrid, -1, Grid.getOpflagAtBag(heroGrid.equip[i].id),nil,suitBonusTbl)
+				Grid.makeItem(msgRet.equips[cnt], equipGrid.id, 1, nil, equipGrid, -1, Grid.getOpflagAtBag(heroGrid.equip[i].id), nil, suitBonusTbl, nil, human)
 			end
 		end
 
@@ -58,7 +59,7 @@ function query(human, heroID, heroIndex)
            heroGrid.fuwen[i].id ~= nil then
 			cnt = cnt + 1
             msgRet.fuwens[cnt].pos = i
-			Grid.makeItem(msgRet.fuwens[cnt].fuwen, heroGrid.fuwen[i].id, 1,nil,heroGrid.fuwen[i],-1, Grid.getOpflagAtBag(heroGrid.fuwen[i].id))
+			Grid.makeItem(msgRet.fuwens[cnt].fuwen, heroGrid.fuwen[i].id, 1, nil, heroGrid.fuwen[i], -1, Grid.getOpflagAtBag(heroGrid.fuwen[i].id), nil, nil, nil, human)
 		end
 
 		msgRet.fuwenGrid[i] = 1
@@ -104,7 +105,7 @@ function putOn(human, heroID, heroIndex, bagIndex, noCalc)
 	--获取宝石加成
 	local suitBonusTbl = HeroGem.suitAttrBonus(heroGrid)
 
-    Grid.makeItem(msgRet.equip, equipID, 1, nil, equipGrid, bagIndex, Grid.getOpflagAtBag(equipID), nil, suitBonusTbl)
+    Grid.makeItem(msgRet.equip, equipID, 1, nil, equipGrid, bagIndex, Grid.getOpflagAtBag(equipID), nil, suitBonusTbl, nil, human)
 
     if heroGrid.equip == nil or
         heroGrid.equip[pos] == nil then
@@ -210,7 +211,7 @@ function putOnHero(human, heroID, heroIndex, putHeroID, putHeroIndex, putHeroPos
 	--获取宝石加成
 	local suitBonusTbl = HeroGem.suitAttrBonus(heroGrid)
 
-    Grid.makeItem(msgRet.equip, equipID, 1, nil, equipGrid, bagIndex, Grid.getOpflagAtBag(equipID), nil, suitBonusTbl)
+    Grid.makeItem(msgRet.equip, equipID, 1, nil, equipGrid, bagIndex, Grid.getOpflagAtBag(equipID), nil, suitBonusTbl, nil, human)
 	
     --Grid.makeItem(msgRet.equip, equipID, 1, nil, equipGrid, 0, Grid.getOpflagAtBag(equipID))
     Msg.send(msgRet, human.fd)
@@ -295,7 +296,7 @@ function putOffQuick(human, heroID, heroIndex, noSendDy)
     end
 end
 
-function doCalcHero(obj,attrs)
+function doCalcHero(human, obj, attrs)
 	local equip = obj.equip
 	if not equip then return end
 	
@@ -386,6 +387,12 @@ function doCalcHero(obj,attrs)
 					if equipConfig.subType == ItemDefine.EQUIP_SUBTYPE_RING or equipConfig.subType == ItemDefine.EQUIP_SUBTYPE_AMULET then
 						equipSuitCntTable[equipConfig.suit].isSpEquip = 1
 					end
+
+					--等级 >= 15级的装备
+					if equipConfig.jobSuitIm and next(equipConfig.jobSuitIm) then
+						local jobId = EquipLogicGrid.GetEquipOwnerJob(human, equipGrid)
+						equipSuitCntTable[equipConfig.suit].jobId = jobId
+					end
 				end
 			end
 		end
@@ -397,9 +404,16 @@ function doCalcHero(obj,attrs)
 			if v.cnt > 1 then
 				local equipIDTemp = v.equipID
 				local equipConfigTemp = EquipExcel.equip[equipIDTemp]
-				for i = 1, #equipConfigTemp.suitIm do
-					local keyTemp = equipConfigTemp.suitIm[i][1]
-					local valTemp = equipConfigTemp.suitIm[i][2]
+				local suitImCfg = equipConfigTemp.suitIm
+				if v.jobId then
+					suitImCfg = Util.copyTable(equipConfigTemp.suitIm)
+					local attrInfo = equipConfigTemp.jobSuitIm[v.jobId]
+					EquipLogicGrid.MergeEquipSuitIm(suitImCfg, attrInfo)
+				end
+
+				for i = 1, #suitImCfg do
+					local keyTemp = suitImCfg[i][1]
+					local valTemp = suitImCfg[i][2]
 					if v.cnt > i then
 						-- 普通套装
 						if v.isSpEquip ~= 1 and (suitBonusTbl and suitBonusTbl[i+1]) then
@@ -457,7 +471,7 @@ function jihuoShuijing(human, heroID, heroIndex)
 	local msgRet = Msg.gc.GC_HERO_EQUIP_PUTON
 	msgRet.heroID = heroID
 	msgRet.heroIndex = heroIndex
-	Grid.makeItem(msgRet.equip, equipID, 1, heroGrid.shuijingAttrID)
+	Grid.makeItem(msgRet.equip, equipID, 1, heroGrid.shuijingAttrID, nil, nil, nil, nil, nil, nil, human)
 	Msg.send(msgRet, human.fd)
 end
 
@@ -533,7 +547,7 @@ function shuijingTransDo(human, heroID, heroIndex)
 	human.tempAttrID = equipConfig.shuijingAttrID[indexTemp]
 
 	-- 通知客户端
-	Grid.makeItem(msgRet.equip, equipID, 1, human.tempAttrID)
+	Grid.makeItem(msgRet.equip, equipID, 1, human.tempAttrID, nil, nil, nil, nil, nil, nil, human)
 	Msg.send(msgRet, human.fd)
 end
 
@@ -567,7 +581,7 @@ function shuijingTransSave(human, heroID, heroIndex)
 	local msgRet = Msg.gc.GC_HERO_EQUIP_PUTON
 	msgRet.heroID = heroID
 	msgRet.heroIndex = heroIndex
-	Grid.makeItem(msgRet.equip, equipID, 1, heroGrid.shuijingAttrID)
+	Grid.makeItem(msgRet.equip, equipID, 1, heroGrid.shuijingAttrID, nil, nil, nil, nil, nil, nil, human)
 	Msg.send(msgRet, human.fd)
 	
 	local msgRet = Msg.gc.GC_SHUIJING_TRANS_SAVE
@@ -611,7 +625,7 @@ function shuijingUpLvQuery(human, mainType, heroID, heroIndex)
 	msgRet.equip[0] = 1
 	local attrID = heroGrid.shuijingAttrID
 	local tempAttrID = EquipExcel.shuijingAttr[attrID].lockNextID
-	Grid.makeItem(msgRet.equip[1], nextID, 1, tempAttrID)
+	Grid.makeItem(msgRet.equip[1], nextID, 1, tempAttrID, nil, nil, nil, nil, nil, nil, human)
 	Msg.send(msgRet, human.fd)
 end
 
@@ -689,13 +703,13 @@ function shuijingUpLvDo(human, mainType, heroID, heroIndex)
 	local msgRet = Msg.gc.GC_HERO_EQUIP_PUTON
 	msgRet.heroID = heroID
 	msgRet.heroIndex = heroIndex
-	Grid.makeItem(msgRet.equip, nextID, 1, heroGrid.shuijingAttrID)
+	Grid.makeItem(msgRet.equip, nextID, 1, heroGrid.shuijingAttrID, nil, nil, nil, nil, nil, nil, human)
 	Msg.send(msgRet, human.fd)
 	
 	local msgRet = Msg.gc.GC_SHUIJING_UPLV_DO
 	msgRet.heroID = heroID
 	msgRet.heroIndex = heroIndex
-	Grid.makeItem(msgRet.equip, nextID, 1, heroGrid.shuijingAttrID)
+	Grid.makeItem(msgRet.equip, nextID, 1, heroGrid.shuijingAttrID, nil, nil, nil, nil, nil, nil, human)
 	Msg.send(msgRet, human.fd)
 end
 
@@ -724,7 +738,7 @@ function shenqiUpLvQuery(human, heroID, heroIndex)
 	msgRet.heroID = heroID
 	msgRet.heroIndex = heroIndex
 	msgRet.needExp = shenqiUpNeedConfig.needExp
-	Grid.makeItem(msgRet.equip, nextID, 1)
+	Grid.makeItem(msgRet.equip, nextID, 1, nil, nil, nil, nil, nil, nil, nil, human)
 	Msg.send(msgRet, human.fd)
 end
 
@@ -811,7 +825,7 @@ function shenqiUpLvDo(human, heroID, heroIndex, equipIDList, equipCntList)
 	local msgRet = Msg.gc.GC_HERO_EQUIP_PUTON
 	msgRet.heroID = heroID
 	msgRet.heroIndex = heroIndex
-	Grid.makeItem(msgRet.equip, nextID, 1)
+	Grid.makeItem(msgRet.equip, nextID, 1, nil, nil, nil, nil, nil, nil, nil, human)
 	Msg.send(msgRet, human.fd)
 	
 	local msgRet = Msg.gc.GC_SHENQI_UPLV_DO
@@ -819,7 +833,7 @@ function shenqiUpLvDo(human, heroID, heroIndex, equipIDList, equipCntList)
 	msgRet.heroIndex = heroIndex
 	if backCnt > 0 then 
 		msgRet.equip[0] = 1
-		Grid.makeItem(msgRet.equip[1], HeroDefine.DEFAULT_SHENQI_UPLV_BACK,backCnt)
+		Grid.makeItem(msgRet.equip[1], HeroDefine.DEFAULT_SHENQI_UPLV_BACK, backCnt, nil, nil, nil, nil, nil, nil, nil, human)
 	else
 		msgRet.equip[0] = 0
 	end

+ 19 - 3
script/module/hero/HeroExclusiveWeapon.lua

@@ -13,6 +13,7 @@ local RoleDefine = require("role.RoleDefine")
 local ObjHuman = require("core.ObjHuman")
 local Config = require("excel.weapon").weapon
 local HeroExcel = require("excel.hero").hero
+local TalismanLogic = require("talisman.TalismanLogic")
 
 local GiftLogic
 
@@ -22,6 +23,14 @@ local LOGTAG = "HeroExclusiveWeapon" --日志标识
 local SSRGRADE = 4          -- SSR英雄的grade值
 
 
+-- 获取来自秘宝的属性倍数加成
+local function getAttrMulFromTalisman(human)
+    local attrMul = TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.HeroExclusiveWeapon_Attr_Mul)
+    attrMul = attrMul / 100
+    return attrMul
+end
+
+
 --获取英雄的专属武器配置
 local function getHeroWeaponCfg(heroID)
     for _, cfg in pairs(Config) do
@@ -113,7 +122,7 @@ end
 
 
 --专属武器加成
-function doCalcHero(heroGrid, addAttrs)
+function doCalcHero(human, heroGrid, addAttrs)
     if not heroGrid or not heroGrid.weaponLv then
         return
     end
@@ -124,8 +133,12 @@ function doCalcHero(heroGrid, addAttrs)
     end
 
     local nowWeaponLv = heroGrid.weaponLv
+
+    local attrMul = getAttrMulFromTalisman(human)
+    attrMul = 1 + attrMul
+
     for _, v in ipairs(cfg.normalAttrs) do
-        RoleAttr.updateValue(v[1], v[2] * nowWeaponLv, addAttrs)
+        RoleAttr.updateValue(v[1], v[2] * nowWeaponLv * attrMul, addAttrs)
     end
 end
 
@@ -248,6 +261,9 @@ function Query(human, heroID, heroIndex)
             costInfo[0] = len
         end
 
+        local attrMul = getAttrMulFromTalisman(human)
+        attrMul = 1 + attrMul
+
         --普通属性加成
         local normalAttrs = msgRet.normalAttrs
         local normalAttrsCfg = cfg.normalAttrs
@@ -255,7 +271,7 @@ function Query(human, heroID, heroIndex)
         for k, v in ipairs(normalAttrsCfg) do
             normalAttrs[k] = {}
             normalAttrs[k].key = v[1] or 0
-            normalAttrs[k].value = v[2] * nowWeaponLv
+            normalAttrs[k].value = v[2] * nowWeaponLv * attrMul
         end
 
         --特殊效果

+ 16 - 2
script/module/hero/HeroPubLogic.lua

@@ -25,6 +25,7 @@ local RoleSystemLogic = require("roleSystem.RoleSystemLogic")
 local RoleSystemDefine = require("roleSystem.RoleSystemDefine")
 local Grid = require("bag.Grid")
 local BagLogic = require("bag.BagLogic")
+local TalismanLogic = require("talisman.TalismanLogic")
 
 
 HERO_OP_UPSTAR      = 1     -- 升星/合成
@@ -34,6 +35,14 @@ HERO_OP_ADD         = 4     -- 获得
 
 local LOGTAG = "HeroPub"
 
+-- 获取来自秘宝的属性倍数加成
+local function getAttrMulFromTalisman(human)
+    local attrMul = TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.HeroPubLogic_Attr_Mul)
+    attrMul = attrMul / 100
+    return attrMul
+end
+
+
 local function initPubData(human)
     human.db.heroPubData = human.db.heroPubData or {}
     human.db.heroPubData.activateIdxList = human.db.heroPubData.activateIdxList or {}
@@ -345,6 +354,9 @@ local function respndAttrInfo(human)
     local heroPubData = getPubData(human)
     local nowMaxStar = calcAllHeroStar(human.pubHeroList)
 
+    local attrMul = getAttrMulFromTalisman(human)
+    attrMul = 1 + attrMul
+
     local msgRet = Msg.gc.GC_HEROPUB_ATTR_QUERY
     msgRet.star = nowMaxStar
     local attrList = msgRet.attrList
@@ -363,7 +375,7 @@ local function respndAttrInfo(human)
         local attrInfo = attrList[len].attrInfo
         for k ,v in ipairs(cfg.attrs) do
             attrInfo[k].key = v[1]
-            attrInfo[k].value = v[2]
+            attrInfo[k].value = v[2] * attrMul
 
             attrInfo[0] = k
         end
@@ -433,12 +445,14 @@ function doCalcHero(human, attrs)
         return
     end
 
+    local attrMul = getAttrMulFromTalisman(human)
+    attrMul = 1 + attrMul
 
     local activateIdxList = heroPubData.activateIdxList
     for k, v in ipairs(HeroPubCfg) do
         if activateIdxList[k] then
             for _, attrInfo in ipairs(v.attrs) do
-                RoleAttr.updateValue(attrInfo[1], attrInfo[2], attrs)
+                RoleAttr.updateValue(attrInfo[1], attrInfo[2] * attrMul, attrs)
             end
         end
     end

+ 18 - 3
script/module/hero/HeroTianYuan.lua

@@ -10,12 +10,21 @@ local RoleAttr = require("role.RoleAttr")
 local HeroTianYuanCfg = require("excel.heroTianYuan")
 local Broadcast = require("broadcast.Broadcast")
 local RoleDefine = require("role.RoleDefine")
+local TalismanLogic = require("talisman.TalismanLogic")
 
 local GiftLogic
 
 local LOGTAG = "HeroTianYuan" --日志标识
 
 
+-- 获取来自秘宝的属性倍数加成
+local function getAttrMulFromTalisman(human)
+    local attrMul = TalismanLogic.getTalismanAdd(human, TalismanLogic.OTHER_EFFECT_TBL.HeroTianYuan_Attr_Mul)
+    attrMul = attrMul / 100
+    return attrMul
+end
+
+
 local function initData(heroGrid)
     heroGrid.tianYuanData = {
         pointIdx = 0,
@@ -221,8 +230,11 @@ function doCalcHero(human, heroGrid, tatgetAttrs)
     local nowPointIdx = heroGrid.tianYuanData.pointIdx or 0
     local sourceAttrs = calcData(nowStage, nowPointIdx, 1)
 
+    local attrMul = getAttrMulFromTalisman(human)
+    attrMul = 1 + attrMul
+
     for attrId, attrVal in pairs(sourceAttrs or {}) do
-        RoleAttr.updateValue(attrId, attrVal, tatgetAttrs)
+        RoleAttr.updateValue(attrId, attrVal * attrMul, tatgetAttrs)
     end
 end
 
@@ -268,6 +280,9 @@ function HeroTianYuan_Query(human, heroID, heroIndex)
     --     Grid.makeItem(msgRet.cost[i], itemId, itemCnt)
     -- end
 
+    local attrMul = getAttrMulFromTalisman(human)
+    attrMul = 1 + attrMul
+
     -- 总加成属性
     msgRet.attrs[0] = 0
     local attrs = calcData(nowStage, nowPointIdx, 1)
@@ -277,7 +292,7 @@ function HeroTianYuan_Query(human, heroID, heroIndex)
             len = len + 1
             msgRet.attrs[0] = len
             msgRet.attrs[len].key = attrId
-            msgRet.attrs[len].value = attrVal
+            msgRet.attrs[len].value = attrVal * attrMul
         end
     end
 
@@ -289,7 +304,7 @@ function HeroTianYuan_Query(human, heroID, heroIndex)
             msgRet.nextAttrs[0] = #nextAttrs
             for i, attrTb in ipairs(nextAttrs) do
                 msgRet.nextAttrs[i].key = attrTb[1]
-                msgRet.nextAttrs[i].value = attrTb[2]
+                msgRet.nextAttrs[i].value = attrTb[2] * attrMul
             end
         end
     end

+ 2 - 2
script/module/role/RoleAttr.lua

@@ -166,7 +166,7 @@ function calcHeroGrid(heroGrid, index, human)
 		SkinLogic.doCalcSkinHero(human,HERO_BASE_ATTRS)
 	end
 	BeSkill.doCalcHero(heroGrid, HERO_BASE_ATTRS) -- 被动技能属性
-	HeroEquip.doCalcHero(heroGrid, HERO_OTHER_ATTRS) -- 装备
+	HeroEquip.doCalcHero(human, heroGrid, HERO_OTHER_ATTRS) -- 装备
     FuwenLogic.doCalcHero(heroGrid, HERO_OTHER_ATTRS) -- 符文	
 	UnionTecLogic.doCalcHero(human, heroGrid, HERO_OTHER_ATTRS) -- 公会科技	
 	RoleHeadLogic.doCalcHero(human, HERO_OTHER_ATTRS) --称号
@@ -178,7 +178,7 @@ function calcHeroGrid(heroGrid, index, human)
 
 	TalismanLogic.doCalcHero(human, heroGrid, HERO_OTHER_ATTRS) --秘宝
 
-	HeroExclusiveWeapon.doCalcHero(heroGrid, HERO_OTHER_ATTRS) -- 专属武器
+	HeroExclusiveWeapon.doCalcHero(human, heroGrid, HERO_OTHER_ATTRS) -- 专属武器
 	WinnerRelicLogic.doCalcHero(human, heroGrid, HERO_OTHER_ATTRS) --圣者遗物
 
 	HeroPubLogic.doCalcHero(human, HERO_OTHER_ATTRS) --英雄酒馆

+ 17 - 0
script/module/talisman/TalismanLogic.lua

@@ -60,6 +60,11 @@ OTHER_EFFECT_TBL = {
     ["WinnerRelic_Attr_Mul"] = "WinnerRelic_Attr_Mul", -- 圣遗物系统通用属性加成
     ["Elf_Attr_Mul"] = "Elf_Attr_Mul",              -- 精灵系统通用属性加成
     ["Moshou_LvAttr_Mul"] = "Moshou_LvAttr_Mul",    -- 守护凤凰系统等级加成属性的加成
+
+    ["HeroExclusiveWeapon_Attr_Mul"] = "HeroExclusiveWeapon_Attr_Mul",    -- 英雄专属武器系统加成
+    ["HeroTianYuan_Attr_Mul"] = "HeroTianYuan_Attr_Mul",                  -- 英雄天元系统加成
+    ["HeroArtifacts_LvAttr_Mul"] = "HeroArtifacts_LvAttr_Mul",            -- 英雄神威灵装系统加成
+    ["HeroPubLogic_Attr_Mul"] = "HeroPubLogic_Attr_Mul",                  -- 英雄酒馆系统加成
 }
 
 --是否开启本系统
@@ -189,6 +194,18 @@ function doCalcHero(human, heroGrid, addAttrs)
                 if singleAttr[1] == heroCfg.camp then
                     RoleAttr.updateValue(singleAttr[2], singleAttr[3], addAttrs)
                 end
+            elseif #singleAttr == 4 then
+                local bl = false
+                local tp = singleAttr[1]
+                if tp == 1 then -- 职业
+                    if heroCfg.job == singleAttr[2] then
+                        bl = true
+                    end
+                end
+
+                if bl then
+                    RoleAttr.updateValue(singleAttr[3], singleAttr[4], addAttrs)
+                end
             end
         end
     end