Browse Source

修改秘宝对各系统属性的加成逻辑

gitxsm 6 tháng trước cách đây
mục cha
commit
683f2c5028

+ 48 - 41
script/module/elf/ElfLogic.lua

@@ -70,7 +70,6 @@ local function getAttrMulFromTalisman(human)
     return attrMul
 end
 
-
 local function getNextStarCostCnt(nextStar)
     for _, starCfg in ipairs(ElfConfig.UpGradeStar) do
         if nextStar == starCfg.star then
@@ -106,6 +105,48 @@ end
 
 
 
+-- 计算一共可以升多少级, 消耗多少道具
+local function calcUpGrade(nowLv, itemAllCnt, maxLv)
+    local addLv, oldItemAllCnt, itemCostCnt = 0, itemAllCnt, 0
+    while true do
+        nowLv = nowLv + 1
+        if nowLv > maxLv then
+            break
+        end
+
+        itemCostCnt = nowLv * 3 + 2
+        if itemAllCnt < itemCostCnt then
+            break
+        end
+
+        addLv = addLv + 1
+        itemAllCnt = itemAllCnt - itemCostCnt
+    end
+
+    local useItemCnt = oldItemAllCnt - itemAllCnt
+
+    return addLv, useItemCnt
+end
+-- 计算当前所有精灵的总星级
+local function calcAllElfStar(elfDataList)
+    local stars = 0
+    for _, elfData in pairs(elfDataList) do
+        stars = stars + elfData.star
+    end
+
+    return stars
+end
+-- 计算精灵当前等级加成属性之和
+local function calcLvAttr(elfLv, attrCfg)
+    local nowAttrVal = 0
+    for i=1, elfLv do
+        nowAttrVal = nowAttrVal + attrCfg[1] * i + attrCfg[2]
+    end
+    return nowAttrVal
+end
+
+
+
 local function populateMsgSimpleData(net, elfCfg, itemCfg, elfData)
     if not net or not elfCfg or not itemCfg then
         return
@@ -133,12 +174,11 @@ local function populateMsgSimpleData(net, elfCfg, itemCfg, elfData)
 end
 
 local function populateMsgAttr(attrNet, attrCfg, attrId, elfLv, isMax, attrMul)
-    attrMul = 1 + attrMul
-
+    local sumAttrVal = calcLvAttr(elfLv, attrCfg)
     attrNet.nowAttr.key = attrId
-    attrNet.nowAttr.value = (attrCfg[1] * elfLv + attrCfg[2]) * attrMul
+    attrNet.nowAttr.value = sumAttrVal * (1 + attrMul)
     attrNet.addAtrr.key = attrId
-    attrNet.addAtrr.value = attrCfg[2] * attrMul
+    attrNet.addAtrr.value = attrCfg[1]
     if isMax then
         attrNet.addAtrr.value = 0
     end
