diff --git a/src/models/HeroPlugin.lua b/src/models/HeroPlugin.lua index b1e301d..81d28a7 100644 --- a/src/models/HeroPlugin.lua +++ b/src/models/HeroPlugin.lua @@ -154,7 +154,7 @@ function HeroPlugin.bind(Hero) local rune = self.owner.runeBag[uid] local buildData = csvdb["rune_buildCsv"][rune:getProperty("level")] for k,v in pairs(rune:getProperty("attrs"):toNumMap()) do - attrs.value[AttsEnumEx[k]] = attrs.value[AttsEnumEx[k]] + (v * (1 + buildData.effect/100)) + attrs.value[AttsEnumEx[k]] = attrs.value[AttsEnumEx[k]] + (v / 10 * (1 + buildData.effect/100)) -- 零件的加成属性有特殊需求 填的是 10倍的值 end local csvData = csvdb["runeCsv"][rune:getProperty("type")][rune:getProperty("id")] diff --git a/src/models/Rune.lua b/src/models/Rune.lua index 070b40f..e6d6c88 100644 --- a/src/models/Rune.lua +++ b/src/models/Rune.lua @@ -53,34 +53,29 @@ end local function getRandomValue(types,values) local typeMap = types:toNumMap() local valueArry = values:toArray() + if table.nums(typeMap) ~= #valueArry then return nil end - local typ,value - local typTab,weightSum = {},0 + local typ, value + local typTab = {} for t,w in pairs(typeMap) do - weightSum = weightSum + w - table.insert(typTab,{t=t,w=weightSum}) + table.insert(typTab,{t=t,w=w}) end - local tk - local tmp = math.random(1,weightSum) - for k,v in ipairs(typTab) do - if v.w >= tmp then - typ = v.t - tk = k - break - end - end + local tk = math.randWeight(typTab, "w") + typ = typTab[tk]["t"] local range = valueArry[tk]:toArray(true,"=") - value = math.random(range[1],range[2]) - return typ,value + value = math.randomInt(range[1],range[2]) + return typ, value end function Rune:generateAttrs() local runeData = csvdb["runeCsv"][self:getProperty("type")][self:getProperty("id")] local attrs = "" - attrs = attrs:setv(getRandomValue(runeData.attr1,runeData.range1)) - attrs = attrs:setv(getRandomValue(runeData.attr2,runeData.range2)) + local typ, value = getRandomValue(runeData.attr1,runeData.range1) + attrs = attrs:setv(typ, value) + local typ, value = getRandomValue(runeData.attr1,runeData.range1) + attrs = attrs:setv(typ, value) self:setProperty("attrs",attrs) end -- libgit2 0.21.2