From 6732f756a424c34a98e24e787f796f15edde31cc Mon Sep 17 00:00:00 2001 From: zhouhaihai Date: Tue, 17 Sep 2019 16:17:22 +0800 Subject: [PATCH] 玩家升级 --- src/adv/Adv.lua | 2 +- src/adv/AdvPlayer.lua | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index 6845d53..1f8e80c 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -604,7 +604,7 @@ function Adv:enemyDead(roomId, blockId, escape) local enemyId = block.event.id local monsterData = csvdb["event_monsterCsv"][enemyId] self:scoreChange(AdvScoreType.Kill, monsterData.type) - + self.battle.player:addExp(monsterData.exp) local item = block.event.item if not item then local dropData = csvdb["event_dropCsv"][monsterData.dropid] diff --git a/src/adv/AdvPlayer.lua b/src/adv/AdvPlayer.lua index 7e24ccf..8b2fadf 100644 --- a/src/adv/AdvPlayer.lua +++ b/src/adv/AdvPlayer.lua @@ -431,7 +431,32 @@ function Player:initData(data) end function Player:addExp(value) - -- todo + local newExp = self.exp + value + local level = self.level + if level >= #csvdb["adv_levelCsv"] then return end + while true do + local curData = csvdb["adv_levelCsv"][level] + if newExp < curData.exp then break end + level = level + 1 + newExp = newExp - curData.exp + if level >= #csvdb["adv_levelCsv"] then break end + end + local delta = level - self.level + if delta > 0 then + local baseAttr = csvdb["adv_unitCsv"][self.battle.adv.chapterId] + for _, attr in pairs(AttsEnumEx) do + if baseAttr[attr] then + self[attr] = self[attr] + baseAttr[attr] * self.growth * delta + if attr == "hp" then + self.hpMax = self.hpMax + baseAttr[attr] * self.growth * delta + else + self["_" .. attr] = self["_" .. attr] + baseAttr[attr] * self.growth * delta + end + end + end + end + self.level = level + self.exp = newExp end --cType 0 or nil 值 1 百分比 -- libgit2 0.21.2