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