Jelajahi Sumber

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

gitxsm 7 bulan lalu
induk
melakukan
683f2c5028

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

@@ -70,7 +70,6 @@ local function getAttrMulFromTalisman(human)
     return attrMul
     return attrMul
 end
 end
 
 
-
 local function getNextStarCostCnt(nextStar)
 local function getNextStarCostCnt(nextStar)
     for _, starCfg in ipairs(ElfConfig.UpGradeStar) do
     for _, starCfg in ipairs(ElfConfig.UpGradeStar) do
         if nextStar == starCfg.star then
         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)
 local function populateMsgSimpleData(net, elfCfg, itemCfg, elfData)
     if not net or not elfCfg or not itemCfg then
     if not net or not elfCfg or not itemCfg then
         return
         return
@@ -133,12 +174,11 @@ local function populateMsgSimpleData(net, elfCfg, itemCfg, elfData)
 end
 end
 
 
 local function populateMsgAttr(attrNet, attrCfg, attrId, elfLv, isMax, attrMul)
 local function populateMsgAttr(attrNet, attrCfg, attrId, elfLv, isMax, attrMul)
-    attrMul = 1 + attrMul
-
+    local sumAttrVal = calcLvAttr(elfLv, attrCfg)
     attrNet.nowAttr.key = attrId
     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.key = attrId
-    attrNet.addAtrr.value = attrCfg[2] * attrMul
+    attrNet.addAtrr.value = attrCfg[1]
     if isMax then
     if isMax then
         attrNet.addAtrr.value = 0
         attrNet.addAtrr.value = 0
     end
     end
@@ -150,7 +190,7 @@ local function populateMsgAttr2(attrNet, attrId, attrVal, elfStar, isMax, attrMu
     attrNet.nowAttr.key = attrId
     attrNet.nowAttr.key = attrId
     attrNet.nowAttr.value = attrVal * elfStar * attrMul
     attrNet.nowAttr.value = attrVal * elfStar * attrMul
     attrNet.addAtrr.key = attrId
     attrNet.addAtrr.key = attrId
-    attrNet.addAtrr.value = attrVal * attrMul
+    attrNet.addAtrr.value = attrVal
     if isMax then
     if isMax then
         attrNet.addAtrr.value = 0
         attrNet.addAtrr.value = 0
     end
     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)
 local function isOpen(human)
@@ -280,8 +287,8 @@ function doCalcHero(human, addAttrs)
         if elfCfg then
         if elfCfg then
             -- 等级加成
             -- 等级加成
             if singleElfData.level > 0 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.ATK, atkVal * attrMul, addAttrs)
                 RoleAttr.updateValue(RoleDefine.HP, hpVal * attrMul, addAttrs)
                 RoleAttr.updateValue(RoleDefine.HP, hpVal * attrMul, addAttrs)
             end
             end

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

@@ -36,8 +36,7 @@ local function getAttrMulFromTalisman(human)
     return attrMul
     return attrMul
 end
 end
 
 
-local function calAttrSum(human, net, lv)
-    local attrMul = getAttrMulFromTalisman(human)
+local function calAttrSum(net, lv, attrMul)
     attrMul = 1 + attrMul
     attrMul = 1 + attrMul
 
 
     for i = 1, lv do
     for i = 1, lv do
@@ -81,6 +80,7 @@ local function sendToclient(human)
         msgRet.nowRealmName = nowRealmCfg.name
         msgRet.nowRealmName = nowRealmCfg.name
     end
     end
 
 
+    local attrMul = getAttrMulFromTalisman(human)
     local attrsCfg = nowRealmCfg.attrs
     local attrsCfg = nowRealmCfg.attrs
     msgRet.nowAttrs[0] = #attrsCfg
     msgRet.nowAttrs[0] = #attrsCfg
 
 
@@ -91,7 +91,7 @@ local function sendToclient(human)
             msgRet.nowAttrs[k].value = 0
             msgRet.nowAttrs[k].value = 0
         end
         end
     else
     else
-        calAttrSum(human, msgRet.nowAttrs, realmLv)
+        calAttrSum(msgRet.nowAttrs, realmLv, attrMul)
     end
     end
 
 
     local itemId, itemCnt, nextRealmCfg
     local itemId, itemCnt, nextRealmCfg
@@ -101,11 +101,11 @@ local function sendToclient(human)
             return
             return
         end
         end
         itemCnt = nextRealmCfg.itemCnt
         itemCnt = nextRealmCfg.itemCnt
-        calAttrSum(human, msgRet.nextAttrs, realmLv+1)
+        calAttrSum(msgRet.nextAttrs, realmLv+1, 0)
     else
     else
         nextRealmCfg = realmConfig[realmLv]
         nextRealmCfg = realmConfig[realmLv]
         itemCnt = 0
         itemCnt = 0
-        calAttrSum(human, msgRet.nextAttrs, realmLv)
+        calAttrSum(msgRet.nextAttrs, realmLv, 0)
     end
     end
     itemId = nextRealmCfg.itemId
     itemId = nextRealmCfg.itemId
     Grid.makeItem(msgRet.itemData, itemId, itemCnt)
     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
     tNode[4].value = tConfig2.nSpeed*tstar * attrMul
 end
 end
 
 
