Commit e996b82a8b92e1badb2f8624511d87b9423d5df8
1 parent
b0fe1817
冒险增加防御属性
Showing
5 changed files
with
22 additions
and
3 deletions
Show diff stats
src/GlobalVar.lua
src/adv/Adv.lua
... | ... | @@ -1010,6 +1010,12 @@ end |
1010 | 1010 | function Adv:backAtkChange(enemyId, change) |
1011 | 1011 | self:pushBackEvent(AdvBackEventType.AtkChange, {enemyId = enemyId, change = change}) |
1012 | 1012 | end |
1013 | + | |
1014 | +-- if is player enemyId is nil | |
1015 | +function Adv:backDefChange(enemyId, change) | |
1016 | + self:pushBackEvent(AdvBackEventType.DefChange, {enemyId = enemyId, change = change}) | |
1017 | +end | |
1018 | + | |
1013 | 1019 | -- if is player enemyId is nil |
1014 | 1020 | function Adv:backBuff(enemyId, buffId, isDel) |
1015 | 1021 | self:pushBackEvent(AdvBackEventType.Buff, {enemyId = enemyId, buffId = buffId, isDel = isDel}) | ... | ... |
src/adv/AdvBattle.lua
... | ... | @@ -39,6 +39,7 @@ function Battle:initPlayer() |
39 | 39 | end |
40 | 40 | player.hp = hp |
41 | 41 | player.atk = tonumber(string.format("%0.0f", player.hp * 0.1)) --todo 系数是临时的 |
42 | + player.def = 0 | |
42 | 43 | player.miss = 0 |
43 | 44 | player.hit = 100 |
44 | 45 | self.adv.advTeam.player = player |
... | ... | @@ -64,6 +65,7 @@ function Battle:addEnemy(room, block) |
64 | 65 | enemy.atk = enemyCsv.atk + enemyCsv.levelatk * self.adv.advInfo.level |
65 | 66 | enemy.hit = enemyCsv.hit + enemyCsv.levelhit * self.adv.advInfo.level |
66 | 67 | enemy.miss = enemyCsv.miss + enemyCsv.levelmiss * self.adv.advInfo.level |
68 | + enemy.def = enemyCsv.def + enemyCsv.leveldef * self.adv.advInfo.level | |
67 | 69 | enemy.passives = {} |
68 | 70 | for _, id in ipairs(enemyCsv.passive:toArray(true, "=")) do |
69 | 71 | table.insert(enemy.passives, {id = id}) | ... | ... |
src/adv/AdvBuff.lua
... | ... | @@ -18,6 +18,7 @@ Buff.OPEN_BLOCK = 14 -- 翻开格子(每回合) |
18 | 18 | Buff.POWER_CHANGE = 15 -- 体力变化(每回合) |
19 | 19 | Buff.HIT_CHANGE = 16 -- 命中变化(状态) |
20 | 20 | Buff.MISS_CHANGE = 17 -- 闪避变化(状态) |
21 | +Buff.DEF_CHANGE = 18 -- 防御变化(状态) | |
21 | 22 | |
22 | 23 | --角色一些属性的变化 |
23 | 24 | local function commonAttr(_Buff, attrName) |
... | ... | @@ -106,6 +107,10 @@ local BuffFactory = { |
106 | 107 | [Buff.MISS_CHANGE] = function(_Buff) |
107 | 108 | commonAttr(_Buff, "miss") |
108 | 109 | end, |
110 | + | |
111 | + [Buff.DEF_CHANGE] = function(_Buff) | |
112 | + commonAttr(_Buff, "miss") | |
113 | + end, | |
109 | 114 | |
110 | 115 | [Buff.BACK_HURT] = function(_Buff) |
111 | 116 | _Buff._effectValue = function(self) | ... | ... |
src/adv/AdvPlayer.lua
... | ... | @@ -8,6 +8,7 @@ function BaseObject:ctor(battle) |
8 | 8 | self.hpMax = 0 |
9 | 9 | self.hp = 0 |
10 | 10 | self.atk = 0 |
11 | + self.def = 0 | |
11 | 12 | self.aType = 0 --攻击类型 |
12 | 13 | self.lock = nil |
13 | 14 | self.passives = {} --固有技能 |
... | ... | @@ -22,10 +23,12 @@ function BaseObject:initData(data) |
22 | 23 | self.atk = data.atk |
23 | 24 | self.miss = data.miss |
24 | 25 | self.hit = data.hit |
26 | + self.def = data.def | |
25 | 27 | --基础值记录 |
26 | 28 | self._atk = data._atk or self.atk |
27 | 29 | self._miss = data._miss or self.miss |
28 | 30 | self._hit = data._hit or self.hit |
31 | + self._def = data._def or self.def | |
29 | 32 | end |
30 | 33 | -- 角色初始化完以后才是 技能和被动技能 方便初始化 buff 的 释放对象 |
31 | 34 | function BaseObject:initAfter(data) |
... | ... | @@ -136,13 +139,15 @@ end |
136 | 139 | function BaseObject:reSetAttr(field) |
137 | 140 | local old = self[field] |
138 | 141 | self[field] = self["_" .. field] --重置一下 |
139 | - local fieldToBuff = {atk = Buff.IMMNUE_ATK, hit = Buff.HIT_CHANGE, miss = Buff.MISS_CHANGE} | |
142 | + local fieldToBuff = {atk = Buff.IMMNUE_ATK, hit = Buff.HIT_CHANGE, miss = Buff.MISS_CHANGE, def = Buff.DEF_CHANGE} | |
140 | 143 | local effect = self:getCommonBuffEffect(fieldToBuff[field]) |
141 | 144 | self[field] = (self[field] + effect[0]) * (1 + effect[1]) |
142 | 145 | local delta = self[field] - old |
143 | 146 | if delta ~= 0 then |
144 | 147 | if field == "atk" then |
145 | 148 | self.battle.adv:backAtkChange(self.id, delta) |
149 | + elseif field == "def" then | |
150 | + self.battle.adv:backDefChange(self.id, delta) | |
146 | 151 | end |
147 | 152 | end |
148 | 153 | end |
... | ... | @@ -156,7 +161,7 @@ end |
156 | 161 | --计算自己伤害减免后的值 |
157 | 162 | function BaseObject:getInjuredValue(value) |
158 | 163 | local injuredChange = self:getInjuredChange() |
159 | - return math.max(0, (value + injuredChange[0]) * (1 + injuredChange[1])) | |
164 | + return math.max(0, (value + injuredChange[0]) * (1 + injuredChange[1]) - self.def) | |
160 | 165 | end |
161 | 166 | |
162 | 167 | --最终伤害 = [ 敌方攻击 * (1+伤害增加百分比-伤害减少百分比)*(1+受伤增加百分比-受伤减少百分比)+(伤害增加固定值-伤害增加固定值+受伤增加固定值-受伤增加固定值)]*(1+侍宠百分比)-侍宠固定值 |
... | ... | @@ -393,7 +398,7 @@ function BaseObject:getDB() |
393 | 398 | local db = {} |
394 | 399 | db.hpMax = self.hpMax |
395 | 400 | db.hp = self.hp |
396 | - local baseAttr = {"atk", "miss", "hit"} | |
401 | + local baseAttr = {"atk", "miss", "hit", "def"} | |
397 | 402 | for _, field in pairs(baseAttr) do |
398 | 403 | db[field] = self[field] |
399 | 404 | db["_"..field] = self["_" .. field] | ... | ... |