@@ -150,7 +190,7 @@ local function populateMsgAttr2(attrNet, attrId, attrVal, elfStar, isMax, attrMu
     attrNet.nowAttr.key = attrId
     attrNet.nowAttr.value = attrVal * elfStar * attrMul
     attrNet.addAtrr.key = attrId
-    attrNet.addAtrr.value = attrVal * attrMul
+    attrNet.addAtrr.value = attrVal
     if isMax then
         attrNet.addAtrr.value = 0
     end
@@ -158,39 +198,6 @@ end
 
 
 
--- 计算一共可以升多少级, 消耗多少道具
-local function calcUpGrade(nowLv, itemAllCnt, maxLv)
-    local addLv, oldItemAllCnt, itemCostCnt = 0, itemAllCnt, 0
-    while true do
-        nowLv = nowLv + 1
-        if nowLv > maxLv then
-            break
-        end
-
-        itemCostCnt = nowLv * 3 + 2
-        if itemAllCnt < itemCostCnt then
-            break
-        end
-
-        addLv = addLv + 1
-        itemAllCnt = itemAllCnt - itemCostCnt
-    end
-
-    local useItemCnt = oldItemAllCnt - itemAllCnt
-
-    return addLv, useItemCnt
-end
-
--- 计算当前所有精灵的总星级
-local function calcAllElfStar(elfDataList)
-    local stars = 0
-    for _, elfData in pairs(elfDataList) do
-        stars = stars + elfData.star
-    end
-
-    return stars
-end
-
 
 --是否开启本系统
 local function isOpen(human)
@@ -280,8 +287,8 @@ function doCalcHero(human, addAttrs)
         if elfCfg then
             -- 等级加成
             if singleElfData.level > 0 then
-                local atkVal = singleElfData.level * elfCfg.nAttack1[1] + elfCfg.nAttack1[2]
-                local hpVal = singleElfData.level * elfCfg.nLife1[1] + elfCfg.nLife1[2]
+                local atkVal = calcLvAttr(singleElfData.level, elfCfg.nAttack1)
+                local hpVal = calcLvAttr(singleElfData.level, elfCfg.nLife1)
                 RoleAttr.updateValue(RoleDefine.ATK, atkVal * attrMul, addAttrs)
                 RoleAttr.updateValue(RoleDefine.HP, hpVal * attrMul, addAttrs)
             end

+ 5 - 5
script/module/roleSystem/RoleRealmLogic.lua

@@ -36,8 +36,7 @@ local function getAttrMulFromTalisman(human)
     return attrMul
 end
 
-local function calAttrSum(human, net, lv)
-    local attrMul = getAttrMulFromTalisman(human)
+local function calAttrSum(net, lv, attrMul)
     attrMul = 1 + attrMul
 
     for i = 1, lv do
@@ -81,6 +80,7 @@ local function sendToclient(human)
         msgRet.nowRealmName = nowRealmCfg.name
     end
 
+    local attrMul = getAttrMulFromTalisman(human)
     local attrsCfg = nowRealmCfg.attrs
     msgRet.nowAttrs[0] = #attrsCfg
 
@@ -91,7 +91,7 @@ local function sendToclient(human)
             msgRet.nowAttrs[k].value = 0
         end
     else
-        calAttrSum(human, msgRet.nowAttrs, realmLv)
+        calAttrSum(msgRet.nowAttrs, realmLv, attrMul)
     end
 
     local itemId, itemCnt, nextRealmCfg
@@ -101,11 +101,11 @@ local function sendToclient(human)
             return
         end
         itemCnt = nextRealmCfg.itemCnt
-        calAttrSum(human, msgRet.nextAttrs, realmLv+1)
+        calAttrSum(msgRet.nextAttrs, realmLv+1, 0)
     else
         nextRealmCfg = realmConfig[realmLv]
         itemCnt = 0
-        calAttrSum(human, msgRet.nextAttrs, realmLv)
+        calAttrSum(msgRet.nextAttrs, realmLv, 0)
     end
     itemId = nextRealmCfg.itemId
     Grid.makeItem(msgRet.itemData, itemId, itemCnt)

+ 9 - 11
script/module/winnerRelic/WinnerRelicLogic.lua

@@ -107,18 +107,16 @@ local function AddTableAttr(tNode, tConfig, tConfig2,tstar, attrMul)
     tNode[4].value = tConfig2.nSpeed*tstar * attrMul
 end
 
-local function AddTableAttr2(tNode, tConfig, tConfig2, attrMul)
-    attrMul = 1 + attrMul
-
+local function AddTableAttr2(tNode, tConfig, tConfig2)
     tNode[0] = 4
     tNode[1].key = tConfig.HP
-    tNode[1].value = tConfig2.nLife * attrMul
+    tNode[1].value = tConfig2.nLife
     tNode[2].key = tConfig.ATK
-    tNode[2].value= tConfig2.nAttack * attrMul
+    tNode[2].value= tConfig2.nAttack
     tNode[3].key = tConfig.DEF
-    tNode[3].value = tConfig2.nDefense * attrMul
+    tNode[3].value = tConfig2.nDefense
     tNode[4].key = tConfig.SPEED
-    tNode[4].value = tConfig2.nSpeed * attrMul
+    tNode[4].value = tConfig2.nSpeed
 end
 
 -- 获取所有圣遗物的总星级
@@ -165,7 +163,7 @@ function Listofrelics(human)
             msgEntry.name = relicCfg.nName
             msgEntry.activateItem = relicCfg.nProp
             AddTableAttr(msgEntry.attr, RoleDefine, relicCfg, currentStar, attrMul)
-            AddTableAttr2(msgEntry.nextattr, RoleDefine, relicCfg, attrMul)
+            AddTableAttr2(msgEntry.nextattr, RoleDefine, relicCfg)
             msgEntry.effectDesc = relicCfg.nEffectdescription
             local bonusValues = {}
             if relicCfg.nLifeBonus then table.insert(bonusValues, relicCfg.nLifeBonus) end
@@ -247,7 +245,7 @@ function ActiveandUpgrade(human,relicId)
     RelicData.name = relicCfg.nName
     RelicData.activateItem = relicCfg.nProp
     AddTableAttr(RelicData.attr, RoleDefine, relicCfg, nextStar, attrMul)
-    AddTableAttr2(RelicData.nextattr, RoleDefine, relicCfg, attrMul)
+    AddTableAttr2(RelicData.nextattr, RoleDefine, relicCfg)
     local bonusValues = {}
     RelicData.effectDesc = relicCfg.nEffectdescription
     if relicCfg.nLifeBonus then table.insert(bonusValues, relicCfg.nLifeBonus) end
@@ -343,7 +341,7 @@ function putmsg(human,RelicData,relicCfg,oldid,isexist)
 
     local attrMul = getAttrMulFromTalisman(human)
     AddTableAttr(RelicData.attr, RoleDefine, relicCfg, currentStar, attrMul)
-    AddTableAttr2(RelicData.nextattr, RoleDefine, relicCfg, attrMul)
+    AddTableAttr2(RelicData.nextattr, RoleDefine, relicCfg)
     RelicData.effectDesc = relicCfg.nEffectdescription
     local bonusValues = {}
     if relicCfg.nLifeBonus then table.insert(bonusValues, relicCfg.nLifeBonus) end
@@ -501,7 +499,7 @@ function EquipeandRemove(human, heroID, heroIdx, relicId, operate)
     nRelicData.name = relicCfg.nName
     nRelicData.activateItem = relicCfg.nProp
     AddTableAttr(nRelicData.attr, RoleDefine, relicCfg, currentStar, attrMul)
-    AddTableAttr2(nRelicData.nextattr, RoleDefine, relicCfg, attrMul)
+    AddTableAttr2(nRelicData.nextattr, RoleDefine, relicCfg)
     nRelicData.effectDesc = relicCfg.nEffectdescription
     local nbonusValues = {}
     if relicCfg.nLifeBonus then table.insert(nbonusValues, relicCfg.nLifeBonus) end