Commit a43410e1ccce6e078e62299bc350eabaceb781ff
1 parent
e10edb5f
整理格式,使用tab替代空格
Showing
3 changed files
with
218 additions
and
218 deletions
Show diff stats
src/models/Daily.lua
| ... | ... | @@ -3,47 +3,47 @@ |
| 3 | 3 | local Daily = class("Daily", require("shared.ModelBase")) |
| 4 | 4 | |
| 5 | 5 | function Daily:ctor(properties) |
| 6 | - Daily.super.ctor(self, properties) | |
| 6 | + Daily.super.ctor(self, properties) | |
| 7 | 7 | end |
| 8 | 8 | |
| 9 | 9 | Daily.schema = { |
| 10 | - commentHero = {"string", ""}, --单日评论食灵记录 type=1 | |
| 11 | - hangQC ={"number", 0}, -- 挂机快速次数 | |
| 10 | + commentHero = {"string", ""}, --单日评论食灵记录 type=1 | |
| 11 | + hangQC ={"number", 0}, -- 挂机快速次数 | |
| 12 | 12 | } |
| 13 | 13 | |
| 14 | 14 | function Daily:updateProperty(params) |
| 15 | - local type, default = table.unpack(self.schema[params.field]) | |
| 16 | - | |
| 17 | - if params.delta then | |
| 18 | - self:setProperty(params.field, self:getProperty(paramsfield) + params.delta) | |
| 19 | - self.owner:notifyUpdateProperty(params.field, self:getProperty(params.field)) | |
| 20 | - return true | |
| 21 | - end | |
| 22 | - if params.value then | |
| 23 | - self:setProperty(params.field, params.value) | |
| 24 | - self.owner:notifyUpdateProperty(params.field, self:getProperty(params.field)) | |
| 25 | - return true | |
| 26 | - end | |
| 27 | - return false | |
| 15 | + local type, default = table.unpack(self.schema[params.field]) | |
| 16 | + | |
| 17 | + if params.delta then | |
| 18 | + self:setProperty(params.field, self:getProperty(paramsfield) + params.delta) | |
| 19 | + self.owner:notifyUpdateProperty(params.field, self:getProperty(params.field)) | |
| 20 | + return true | |
| 21 | + end | |
| 22 | + if params.value then | |
| 23 | + self:setProperty(params.field, params.value) | |
| 24 | + self.owner:notifyUpdateProperty(params.field, self:getProperty(params.field)) | |
| 25 | + return true | |
| 26 | + end | |
| 27 | + return false | |
| 28 | 28 | end |
| 29 | 29 | |
| 30 | 30 | function Daily:refreshDailyData(notify) |
| 31 | - for field, schema in pairs(self.schema) do | |
| 32 | - if field ~= "key" then | |
| 33 | - local typ, def = table.unpack(schema) | |
| 34 | - self:setProperty(field, def) | |
| 35 | - end | |
| 36 | - end | |
| 37 | - if notify then | |
| 38 | - self.owner:notifyUpdateProperties(self:data()) | |
| 39 | - end | |
| 31 | + for field, schema in pairs(self.schema) do | |
| 32 | + if field ~= "key" then | |
| 33 | + local typ, def = table.unpack(schema) | |
| 34 | + self:setProperty(field, def) | |
| 35 | + end | |
| 36 | + end | |
| 37 | + if notify then | |
| 38 | + self.owner:notifyUpdateProperties(self:data()) | |
| 39 | + end | |
| 40 | 40 | end |
| 41 | 41 | |
| 42 | 42 | function Daily:data() |
| 43 | - return { | |
| 44 | - -- dailyTaskStatus = self:getProperty("dailyTaskStatus"), | |
| 45 | - hangQC = self:getProperty("hangQC"), | |
| 46 | - } | |
| 43 | + return { | |
| 44 | + -- dailyTaskStatus = self:getProperty("dailyTaskStatus"), | |
| 45 | + hangQC = self:getProperty("hangQC"), | |
| 46 | + } | |
| 47 | 47 | end |
| 48 | 48 | |
| 49 | 49 | return Daily |
| 50 | 50 | \ No newline at end of file | ... | ... |
src/models/Hero.lua
| ... | ... | @@ -6,15 +6,15 @@ HeroPlugin.bind(Hero) |
| 6 | 6 | Hero.schema = { |
| 7 | 7 | id = {"number"}, |
| 8 | 8 | type = {"number", 0}, |
| 9 | - level = {"number", 1}, -- 等级 | |
| 10 | - breakL = {"number", 0}, -- 突破等级 | |
| 11 | - wakeL = {"number", 0}, -- 觉醒等级 | |
| 12 | - skillL = {"string", ""}, -- 技能等级 1=1 2=1 3=1 | |
| 13 | - talent = {"string", ""}, -- 0=阶段 1=1 2=1 3=1 4=1 四个天赋当前阶段的等级 阶段默认为1 等级默认为0 | |
| 9 | + level = {"number", 1}, -- 等级 | |
| 10 | + breakL = {"number", 0}, -- 突破等级 | |
| 11 | + wakeL = {"number", 0}, -- 觉醒等级 | |
| 12 | + skillL = {"string", ""}, -- 技能等级 1=1 2=1 3=1 | |
| 13 | + talent = {"string", ""}, -- 0=阶段 1=1 2=1 3=1 4=1 四个天赋当前阶段的等级 阶段默认为1 等级默认为0 | |
| 14 | 14 | battleV = {"number", 0}, -- 保存战斗力 |
| 15 | - loveExp = {"number", 0}, --好感度经验 | |
| 16 | - loveL = {"number", 0}, --好感度等级 | |
| 17 | - skin = {"number", 0}, --皮肤 0 、 1、 2、 3 | |
| 15 | + loveExp = {"number", 0}, --好感度经验 | |
| 16 | + loveL = {"number", 0}, --好感度等级 | |
| 17 | + skin = {"number", 0}, --皮肤 0 、 1、 2、 3 | |
| 18 | 18 | } |
| 19 | 19 | |
| 20 | 20 | function Hero:ctor( properties ) |
| ... | ... | @@ -22,65 +22,65 @@ function Hero:ctor( properties ) |
| 22 | 22 | end |
| 23 | 23 | |
| 24 | 24 | function Hero:notifyUpdateProperty(field, newValue, oldValue) |
| 25 | - local updateData = { | |
| 26 | - id = self:getProperty("id"), | |
| 27 | - datas = { | |
| 28 | - { | |
| 29 | - key = field, | |
| 30 | - newValue = newValue, | |
| 31 | - oldValue = oldValue or "", | |
| 32 | - }, | |
| 33 | - } | |
| 34 | - } | |
| 25 | + local updateData = { | |
| 26 | + id = self:getProperty("id"), | |
| 27 | + datas = { | |
| 28 | + { | |
| 29 | + key = field, | |
| 30 | + newValue = newValue, | |
| 31 | + oldValue = oldValue or "", | |
| 32 | + }, | |
| 33 | + } | |
| 34 | + } | |
| 35 | 35 | |
| 36 | - SendPacket(actionCodes.Hero_updateProperty, MsgPack.pack(updateData)) | |
| 36 | + SendPacket(actionCodes.Hero_updateProperty, MsgPack.pack(updateData)) | |
| 37 | 37 | end |
| 38 | 38 | |
| 39 | 39 | function Hero:notifyUpdateProperties(params) |
| 40 | - local updateData = { | |
| 41 | - id = self:getProperty("id"), | |
| 42 | - datas = params | |
| 43 | - } | |
| 40 | + local updateData = { | |
| 41 | + id = self:getProperty("id"), | |
| 42 | + datas = params | |
| 43 | + } | |
| 44 | 44 | |
| 45 | - SendPacket(actionCodes.Hero_updateProperty, MsgPack.pack(updateData)) | |
| 45 | + SendPacket(actionCodes.Hero_updateProperty, MsgPack.pack(updateData)) | |
| 46 | 46 | end |
| 47 | 47 | |
| 48 | 48 | function Hero:updateProperty(params) |
| 49 | - if not params.field or (not params.delta and not params.value) then | |
| 50 | - return | |
| 51 | - end | |
| 52 | - if params.delta then | |
| 53 | - self:incrProperty(params.field, params.delta) | |
| 54 | - elseif params.value then | |
| 55 | - self:setProperty(params.field, params.value) | |
| 56 | - end | |
| 57 | - local datas = {} | |
| 58 | - table.insert(datas, {key = params.field, newValue = self:getProperty(params.field)}) | |
| 49 | + if not params.field or (not params.delta and not params.value) then | |
| 50 | + return | |
| 51 | + end | |
| 52 | + if params.delta then | |
| 53 | + self:incrProperty(params.field, params.delta) | |
| 54 | + elseif params.value then | |
| 55 | + self:setProperty(params.field, params.value) | |
| 56 | + end | |
| 57 | + local datas = {} | |
| 58 | + table.insert(datas, {key = params.field, newValue = self:getProperty(params.field)}) | |
| 59 | 59 | |
| 60 | - local check = {level = true, breakL = true, wakeL = true, talent = true, loveL = true, skin = true} | |
| 61 | - if check[params.field] then | |
| 62 | - local orginValue = self:getProperty("battleV") | |
| 63 | - local curValue = self:saveBattleValue() | |
| 64 | - if orginValue ~= curValue then | |
| 65 | - table.insert(datas, { key = "battleV", newValue = curValue }) | |
| 66 | - end | |
| 67 | - end | |
| 60 | + local check = {level = true, breakL = true, wakeL = true, talent = true, loveL = true, skin = true} | |
| 61 | + if check[params.field] then | |
| 62 | + local orginValue = self:getProperty("battleV") | |
| 63 | + local curValue = self:saveBattleValue() | |
| 64 | + if orginValue ~= curValue then | |
| 65 | + table.insert(datas, { key = "battleV", newValue = curValue }) | |
| 66 | + end | |
| 67 | + end | |
| 68 | 68 | |
| 69 | - self:notifyUpdateProperties(datas) | |
| 69 | + self:notifyUpdateProperties(datas) | |
| 70 | 70 | end |
| 71 | 71 | |
| 72 | 72 | function Hero:data() |
| 73 | 73 | return { |
| 74 | 74 | id = self:getProperty("id"), |
| 75 | 75 | type = self:getProperty("type"), |
| 76 | - level = self:getProperty("level"), | |
| 77 | - breakL = self:getProperty("breakL"), | |
| 78 | - wakeL = self:getProperty("wakeL"), | |
| 79 | - skillL = self:getProperty("skillL"), | |
| 80 | - talent = self:getProperty("talent"), | |
| 81 | - battleV = self:getProperty("battleV"), | |
| 82 | - loveExp = self:getProperty("loveExp"), | |
| 83 | - loveL = self:getProperty("loveL"), | |
| 76 | + level = self:getProperty("level"), | |
| 77 | + breakL = self:getProperty("breakL"), | |
| 78 | + wakeL = self:getProperty("wakeL"), | |
| 79 | + skillL = self:getProperty("skillL"), | |
| 80 | + talent = self:getProperty("talent"), | |
| 81 | + battleV = self:getProperty("battleV"), | |
| 82 | + loveExp = self:getProperty("loveExp"), | |
| 83 | + loveL = self:getProperty("loveL"), | |
| 84 | 84 | skin = self:getProperty("skin"), |
| 85 | 85 | } |
| 86 | 86 | end | ... | ... |
src/models/HeroPlugin.lua
| ... | ... | @@ -3,144 +3,144 @@ local HeroPlugin = {} |
| 3 | 3 | |
| 4 | 4 | function HeroPlugin.bind(Hero) |
| 5 | 5 | |
| 6 | - function Hero:getMaxLevel() | |
| 7 | - return math.min(#csvdb["unit_expCsv"], csvdb["unit_breakCsv"][self:getProperty("breakL")].levelLimit) | |
| 8 | - end | |
| 9 | - | |
| 10 | - function Hero:getSPoint() | |
| 11 | - local point = 0 | |
| 12 | - for i = 0, self:getProperty("wakeL") do | |
| 13 | - if csvdb["unit_wakeCsv"][i] then | |
| 14 | - point = point + csvdb["unit_wakeCsv"][i].sp | |
| 15 | - end | |
| 16 | - end | |
| 17 | - return point | |
| 18 | - end | |
| 19 | - | |
| 20 | - function Hero:getLSPoint() | |
| 21 | - local point = self:getSPoint() | |
| 22 | - for skill, level in pairs(self:getProperty("skillL"):toNumMap()) do | |
| 23 | - point = point - (level - 1) | |
| 24 | - end | |
| 25 | - return point | |
| 26 | - end | |
| 27 | - --角色属性值 = 基础属性值(unit)* [ 1 + 升级属性(unit_exp)+ 突破属性(unit_break)] * [ 1 + 觉醒属性(unit_wake)+ 天赋属性(unit_talent)] | |
| 28 | - function Hero:getBaseAttrs(params) | |
| 29 | - params = params or {} | |
| 30 | - local unitData = csvdb["unitCsv"][self:getProperty("type")] | |
| 31 | - local level = params.level or self:getProperty("level") | |
| 32 | - local breakL = params.breakL or self:getProperty("breakL") | |
| 33 | - local wakeL = params.wakeL or self:getProperty("wakeL") | |
| 34 | - local talent = params.talent or self:getProperty("talent") | |
| 35 | - | |
| 36 | - | |
| 37 | - local attrs = {} | |
| 38 | - for _, attName in pairs(AttsEnumEx) do | |
| 39 | - attrs[attName] = unitData[attName] or 0 | |
| 40 | - end | |
| 41 | - local lData = csvdb["unit_expCsv"][level] | |
| 42 | - local blData = csvdb["unit_breakCsv"][breakL] | |
| 43 | - -- core | |
| 44 | - for attr, value in pairs(attrs) do | |
| 45 | - attrs[attr] = attrs[attr] * (100 + (lData[attr .. "Level"] or 0) + (blData[attr .. "Level"] or 0)) / 100 | |
| 46 | - end | |
| 47 | - | |
| 48 | - local talentAttrS = {} | |
| 49 | - -- 天赋阶段属性 | |
| 50 | - for i = 1, (talent:getv(0, 1) - 1) do | |
| 51 | - local curData = csvdb["unit_talentCsv"][i] | |
| 52 | - local effect = curData[#curData].effect:toArray(true, "=") | |
| 53 | - talentAttrS[AttsEnumEx[effect[1]]] = (talentAttrS[AttsEnumEx[effect[1]]] or 0) + effect[2] | |
| 54 | - end | |
| 55 | - -- 四个基础属性 | |
| 56 | - local curData = csvdb["unit_talentCsv"][talent:getv(0, 1)] | |
| 57 | - if not curData then -- 已经满阶段了 | |
| 58 | - curData = csvdb["unit_talentCsv"][#csvdb["unit_talentCsv"]] | |
| 59 | - local strength = curData[#curData].strength | |
| 60 | - for i = 1, 4 do | |
| 61 | - talentAttrS[AttsEnumEx[i]] = (talentAttrS[AttsEnumEx[i]] or 0) + strength | |
| 62 | - end | |
| 63 | - else | |
| 64 | - for i = 1, 4 do --4个天赋 | |
| 65 | - talentAttrS[AttsEnumEx[i]] = (talentAttrS[AttsEnumEx[i]] or 0) + curData[talent:getv(i, 0)].strength | |
| 66 | - end | |
| 67 | - end | |
| 68 | - | |
| 69 | - --好感度 | |
| 70 | - local loveUp = {} | |
| 71 | - for i = 0, self:getProperty("loveL") do | |
| 72 | - local reward = csvdb["unit_love_effectCsv"][i]["reward"] | |
| 73 | - for attrId, value in pairs(reward:toNumMap()) do | |
| 74 | - loveUp[AttsEnumEx[attrId]] = (loveUp[AttsEnumEx[attrId]] or 0) + value | |
| 75 | - end | |
| 76 | - end | |
| 77 | - | |
| 78 | - --皮肤 | |
| 79 | - local skinUp = {} | |
| 80 | - local reward = (csvdb["unit_skinCsv"][self:getSkinId()] or {})["reward"] or "" | |
| 81 | - for attrId, value in pairs(reward:toNumMap()) do | |
| 82 | - skinUp[AttsEnumEx[attrId]] = (skinUp[AttsEnumEx[attrId]] or 0) + value | |
| 83 | - end | |
| 84 | - | |
| 85 | - --觉醒 | |
| 86 | - local wData = csvdb["unit_wakeCsv"][wakeL] | |
| 87 | - for attr, value in pairs(attrs) do | |
| 88 | - attrs[attr] = attrs[attr] * (100 + (wData[attr .. "Level"] or 0) + (talentAttrS[attr] or 0) + (loveUp[attr] or 0) + (skinUp[attr] or 0)) / 100 | |
| 89 | - end | |
| 90 | - | |
| 91 | - return attrs | |
| 92 | - end | |
| 93 | - | |
| 94 | - --当前属性 = [ 角色属性值 + 基础装备(固定)+ 专属装备(固定)] * [ 1 + 基础装备(百分比) + 专属装备(百分比)] | |
| 95 | - function Hero:getTotalAttrs(params) | |
| 96 | - local attrs = self:getBaseAttrs() | |
| 97 | - return attrs | |
| 98 | - end | |
| 99 | - -- 战斗力(当前属性)= POWER[(生命 + 防御 * 7 + 闪避 * 4)*(攻击 + 命中 * 4)*(1 + 暴击几率/100 * 暴击伤害/100)* 攻击速度 / 60000 ,0.8 ] | |
| 100 | - function Hero:getBattleValue() | |
| 101 | - local attrs = self:getTotalAttrs() | |
| 102 | - local battleValue = ((attrs["hp"] + attrs["def"] * 7 + attrs["miss"] * 4) * (attrs["atk"] + attrs["hit"] * 4) * (1 + attrs["crit"]/100 * attrs["critHurt"]/100) * attrs["atkSpeed"] / 60000) ^ 0.8 | |
| 103 | - return math.floor(battleValue) | |
| 104 | - end | |
| 105 | - | |
| 106 | - function Hero:saveBattleValue() | |
| 107 | - local battleValue = self:getBattleValue() | |
| 108 | - if battleValue ~= self:getProperty("battleV") then | |
| 109 | - self:setProperty("battleV", battleValue) | |
| 110 | - end | |
| 111 | - return battleValue | |
| 112 | - end | |
| 113 | - | |
| 114 | - function Hero:getSkillLevel(idx) | |
| 115 | - return self:getProperty("skillL"):getv(idx, 1) | |
| 116 | - end | |
| 117 | - | |
| 118 | - function Hero:getSkillData(idx, skin) | |
| 119 | - local unitData = csvdb["unitCsv"][self:getSkinId(skin)] | |
| 120 | - if idx == 1 then | |
| 121 | - return csvdb["skill_blockCsv"][unitData.block] | |
| 122 | - elseif idx == 2 then | |
| 123 | - return csvdb["skill_specialCsv"][unitData.special] | |
| 124 | - elseif idx == 3 then | |
| 125 | - return csvdb["skill_passiveCsv"][unitData.passive] | |
| 126 | - elseif idx == 4 then --冒险技能 | |
| 127 | - if unitData.adv > 1000 then | |
| 128 | - return csvdb["adv_skill_passiveCsv"][unitData.adv] | |
| 129 | - else | |
| 130 | - return csvdb["adv_skillCsv"][unitData.adv] | |
| 131 | - end | |
| 132 | - end | |
| 133 | - return {} | |
| 134 | - end | |
| 135 | - | |
| 136 | - function Hero:getSkinId(skin) | |
| 137 | - skin = skin or self:getProperty("skin") | |
| 138 | - if skin == 0 then | |
| 139 | - return self:getProperty("type") | |
| 140 | - else | |
| 141 | - return 30000 + self:getProperty("type") * 10 + skin | |
| 142 | - end | |
| 143 | - end | |
| 6 | + function Hero:getMaxLevel() | |
| 7 | + return math.min(#csvdb["unit_expCsv"], csvdb["unit_breakCsv"][self:getProperty("breakL")].levelLimit) | |
| 8 | + end | |
| 9 | + | |
| 10 | + function Hero:getSPoint() | |
| 11 | + local point = 0 | |
| 12 | + for i = 0, self:getProperty("wakeL") do | |
| 13 | + if csvdb["unit_wakeCsv"][i] then | |
| 14 | + point = point + csvdb["unit_wakeCsv"][i].sp | |
| 15 | + end | |
| 16 | + end | |
| 17 | + return point | |
| 18 | + end | |
| 19 | + | |
| 20 | + function Hero:getLSPoint() | |
| 21 | + local point = self:getSPoint() | |
| 22 | + for skill, level in pairs(self:getProperty("skillL"):toNumMap()) do | |
| 23 | + point = point - (level - 1) | |
| 24 | + end | |
| 25 | + return point | |
| 26 | + end | |
| 27 | + --角色属性值 = 基础属性值(unit)* [ 1 + 升级属性(unit_exp)+ 突破属性(unit_break)] * [ 1 + 觉醒属性(unit_wake)+ 天赋属性(unit_talent)] | |
| 28 | + function Hero:getBaseAttrs(params) | |
| 29 | + params = params or {} | |
| 30 | + local unitData = csvdb["unitCsv"][self:getProperty("type")] | |
| 31 | + local level = params.level or self:getProperty("level") | |
| 32 | + local breakL = params.breakL or self:getProperty("breakL") | |
| 33 | + local wakeL = params.wakeL or self:getProperty("wakeL") | |
| 34 | + local talent = params.talent or self:getProperty("talent") | |
| 35 | + | |
| 36 | + | |
| 37 | + local attrs = {} | |
| 38 | + for _, attName in pairs(AttsEnumEx) do | |
| 39 | + attrs[attName] = unitData[attName] or 0 | |
| 40 | + end | |
| 41 | + local lData = csvdb["unit_expCsv"][level] | |
| 42 | + local blData = csvdb["unit_breakCsv"][breakL] | |
| 43 | + -- core | |
| 44 | + for attr, value in pairs(attrs) do | |
| 45 | + attrs[attr] = attrs[attr] * (100 + (lData[attr .. "Level"] or 0) + (blData[attr .. "Level"] or 0)) / 100 | |
| 46 | + end | |
| 47 | + | |
| 48 | + local talentAttrS = {} | |
| 49 | + -- 天赋阶段属性 | |
| 50 | + for i = 1, (talent:getv(0, 1) - 1) do | |
| 51 | + local curData = csvdb["unit_talentCsv"][i] | |
| 52 | + local effect = curData[#curData].effect:toArray(true, "=") | |
| 53 | + talentAttrS[AttsEnumEx[effect[1]]] = (talentAttrS[AttsEnumEx[effect[1]]] or 0) + effect[2] | |
| 54 | + end | |
| 55 | + -- 四个基础属性 | |
| 56 | + local curData = csvdb["unit_talentCsv"][talent:getv(0, 1)] | |
| 57 | + if not curData then -- 已经满阶段了 | |
| 58 | + curData = csvdb["unit_talentCsv"][#csvdb["unit_talentCsv"]] | |
| 59 | + local strength = curData[#curData].strength | |
| 60 | + for i = 1, 4 do | |
| 61 | + talentAttrS[AttsEnumEx[i]] = (talentAttrS[AttsEnumEx[i]] or 0) + strength | |
| 62 | + end | |
| 63 | + else | |
| 64 | + for i = 1, 4 do --4个天赋 | |
| 65 | + talentAttrS[AttsEnumEx[i]] = (talentAttrS[AttsEnumEx[i]] or 0) + curData[talent:getv(i, 0)].strength | |
| 66 | + end | |
| 67 | + end | |
| 68 | + | |
| 69 | + --好感度 | |
| 70 | + local loveUp = {} | |
| 71 | + for i = 0, self:getProperty("loveL") do | |
| 72 | + local reward = csvdb["unit_love_effectCsv"][i]["reward"] | |
| 73 | + for attrId, value in pairs(reward:toNumMap()) do | |
| 74 | + loveUp[AttsEnumEx[attrId]] = (loveUp[AttsEnumEx[attrId]] or 0) + value | |
| 75 | + end | |
| 76 | + end | |
| 77 | + | |
| 78 | + --皮肤 | |
| 79 | + local skinUp = {} | |
| 80 | + local reward = (csvdb["unit_skinCsv"][self:getSkinId()] or {})["reward"] or "" | |
| 81 | + for attrId, value in pairs(reward:toNumMap()) do | |
| 82 | + skinUp[AttsEnumEx[attrId]] = (skinUp[AttsEnumEx[attrId]] or 0) + value | |
| 83 | + end | |
| 84 | + | |
| 85 | + --觉醒 | |
| 86 | + local wData = csvdb["unit_wakeCsv"][wakeL] | |
| 87 | + for attr, value in pairs(attrs) do | |
| 88 | + attrs[attr] = attrs[attr] * (100 + (wData[attr .. "Level"] or 0) + (talentAttrS[attr] or 0) + (loveUp[attr] or 0) + (skinUp[attr] or 0)) / 100 | |
| 89 | + end | |
| 90 | + | |
| 91 | + return attrs | |
| 92 | + end | |
| 93 | + | |
| 94 | + --当前属性 = [ 角色属性值 + 基础装备(固定)+ 专属装备(固定)] * [ 1 + 基础装备(百分比) + 专属装备(百分比)] | |
| 95 | + function Hero:getTotalAttrs(params) | |
| 96 | + local attrs = self:getBaseAttrs() | |
| 97 | + return attrs | |
| 98 | + end | |
| 99 | + -- 战斗力(当前属性)= POWER[(生命 + 防御 * 7 + 闪避 * 4)*(攻击 + 命中 * 4)*(1 + 暴击几率/100 * 暴击伤害/100)* 攻击速度 / 60000 ,0.8 ] | |
| 100 | + function Hero:getBattleValue() | |
| 101 | + local attrs = self:getTotalAttrs() | |
| 102 | + local battleValue = ((attrs["hp"] + attrs["def"] * 7 + attrs["miss"] * 4) * (attrs["atk"] + attrs["hit"] * 4) * (1 + attrs["crit"]/100 * attrs["critHurt"]/100) * attrs["atkSpeed"] / 60000) ^ 0.8 | |
| 103 | + return math.floor(battleValue) | |
| 104 | + end | |
| 105 | + | |
| 106 | + function Hero:saveBattleValue() | |
| 107 | + local battleValue = self:getBattleValue() | |
| 108 | + if battleValue ~= self:getProperty("battleV") then | |
| 109 | + self:setProperty("battleV", battleValue) | |
| 110 | + end | |
| 111 | + return battleValue | |
| 112 | + end | |
| 113 | + | |
| 114 | + function Hero:getSkillLevel(idx) | |
| 115 | + return self:getProperty("skillL"):getv(idx, 1) | |
| 116 | + end | |
| 117 | + | |
| 118 | + function Hero:getSkillData(idx, skin) | |
| 119 | + local unitData = csvdb["unitCsv"][self:getSkinId(skin)] | |
| 120 | + if idx == 1 then | |
| 121 | + return csvdb["skill_blockCsv"][unitData.block] | |
| 122 | + elseif idx == 2 then | |
| 123 | + return csvdb["skill_specialCsv"][unitData.special] | |
| 124 | + elseif idx == 3 then | |
| 125 | + return csvdb["skill_passiveCsv"][unitData.passive] | |
| 126 | + elseif idx == 4 then --冒险技能 | |
| 127 | + if unitData.adv > 1000 then | |
| 128 | + return csvdb["adv_skill_passiveCsv"][unitData.adv] | |
| 129 | + else | |
| 130 | + return csvdb["adv_skillCsv"][unitData.adv] | |
| 131 | + end | |
| 132 | + end | |
| 133 | + return {} | |
| 134 | + end | |
| 135 | + | |
| 136 | + function Hero:getSkinId(skin) | |
| 137 | + skin = skin or self:getProperty("skin") | |
| 138 | + if skin == 0 then | |
| 139 | + return self:getProperty("type") | |
| 140 | + else | |
| 141 | + return 30000 + self:getProperty("type") * 10 + skin | |
| 142 | + end | |
| 143 | + end | |
| 144 | 144 | |
| 145 | 145 | end |
| 146 | 146 | ... | ... |