-local function AddTableAttr2(tNode, tConfig, tConfig2, attrMul)
-    attrMul = 1 + attrMul
-
+local function AddTableAttr2(tNode, tConfig, tConfig2)
     tNode[0] = 4
     tNode[0] = 4
     tNode[1].key = tConfig.HP
     tNode[1].key = tConfig.HP
-    tNode[1].value = tConfig2.nLife * attrMul
+    tNode[1].value = tConfig2.nLife
     tNode[2].key = tConfig.ATK
     tNode[2].key = tConfig.ATK
-    tNode[2].value= tConfig2.nAttack * attrMul
+    tNode[2].value= tConfig2.nAttack
     tNode[3].key = tConfig.DEF
     tNode[3].key = tConfig.DEF
-    tNode[3].value = tConfig2.nDefense * attrMul
+    tNode[3].value = tConfig2.nDefense
     tNode[4].key = tConfig.SPEED
     tNode[4].key = tConfig.SPEED
-    tNode[4].value = tConfig2.nSpeed * attrMul
+    tNode[4].value = tConfig2.nSpeed
 end
 end
 
 
 -- 获取所有圣遗物的总星级
 -- 获取所有圣遗物的总星级
@@ -165,7 +163,7 @@ function Listofrelics(human)
             msgEntry.name = relicCfg.nName
             msgEntry.name = relicCfg.nName
             msgEntry.activateItem = relicCfg.nProp
             msgEntry.activateItem = relicCfg.nProp
             AddTableAttr(msgEntry.attr, RoleDefine, relicCfg, currentStar, attrMul)
             AddTableAttr(msgEntry.attr, RoleDefine, relicCfg, currentStar, attrMul)
-            AddTableAttr2(msgEntry.nextattr, RoleDefine, relicCfg, attrMul)
+            AddTableAttr2(msgEntry.nextattr, RoleDefine, relicCfg)
             msgEntry.effectDesc = relicCfg.nEffectdescription
             msgEntry.effectDesc = relicCfg.nEffectdescription
             local bonusValues = {}
             local bonusValues = {}
             if relicCfg.nLifeBonus then table.insert(bonusValues, relicCfg.nLifeBonus) end
             if relicCfg.nLifeBonus then table.insert(bonusValues, relicCfg.nLifeBonus) end
@@ -247,7 +245,7 @@ function ActiveandUpgrade(human,relicId)
     RelicData.name = relicCfg.nName
     RelicData.name = relicCfg.nName
     RelicData.activateItem = relicCfg.nProp
     RelicData.activateItem = relicCfg.nProp
     AddTableAttr(RelicData.attr, RoleDefine, relicCfg, nextStar, attrMul)
     AddTableAttr(RelicData.attr, RoleDefine, relicCfg, nextStar, attrMul)
-    AddTableAttr2(RelicData.nextattr, RoleDefine, relicCfg, attrMul)
+    AddTableAttr2(RelicData.nextattr, RoleDefine, relicCfg)
     local bonusValues = {}
     local bonusValues = {}
     RelicData.effectDesc = relicCfg.nEffectdescription
     RelicData.effectDesc = relicCfg.nEffectdescription
     if relicCfg.nLifeBonus then table.insert(bonusValues, relicCfg.nLifeBonus) end
     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)
     local attrMul = getAttrMulFromTalisman(human)
     AddTableAttr(RelicData.attr, RoleDefine, relicCfg, currentStar, attrMul)
     AddTableAttr(RelicData.attr, RoleDefine, relicCfg, currentStar, attrMul)
-    AddTableAttr2(RelicData.nextattr, RoleDefine, relicCfg, attrMul)
+    AddTableAttr2(RelicData.nextattr, RoleDefine, relicCfg)
     RelicData.effectDesc = relicCfg.nEffectdescription
     RelicData.effectDesc = relicCfg.nEffectdescription
     local bonusValues = {}
     local bonusValues = {}
     if relicCfg.nLifeBonus then table.insert(bonusValues, relicCfg.nLifeBonus) end
     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.name = relicCfg.nName
     nRelicData.activateItem = relicCfg.nProp
     nRelicData.activateItem = relicCfg.nProp
     AddTableAttr(nRelicData.attr, RoleDefine, relicCfg, currentStar, attrMul)
     AddTableAttr(nRelicData.attr, RoleDefine, relicCfg, currentStar, attrMul)
-    AddTableAttr2(nRelicData.nextattr, RoleDefine, relicCfg, attrMul)
+    AddTableAttr2(nRelicData.nextattr, RoleDefine, relicCfg)
     nRelicData.effectDesc = relicCfg.nEffectdescription
     nRelicData.effectDesc = relicCfg.nEffectdescription
     local nbonusValues = {}
     local nbonusValues = {}
     if relicCfg.nLifeBonus then table.insert(nbonusValues, relicCfg.nLifeBonus) end
     if relicCfg.nLifeBonus then table.insert(nbonusValues, relicCfg.nLifeBonus) end