|
|
@@ -15,6 +15,7 @@ local Util = require("common.Util")
|
|
|
local ItemExcel = require("excel.item").item
|
|
|
local FuwenLogic = require("fuwen.FuwenLogic")
|
|
|
local EquipLogic = require("equip.EquipLogic")
|
|
|
+local HeroGem = require("hero.HeroGem")
|
|
|
|
|
|
function query(human, heroID, heroIndex)
|
|
|
local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)
|
|
|
@@ -26,6 +27,9 @@ function query(human, heroID, heroIndex)
|
|
|
msgRet.id = heroID
|
|
|
msgRet.index = heroIndex
|
|
|
|
|
|
+ --宝石套装加成
|
|
|
+ local suitBonusTbl = HeroGem.suitAttrBonus(heroGrid)
|
|
|
+
|
|
|
local cnt = 0
|
|
|
for i = 1, ItemDefine.EQUIP_MAX_CNT do
|
|
|
local equipGrid = heroGrid.equip and heroGrid.equip[i]
|
|
|
@@ -34,7 +38,7 @@ function query(human, heroID, heroIndex)
|
|
|
if i == ItemDefine.EQUIP_SUBTYPE_SHUIJIN then -- 水晶比较特殊
|
|
|
Grid.makeItem(msgRet.equips[cnt], equipGrid.id, 1, heroGrid.shuijingAttrID)
|
|
|
else
|
|
|
- Grid.makeItem(msgRet.equips[cnt], equipGrid.id, 1, nil, equipGrid, -1, Grid.getOpflagAtBag(heroGrid.equip[i].id))
|
|
|
+ Grid.makeItem(msgRet.equips[cnt], equipGrid.id, 1, nil, equipGrid, -1, Grid.getOpflagAtBag(heroGrid.equip[i].id),nil,suitBonusTbl)
|
|
|
end
|
|
|
end
|
|
|
|
|
|
@@ -96,7 +100,11 @@ function putOn(human, heroID, heroIndex, bagIndex, noCalc)
|
|
|
local msgRet = Msg.gc.GC_HERO_EQUIP_PUTON
|
|
|
msgRet.heroID = heroID
|
|
|
msgRet.heroIndex = heroIndex
|
|
|
- Grid.makeItem(msgRet.equip, equipID, 1, nil, equipGrid, bagIndex, Grid.getOpflagAtBag(equipID))
|
|
|
+
|
|
|
+ --获取宝石加成
|
|
|
+ local suitBonusTbl = HeroGem.suitAttrBonus(heroGrid)
|
|
|
+
|
|
|
+ Grid.makeItem(msgRet.equip, equipID, 1, nil, equipGrid, bagIndex, Grid.getOpflagAtBag(equipID), nil, suitBonusTbl)
|
|
|
|
|
|
if heroGrid.equip == nil or
|
|
|
heroGrid.equip[pos] == nil then
|
|
|
@@ -198,7 +206,13 @@ function putOnHero(human, heroID, heroIndex, putHeroID, putHeroIndex, putHeroPos
|
|
|
local msgRet = Msg.gc.GC_HERO_EQUIP_PUTON
|
|
|
msgRet.heroID = heroID
|
|
|
msgRet.heroIndex = heroIndex
|
|
|
- Grid.makeItem(msgRet.equip, equipID, 1, nil, equipGrid, 0, Grid.getOpflagAtBag(equipID))
|
|
|
+
|
|
|
+ --获取宝石加成
|
|
|
+ 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, 0, Grid.getOpflagAtBag(equipID))
|
|
|
Msg.send(msgRet, human.fd)
|
|
|
end
|
|
|
|
|
|
@@ -281,6 +295,9 @@ function doCalcHero(obj,attrs)
|
|
|
local equip = obj.equip
|
|
|
if not equip then return end
|
|
|
|
|
|
+
|
|
|
+ local suitBonusTbl = HeroGem.suitAttrBonus(obj)
|
|
|
+
|
|
|
local mathFloor = math.floor
|
|
|
local equipSuitCntTable = nil
|
|
|
for i = 1,ItemDefine.EQUIP_MAX_CNT do
|
|
|
@@ -289,14 +306,16 @@ function doCalcHero(obj,attrs)
|
|
|
local equipID = equipGrid.id
|
|
|
local equipConfig = EquipExcel.equip[equipID]
|
|
|
local baseRate = EquipLogic.getEquipBaseRate(equipGrid.quality)
|
|
|
+
|
|
|
-- 水晶
|
|
|
if equipConfig.subType == ItemDefine.EQUIP_SUBTYPE_SHUIJIN then
|
|
|
for _,v in ipairs(EquipExcel.shuijingAttr[obj.shuijingAttrID].attr) do
|
|
|
RoleAttr.updateValue(v[1],v[2],attrs)
|
|
|
end
|
|
|
else
|
|
|
+ --装备基础属性
|
|
|
for _,v in ipairs(equipConfig.base) do
|
|
|
- RoleAttr.updateValue(v[1],mathFloor(v[2] * baseRate),attrs)
|
|
|
+ RoleAttr.updateValue(v[1],mathFloor(v[2] * baseRate * (1 + (suitBonusTbl and suitBonusTbl.base or 0))),attrs)
|
|
|
end
|
|
|
|
|
|
-- 随机属性
|
|
|
@@ -340,6 +359,11 @@ function doCalcHero(obj,attrs)
|
|
|
local keyTemp = equipConfigTemp.suitIm[i][1]
|
|
|
local valTemp = equipConfigTemp.suitIm[i][2]
|
|
|
if v.cnt > i then
|
|
|
+ if suitBonusTbl and suitBonusTbl[i+1] then
|
|
|
+ --suitIm={{203,2500},{201,2500},{219,1500}}
|
|
|
+ --这里i+1的原因是,装备套装属性配置suitIm中, idx为1的value是2件套加成, idx为2的是3件套加成,以此类推
|
|
|
+ valTemp = valTemp * (1 + suitBonusTbl[i+1]) --宝石对套装的加成
|
|
|
+ end
|
|
|
RoleAttr.updateValue(keyTemp,valTemp,attrs)
|
|
|
end
|
|
|
end
|