46fac6f1
zhouahaihai
酱料
|
1
2
3
4
5
|
local Buff = class("Buff")
Buff.HP_CHANGE = 1 --生命变化(每回合生效)
Buff.HP_MAX_CHANGE = 2 --生命上限变化(状态)
|
0d405dc3
suhongyang
Buff生命周期调整,被动加buf...
|
6
|
Buff.ATTR_CHANGE = 3 --属性变化(状态)
|
46fac6f1
zhouahaihai
酱料
|
7
8
9
10
11
12
13
14
15
16
17
|
Buff.IMMNUE_ATK = 4 -- 免疫普通攻击
Buff.BACK_HURT = 5 -- 伤害反弹
Buff.HURT_CHANGE = 6 -- 伤害变化
Buff.INJURED_CHANGE = 7 -- 受伤变化
Buff.HURT_TRANSFER = 8 -- 侍宠(转移自己受到的伤害)
Buff.HURT_ABSORB = 9 -- 舍身(吸收他人受到的伤害)
Buff.CANT_BACK_ATK = 10 -- 无法反击
Buff.IMMNUE_BUFF = 11 -- 免疫buff
Buff.CLEAR_BUFF = 12 -- 清除buff
Buff.CANT_SKILL = 13 -- 禁止技能
Buff.OPEN_BLOCK = 14 -- 翻开格子(每回合)
|
3b0526d2
zhouhaihai
冒险demo
|
18
|
Buff.SP_CHANGE = 15 -- sp变化(每回合)
|
6cd12079
suhongyang
扣血buff立刻生效
|
19
|
Buff.HP_CHANGE_NOW = 16 -- 生命变化(每回合生效,立刻生效)
|
e90b4d20
zhouhaihai
战斗buff
|
20
|
Buff.BATTLE_BUFF = 17 -- 切换为战斗中的buff
|
7828ffd0
zhouhaihai
冒险 连续选择点 和 地图因子
|
21
|
Buff.CHANGE_DROP = 18 -- 转换掉落
|
b176d7d3
zhouhaihai
冒险成就
|
22
|
Buff.BATTLE_PASSIVE = 19 -- 切换为战斗中的被动技
|
a95b35ce
zhouhaihai
删除等级
|
23
|
-- Buff.EXP_ADD = 20 -- 增加exp(每回合)
|
4f0a5fae
zhouhaihai
营养剂
|
24
|
Buff.DONT_DEFEND = 21 -- 不看守地板 -- 怪周围点半可点击
|
0c2770e4
zhouhaihai
bug 扫雷buff
|
25
|
Buff.SHOW_DANGER = 22 -- 扫雷 展示地上怪物和陷阱数量的标记
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
26
|
Buff.SHOW_MONSTER_POS = 23 -- 蓝臂章训练场 感知
|
4f0a5fae
zhouhaihai
营养剂
|
27
28
29
|
Buff.EXP_UP = 24 -- 杀敌经验提高
Buff.DISABLE_BUFF = 25 -- 禁用固有技
Buff.ATTR_CHANGE_COND = 26 --属性变化(状态)有条件
|
db3c56ad
zhouhaihai
冒险相关
|
30
|
Buff.CHANGE_DROP_TO_CLICK = 27 --掉落转换为click
|
98761edc
zhouhaihai
buff 补充
|
31
32
33
|
Buff.SP_MAX_CHANGE = 28 -- 魔法上限
Buff.ITEM_GET_UP = 29 -- 获得道具数量增加
Buff.Buff_EFFECT_CHANGE = 30 -- 改变 buff 效果
|
810c6151
zhouhaihai
增加buff 效果31 地图被动刷...
|
34
|
Buff.Buff_NO_PASSIVE_MONSTER = 31 -- 地图被动刷新不出来怪物
|
a0834e49
zhouhaihai
增加潜行 功能
|
35
|
Buff.SNEAK = 32 --潜行
|
c85cbad6
zhouhaihai
怪 掉落增加 buff
|
36
|
Buff.DROP_BUFF_BY_ENEMY = 33 -- 怪物掉落加成 -- 怪物使用
|
b6a2b78b
zhouhaihai
冒险 buff 类型 34 35
|
37
|
Buff.GET_PASSIVE = 34 -- 获得 passive -- 结束失效
|
a5660239
zhouhaihai
冒险bug
|
38
|
Buff.OBSTACLE_CHANGE = 35 -- 看守类型改变 -- 怪物使用 2 - 1
|
3139a116
zhouhaihai
光环相关buff
|
39
40
|
Buff.DISABLE_AURA = 36 -- 禁用光环
Buff.GET_AURA = 37 -- 获得光环
|
be2bc68b
zhouhaihai
看守周围的格子
|
41
|
Buff.OBSTACLE_PLUS = 38 -- 周围8格不能点击
|
46fac6f1
zhouahaihai
酱料
|
42
|
|
1e6f6a8a
zhouhaihai
免疫 清除buff 增加新效果
|
43
|
|
46fac6f1
zhouahaihai
酱料
|
44
45
|
--角色一些属性的变化
local function commonAttr(_Buff, attrName)
|
b71a8190
zhouhaihai
动态改变 一些buff
|
46
|
_Buff._init = function(self) --初始化变化值
|
46fac6f1
zhouahaihai
酱料
|
47
48
49
|
self.owner:reSetAttr(attrName)
end
_Buff._effectValue = function(self)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
50
51
52
53
54
55
56
|
return self.buffData.effectValue1, self:doEffectChange(self.buffData.effectValue2) * self.layer, attrName
end
_Buff._overlay = function(self)
self.owner:reSetAttr(attrName)
end
_Buff._uncover = function(self)
self.owner:reSetAttr(attrName)
|
46fac6f1
zhouahaihai
酱料
|
57
58
59
60
|
end
_Buff._endBuff = function(self, data)
self.owner:reSetAttr(attrName)
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
61
62
63
|
_Buff._effectChange = function(self)
self.owner:reSetAttr(attrName)
end
|
46fac6f1
zhouahaihai
酱料
|
64
|
end
|
4f0a5fae
zhouhaihai
营养剂
|
65
|
local function commonAttCond(_Buff, attrName)
|
b71a8190
zhouhaihai
动态改变 一些buff
|
66
67
|
_Buff._init = function(self) --初始化变化值
self:_reSetAttr()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
68
69
|
end
_Buff._overlay = function(self)
|
b71a8190
zhouhaihai
动态改变 一些buff
|
70
|
self:_reSetAttr()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
71
72
|
end
_Buff._uncover = function(self)
|
98761edc
zhouhaihai
buff 补充
|
73
74
|
self:_reSetAttr()
end
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
75
|
|
b71a8190
zhouhaihai
动态改变 一些buff
|
76
|
_Buff._reSetAttr = function(self)
|
98761edc
zhouhaihai
buff 补充
|
77
|
if attrName == "hp" then
|
b71a8190
zhouhaihai
动态改变 一些buff
|
78
|
self.owner:reSetHpMax()
|
98761edc
zhouhaihai
buff 补充
|
79
80
81
|
else
self.owner:reSetAttr(attrName)
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
82
|
end
|
98761edc
zhouhaihai
buff 补充
|
83
|
|
ccbafe67
zhouhaihai
冒险神器和buff
|
84
|
_Buff._calculate = function(self)
|
4f0a5fae
zhouhaihai
营养剂
|
85
86
|
local effectCount = 0
if self.buffData.effectValue4 == 0 then
|
b71a8190
zhouhaihai
动态改变 一些buff
|
87
88
89
90
91
|
effectCount = self.owner.battle.adv.owner:getProperty("advItems"):getv(ItemId.OldCoin, 0) / tonumber(self.buffData.effectValue5)
elseif self.buffData.effectValue4 == 1 then
effectCount = self.owner.battle.adv.level
elseif self.buffData.effectValue4 == 2 then
local buff = self.owner.battle.player:getBuffById(tonumber(self.buffData.effectValue5))
|
92d7d6ac
zhouhaihai
加一些数据保护
|
92
93
94
|
if buff then
effectCount = buff.layer
end
|
1e789624
zhouhaihai
新的 buff 效果
|
95
96
97
98
99
100
101
102
103
104
105
|
elseif self.buffData.effectValue4 == 3 then
local classify = tonumber(self.buffData.effectValue5) -- 怪标签
local enemy = self.owner.battle.player:getTeam(2)
for _, one in pairs(enemy) do
if one.isClassify and one:isClassify(classify) then
effectCount = effectCount + 1
end
end
elseif self.buffData.effectValue4 == 4 then
local eventType = tonumber(self.buffData.effectValue5) -- event 类型
effectCount = #self.owner.battle.adv:getCurMap():getEventTypeAllMap(eventType)
|
b71a8190
zhouhaihai
动态改变 一些buff
|
106
107
|
end
return self.buffData.effectValue2 * effectCount
|
4f0a5fae
zhouhaihai
营养剂
|
108
|
end
|
b71a8190
zhouhaihai
动态改变 一些buff
|
109
110
111
|
_Buff.getEffectBy = function(self)
local cond = nil
|
1e789624
zhouhaihai
新的 buff 效果
|
112
|
if self.buffData.effectValue4 == 2 or self.buffData.effectValue4 == 3 or self.buffData.effectValue4 == 4 then
|
b71a8190
zhouhaihai
动态改变 一些buff
|
113
114
115
|
cond = tonumber(self.buffData.effectValue5)
end
return self.buffData.effectValue4, attrName, cond
|
4f0a5fae
zhouhaihai
营养剂
|
116
|
end
|
b71a8190
zhouhaihai
动态改变 一些buff
|
117
|
|
4f0a5fae
zhouhaihai
营养剂
|
118
|
_Buff._effectValue = function(self)
|
b71a8190
zhouhaihai
动态改变 一些buff
|
119
|
return self.buffData.effectValue1, self:_calculate() * self.layer, attrName
|
4f0a5fae
zhouhaihai
营养剂
|
120
|
end
|
b71a8190
zhouhaihai
动态改变 一些buff
|
121
|
|
4f0a5fae
zhouhaihai
营养剂
|
122
|
_Buff._endBuff = function(self, data)
|
98761edc
zhouhaihai
buff 补充
|
123
|
self:_reSetAttr()
|
4f0a5fae
zhouhaihai
营养剂
|
124
|
end
|
4f0a5fae
zhouhaihai
营养剂
|
125
|
end
|
46fac6f1
zhouahaihai
酱料
|
126
127
128
|
local BuffFactory = {
[Buff.HP_CHANGE] = function(_Buff)
|
b71a8190
zhouhaihai
动态改变 一些buff
|
129
|
_Buff._init = function(self) --初始化变化值
|
ccbafe67
zhouhaihai
冒险神器和buff
|
130
131
132
133
134
135
136
137
138
139
|
self._changeV = self:_calculate()
end
_Buff._overlay = function(self)
self._changeV = (self._changeV or 0) + self:_calculate()
end
_Buff._uncover = function(self)
self._changeV = self._changeV - self._changeV / (self.layer + 1)
end
_Buff._calculate = function(self)
local curValue = 0
|
46fac6f1
zhouahaihai
酱料
|
140
|
if self.buffData.effectValue1 == 0 then --固定值
|
ccbafe67
zhouhaihai
冒险神器和buff
|
141
|
curValue = self.buffData.effectValue2
|
46fac6f1
zhouahaihai
酱料
|
142
143
144
|
elseif self.buffData.effectValue1 == 1 then
local baseOwner = self.buffData.effectValue4 == 1 and self.owner or self.release
local attrs = {[0] = "hp", [1] = "hpMax", [2] = "atk"}
|
ccbafe67
zhouhaihai
冒险神器和buff
|
145
|
curValue = baseOwner[attrs[self.buffData.effectValue3]] * self.buffData.effectValue2 / 100
|
46fac6f1
zhouahaihai
酱料
|
146
|
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
147
|
if curValue < 0 then
|
c047749a
zhouhaihai
buff
|
148
|
if self.release then
|
ccbafe67
zhouhaihai
冒险神器和buff
|
149
|
curValue = -self.release:getHurtValue(-curValue)
|
c047749a
zhouhaihai
buff
|
150
|
end
|
46fac6f1
zhouahaihai
酱料
|
151
|
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
152
|
return curValue
|
46fac6f1
zhouahaihai
酱料
|
153
154
155
156
|
end
_Buff._initDB = function(self, data)
self._changeV = data.cv
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
157
158
159
160
161
|
_Buff._afterRound = function(self)
local value = self:effect()
if value > 0 then
self.owner:recover(value, self.release)
elseif value < 0 then
|
53e8037e
zhouhaihai
任务
|
162
|
self.owner:hurt(-value, self.release, {hurtType = self.buffData.effectValue5 == "1" and 6 or 2, buffId = self.id})
|
46fac6f1
zhouahaihai
酱料
|
163
164
|
end
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
165
|
_Buff._effectValue = function(self)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
166
|
return self:doEffectChange(self._changeV)
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
167
|
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
168
|
|
46fac6f1
zhouahaihai
酱料
|
169
170
171
172
173
174
|
_Buff._getDB = function(self)
return {cv = self._changeV}
end
end,
[Buff.HP_MAX_CHANGE] = function(_Buff)
|
b71a8190
zhouhaihai
动态改变 一些buff
|
175
|
_Buff._init = function(self) --初始化变化值
|
ccbafe67
zhouhaihai
冒险神器和buff
|
176
|
self._changeV = self:_calculate()
|
375f40f1
zhouhaihai
可控制 提高生命上限回复血量
|
177
|
local old = self.owner.hpMax
|
b71a8190
zhouhaihai
动态改变 一些buff
|
178
|
self.owner:reSetHpMax()
|
375f40f1
zhouhaihai
可控制 提高生命上限回复血量
|
179
|
self:_addHpByMax(old)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
180
181
182
|
end
_Buff._overlay = function(self)
self._changeV = (self._changeV or 0) + self:_calculate()
|
375f40f1
zhouhaihai
可控制 提高生命上限回复血量
|
183
|
local old = self.owner.hpMax
|
b71a8190
zhouhaihai
动态改变 一些buff
|
184
|
self.owner:reSetHpMax()
|
375f40f1
zhouhaihai
可控制 提高生命上限回复血量
|
185
|
self:_addHpByMax(old)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
186
187
188
189
190
191
192
|
end
_Buff._uncover = function(self)
self._changeV = self._changeV - self._changeV / (self.layer + 1)
self.owner:reSetHpMax()
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
193
194
|
_Buff._calculate = function(self)
local curValue = 0
|
46fac6f1
zhouahaihai
酱料
|
195
|
if self.buffData.effectValue1 == 0 then --固定值
|
ccbafe67
zhouhaihai
冒险神器和buff
|
196
|
curValue = self.buffData.effectValue2
|
46fac6f1
zhouahaihai
酱料
|
197
|
elseif self.buffData.effectValue1 == 1 then
|
375f40f1
zhouhaihai
可控制 提高生命上限回复血量
|
198
|
local baseOwner = self.buffData.effectValue4 == 1 and self.owner or self.release
|
46fac6f1
zhouahaihai
酱料
|
199
|
local attrs = {[0] = "hp", [1] = "hpMax", [2] = "atk"}
|
ccbafe67
zhouhaihai
冒险神器和buff
|
200
|
curValue = baseOwner[attrs[self.buffData.effectValue3]] * self.buffData.effectValue2 / 100
|
46fac6f1
zhouahaihai
酱料
|
201
|
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
202
203
204
205
206
207
208
|
return curValue
end
_Buff._effectValue = function(self)
return self:doEffectChange(self._changeV)
end
|
375f40f1
zhouhaihai
可控制 提高生命上限回复血量
|
209
210
211
212
213
214
215
216
217
|
_Buff._addHpByMax = function(self, old)
if self.buffData.effectValue5 == "1" then
local change = self.owner.hpMax - old
if change > 0 then
self.owner:recover(change, self.release) -- 防止release不存在,地图点buff
end
end
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
218
219
|
_Buff._endBuff = function(self)
self.owner:reSetHpMax()
|
46fac6f1
zhouahaihai
酱料
|
220
|
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
221
222
223
224
225
|
_Buff._effectChange = function(self)
self.owner:reSetHpMax()
end
|
46fac6f1
zhouahaihai
酱料
|
226
227
228
|
_Buff._initDB = function(self, data)
self._changeV = data.cv
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
229
|
|
46fac6f1
zhouahaihai
酱料
|
230
231
232
233
|
_Buff._getDB = function(self)
return {cv = self._changeV}
end
end,
|
0d405dc3
suhongyang
Buff生命周期调整,被动加buf...
|
234
|
[Buff.ATTR_CHANGE] = function(_Buff)
|
d78bc768
suhongyang
Fix bug
|
235
|
local attrName = AttsEnumEx[_Buff.buffData.effectValue3]
|
0d405dc3
suhongyang
Buff生命周期调整,被动加buf...
|
236
|
commonAttr(_Buff, attrName)
|
46fac6f1
zhouahaihai
酱料
|
237
|
end,
|
4f0a5fae
zhouhaihai
营养剂
|
238
|
|
ccbafe67
zhouhaihai
冒险神器和buff
|
239
|
[Buff.ATTR_CHANGE_COND] = function(_Buff)
|
4f0a5fae
zhouhaihai
营养剂
|
240
241
242
243
244
|
local attrName = AttsEnumEx[_Buff.buffData.effectValue3]
commonAttCond(_Buff, attrName)
end,
|
db3c56ad
zhouhaihai
冒险相关
|
245
246
|
[Buff.CHANGE_DROP_TO_CLICK] = function(_Buff)
_Buff._effectValue = function(self)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
247
|
-- id
|
db3c56ad
zhouhaihai
冒险相关
|
248
249
250
251
|
return self.buffData.effectValue1
end
end,
|
46fac6f1
zhouahaihai
酱料
|
252
|
[Buff.IMMNUE_BUFF] = function(_Buff)
|
1e6f6a8a
zhouhaihai
免疫 清除buff 增加新效果
|
253
254
255
256
257
258
259
260
261
262
263
264
|
_Buff._canEffect = function(self, buffId)
local buffData = csvdb["adv_map_buffCsv"][buffId]
local cType, aim = self.buffData.effectValue1
if buffData.dispel ~= 0 then return end
local dispel = false
if self.buffData.effectValue1 == 0 then
dispel = buffId == self.buffData.effectValue2
elseif self.buffData.effectValue1 == 1 then
dispel = buffData.group == self.buffData.effectValue2
elseif self.buffData.effectValue1 == 2 then
dispel = buffData.classify:sismember(self.buffData.effectValue2, " ")
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
265
|
end
|
1e6f6a8a
zhouhaihai
免疫 清除buff 增加新效果
|
266
|
return dispel
|
46fac6f1
zhouahaihai
酱料
|
267
268
269
270
|
end
end,
[Buff.CLEAR_BUFF] = function(_Buff)
|
b71a8190
zhouhaihai
动态改变 一些buff
|
271
|
_Buff._init = function(self)
|
1ffc16b9
zhouhaihai
冒险 选择点和 建筑
|
272
|
for _, buff in ipairs(self.owner.buffs) do -- 挂上就清除一下子
|
ccbafe67
zhouhaihai
冒险神器和buff
|
273
|
if not buff.isDel and self:canEffect(buff.id) and not self.isDel then
|
43716efb
zhouhaihai
buff 清除层数
|
274
|
while not buff.isDel and not self.isDel do
|
ccbafe67
zhouhaihai
冒险神器和buff
|
275
276
277
|
self:effect()
buff:uncover()
end
|
46fac6f1
zhouahaihai
酱料
|
278
|
end
|
7e45c419
suhongyang
现有buff补全战斗内生效逻辑
|
279
|
end
|
46fac6f1
zhouahaihai
酱料
|
280
|
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
281
282
|
_Buff._canEffect = function(self, buffId)
local buffData = csvdb["adv_map_buffCsv"][buffId]
|
1e6f6a8a
zhouhaihai
免疫 清除buff 增加新效果
|
283
284
285
286
287
288
289
290
291
292
|
local cType, aim = self.buffData.effectValue1
if buffData.dispel ~= 0 then return end
local dispel = false
if self.buffData.effectValue1 == 0 then
dispel = buffId == self.buffData.effectValue2
elseif self.buffData.effectValue1 == 1 then
dispel = buffData.group == self.buffData.effectValue2
elseif self.buffData.effectValue1 == 2 then
dispel = buffData.classify:sismember(self.buffData.effectValue2, " ")
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
293
|
end
|
1e6f6a8a
zhouhaihai
免疫 清除buff 增加新效果
|
294
295
|
return dispel
|
46fac6f1
zhouahaihai
酱料
|
296
297
298
299
|
end
end,
[Buff.OPEN_BLOCK] = function(_Buff)
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
300
301
|
_Buff._afterRound = function(self)
local roomNum = self:effect()
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
302
|
self.owner.battle.adv:getCurMap():openBlockRand(roomNum, not self.owner.monsterId)
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
303
|
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
304
|
_Buff._effectValue = function(self)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
305
306
|
-- 数量
return self.buffData.effectValue1 * self.layer
|
46fac6f1
zhouahaihai
酱料
|
307
308
309
|
end
end,
|
3b0526d2
zhouhaihai
冒险demo
|
310
|
[Buff.SP_CHANGE] = function(_Buff)
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
311
|
_Buff._afterRound = function(self)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
312
|
local cType, value = self:effect()
|
3b0526d2
zhouhaihai
冒险demo
|
313
|
self.owner:changeSp(value, cType)
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
314
315
|
end
_Buff._effectValue = function(self)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
316
317
|
-- 值/% 数量
return self.buffData.effectValue1, self:doEffectChange(self.buffData.effectValue2) * self.layer
|
46fac6f1
zhouahaihai
酱料
|
318
|
end
|
6cd12079
suhongyang
扣血buff立刻生效
|
319
|
end,
|
53e8037e
zhouhaihai
任务
|
320
|
|
a95b35ce
zhouhaihai
删除等级
|
321
322
323
324
325
326
327
328
329
330
|
-- [Buff.EXP_ADD] = function(_Buff)
-- _Buff._afterRound = function(self)
-- local value = self:effect()
-- self.owner.battle.player:addExp(value)
-- end
-- _Buff._effectValue = function(self)
-- -- 经验值
-- return self.buffData.effectValue1 * self.layer
-- end
-- end,
|
53e8037e
zhouhaihai
任务
|
331
|
|
ccbafe67
zhouhaihai
冒险神器和buff
|
332
|
[Buff.DISABLE_BUFF] = function(_Buff)
|
53e8037e
zhouhaihai
任务
|
333
334
335
336
|
_Buff._effectValue = function(self)
return self.buffData.effectValue1
end
end,
|
4f0a5fae
zhouhaihai
营养剂
|
337
|
|
3139a116
zhouhaihai
光环相关buff
|
338
339
340
341
342
343
344
345
346
347
348
349
|
[Buff.DISABLE_AURA] = function(_Buff)
_Buff._effectValue = function(self)
return self.buffData.effectValue1
end
end,
[Buff.GET_AURA] = function(_Buff)
_Buff._effectValue = function(self)
return self.buffData.effectValue1
end
end,
|
ccbafe67
zhouhaihai
冒险神器和buff
|
350
|
[Buff.SP_MAX_CHANGE] = function(_Buff)
|
b71a8190
zhouhaihai
动态改变 一些buff
|
351
|
_Buff._init = function(self) --初始化变化值
|
1bab9165
zhouhaihai
buff xiugai
|
352
|
self.owner:reSetSpMax()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
353
354
|
end
_Buff._overlay = function(self)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
355
356
357
|
self.owner:reSetSpMax()
end
|
1bab9165
zhouhaihai
buff xiugai
|
358
|
_Buff._uncover = function(self)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
359
|
self.owner:reSetSpMax()
|
ccbafe67
zhouhaihai
冒险神器和buff
|
360
361
362
363
364
365
366
367
368
|
end
_Buff._endBuff = function(self)
self.owner:reSetSpMax()
end
_Buff._effectValue = function(self)
return self.buffData.effectValue1, self.buffData.effectValue2 * self.layer
end
|
98761edc
zhouhaihai
buff 补充
|
369
|
end,
|
ccbafe67
zhouhaihai
冒险神器和buff
|
370
371
|
[Buff.ITEM_GET_UP] = function(_Buff)
|
4f0a5fae
zhouhaihai
营养剂
|
372
|
_Buff._effectValue = function(self)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
373
374
|
-- 值/% 数量 id
return self.buffData.effectValue1, self.buffData.effectValue2 * self.layer, self.buffData.effectValue3
|
4f0a5fae
zhouhaihai
营养剂
|
375
376
|
end
end,
|
ccbafe67
zhouhaihai
冒险神器和buff
|
377
378
379
380
381
382
|
-- 影响到的buff类型 1=生命变化、2=生命上限、3=属性变化、6=伤害变化、7=受伤变化、15=回魔、16=生命变化 (胡博文)
[Buff.Buff_EFFECT_CHANGE] = function(_Buff)
_Buff._init = function(self)
-- 先给自己的buff 搞一下子
for _, buff in ipairs(self.owner.buffs) do
|
1e6f6a8a
zhouhaihai
免疫 清除buff 增加新效果
|
383
|
if not buff.isDel and buff.buffData.classify:sismember(self.buffData.effectValue1, " ") then
|
ccbafe67
zhouhaihai
冒险神器和buff
|
384
385
386
387
|
buff:effectChange()
end
end
end
|
4f0a5fae
zhouhaihai
营养剂
|
388
|
_Buff._effectValue = function(self)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
389
390
391
392
393
394
395
|
return self.buffData.effectValue1, self.buffData.effectValue2 * self.layer
end
_Buff._overlay = function(self)
self:_init()
end
_Buff._uncover = function(self)
self:_init()
|
4f0a5fae
zhouhaihai
营养剂
|
396
397
|
end
end,
|
810c6151
zhouhaihai
增加buff 效果31 地图被动刷...
|
398
399
400
401
402
403
|
[Buff.Buff_NO_PASSIVE_MONSTER] = function(_Buff)
_Buff._effectValue = function(self)
return self.buffData.effectValue1
end
end,
|
a0834e49
zhouhaihai
增加潜行 功能
|
404
|
[Buff.SNEAK] = function(_Buff)
|
9c08bf47
zhouhaihai
简化=潜行
|
405
406
|
_Buff._init = function(self)
self.layer = self.buffData.effectValue1
|
a0834e49
zhouhaihai
增加潜行 功能
|
407
408
|
end
end,
|
b6a2b78b
zhouhaihai
冒险 buff 类型 34 35
|
409
410
411
412
413
414
415
416
|
[Buff.GET_PASSIVE] = function( _Buff )
_Buff._init = function(self)
self.owner:addPassive({id = self.buffData.effectValue1})
end
_Buff._endBuff = function(self)
self.owner:delPassiveById(self.buffData.effectValue1)
end
end
|
46fac6f1
zhouahaihai
酱料
|
417
418
|
}
|
ccbafe67
zhouhaihai
冒险神器和buff
|
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
|
-- 同样的返回 effectValue1, effectValue2 * self.layer 类型的buff
local function CommonFuncBackEffect12(_Buff)
_Buff._effectValue = function(self)
return self.buffData.effectValue1, self:doEffectChange(self.buffData.effectValue2) * self.layer
end
end
BuffFactory[Buff.BACK_HURT] = CommonFuncBackEffect12 -- 值/% 数量
BuffFactory[Buff.HURT_CHANGE] = CommonFuncBackEffect12 -- 值/% 数量
BuffFactory[Buff.INJURED_CHANGE] = CommonFuncBackEffect12 -- 值/% 数量
BuffFactory[Buff.HURT_TRANSFER] = CommonFuncBackEffect12 -- 值/% 数量
BuffFactory[Buff.HURT_ABSORB] = CommonFuncBackEffect12 -- 值/% 数量
BuffFactory[Buff.CHANGE_DROP] = CommonFuncBackEffect12 -- id 数量
BuffFactory[Buff.EXP_UP] = CommonFuncBackEffect12 -- 值/% 数量
-- 历史遗留问题
BuffFactory[Buff.HP_CHANGE_NOW] = BuffFactory[Buff.HP_CHANGE]
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
436
437
438
|
function Buff:ctor(owner, id)
self.owner = owner
self.id = id
|
3b0526d2
zhouhaihai
冒险demo
|
439
|
self.buffData = csvdb["adv_map_buffCsv"][self.id]
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
440
|
self.isDel = false
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
441
|
self.roundSpace = 0 --生效间隔
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
442
|
self.round = 0 --剩余的回合
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
443
|
self.count = -1 -- 可生效的次数 -1 无次数限制
|
ccbafe67
zhouhaihai
冒险神器和buff
|
444
|
self.layer = 1 -- 当前buff 层数
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
445
|
self.releaseId = nil -- 释放的怪物Id
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
446
447
448
449
450
|
if BuffFactory[self.buffData.type] then
BuffFactory[self.buffData.type](self)
end
end
|
46fac6f1
zhouahaihai
酱料
|
451
452
453
454
455
456
457
458
459
460
461
462
463
|
function Buff.create(owner, release, data)
local buff = Buff.new(owner, data.id)
buff:initNew(release, data)
return buff
end
function Buff.load(owner, data)
local buff = Buff.new(owner, data.id)
buff:initByDB(data)
return buff
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
464
|
function Buff:initNew(release, data)
|
6d238bc6
suhongyang
Fix bug
|
465
|
self.release = release or self.owner
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
466
|
self.releaseId = self.release.monsterId or 0
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
467
|
self.round = self.buffData.round
|
ccbafe67
zhouhaihai
冒险神器和buff
|
468
469
|
self.roundSpace = 0 --生效间隔
self.layer = 1
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
470
471
472
|
if self.buffData.effectTime > 0 then
self.count = self.buffData.effectTime
end
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
473
474
475
|
if self.buffData.mapLock == 1 then
self.mapId = self.owner.battle.adv:getCurMap().mapId
end
|
b71a8190
zhouhaihai
动态改变 一些buff
|
476
477
|
end
|
a80fee7c
zhouhaihai
光环
|
478
479
480
481
482
483
484
485
486
487
488
489
|
function Buff:createAfter(layer)
layer = layer or 1
local otype, maxLayer = self:getOverlay()
if otype then
self.layer = layer
if maxLayer ~= 0 then
self.layer = math.min(maxLayer, self.layer)
end
else
self.layer = 1
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
490
|
if self._init then
|
b71a8190
zhouhaihai
动态改变 一些buff
|
491
|
self:_init()
|
46fac6f1
zhouahaihai
酱料
|
492
|
end
|
cf584618
zhouhaihai
效果发给客户端
|
493
|
self:pushBackEffect(1)
|
e6dc06cc
zhouhaihai
拾荒bug 增加bug log
|
494
|
buglog("Buff", "who: %s create buffId: %s", self.owner.monsterId, self.id)
|
46fac6f1
zhouahaihai
酱料
|
495
496
497
498
499
500
501
502
503
504
|
end
function Buff:initByDB(data)
if data.rele then
if data.rele == 0 then
self.release = self.owner.battle.player
else
self.release = self.owner.battle:getEnemyById(data.rele)
end
end
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
505
|
self.releaseId = data.releId
|
821f2b60
suhongyang
冒险战斗完善,增加battlebe...
|
506
|
self.round = data.round
|
ccbafe67
zhouhaihai
冒险神器和buff
|
507
|
self.roundSpace = data.roundSp
|
46fac6f1
zhouahaihai
酱料
|
508
509
510
|
if data.count then
self.count = data.count
end
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
511
512
513
|
if data.mapId then
self.mapId = data.mapId
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
514
|
self.layer = data.layer or 1
|
46fac6f1
zhouahaihai
酱料
|
515
516
517
518
519
|
if self._initDB then
self:_initDB(data)
end
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
520
|
|
46fac6f1
zhouahaihai
酱料
|
521
|
function Buff:afterRound()
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
522
|
if self.owner.isDead or self:isHide() then return end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
523
524
525
526
527
528
529
|
-- keepTerm 检查
if not self:checkKeep() then
self.isDel = true
return
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
530
|
if self.roundSpace > 0 then
|
8d8bf91a
suhongyang
fix bug
|
531
|
self.roundSpace = self.roundSpace - 1
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
532
533
534
535
536
537
|
self:decRound()
return
end
if self._afterRound then
self:_afterRound()
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
538
|
if self.buffData.roundTime > 0 then
|
8d8bf91a
suhongyang
fix bug
|
539
|
self.roundSpace = self.buffData.roundTime
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
540
541
542
|
end
self:decRound()
end
|
46fac6f1
zhouahaihai
酱料
|
543
|
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
544
|
-- 只使用owner 和 buffData 和 releaseId
|
ccbafe67
zhouhaihai
冒险神器和buff
|
545
546
547
548
549
550
551
|
function Buff:checkKeep()
if self.buffData.keepTerm == "" then return true end
--[[
1=怪物id;
2=建筑id;
3=事件id
4=队伍为特定属性时
|
a0834e49
zhouhaihai
增加潜行 功能
|
552
|
5=拥有指定buff
|
ccbafe67
zhouhaihai
冒险神器和buff
|
553
554
555
|
--]]
local checkFunc = {}
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
556
|
checkFunc[1] = function(_)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
557
558
|
local enemys = self.owner.battle.player:getTeam(2)
for _, enemy in pairs(enemys) do
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
559
|
if enemy.monsterId == self.releaseId then
|
ccbafe67
zhouhaihai
冒险神器和buff
|
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
|
return true
end
end
return false
end
checkFunc[2] = function(_, buildId)
for roomId, room in pairs(self.owner.battle.adv:getCurMap().rooms) do
for blockId, block in pairs(room.blocks) do
if block.isOpen and block:getEventType() == AdvEventType.Build and block.event.id == buildId then
return true
end
end
end
return false
end
checkFunc[3] = function(_, chooseId)
for roomId, room in pairs(self.owner.battle.adv:getCurMap().rooms) do
for blockId, block in pairs(room.blocks) do
if block.isOpen and (block:getEventType() == AdvEventType.Choose or block:getEventType() == AdvEventType.LinkChoose) and block.event.id == chooseId then
return true
end
end
end
return false
end
checkFunc[4] = function(_, teamAttr)
local role = self.owner.battle.adv.owner
return role:getHerosCamp(role:getProperty("advTeam").heros) == teamAttr
end
|
a0834e49
zhouhaihai
增加潜行 功能
|
589
590
|
checkFunc[5] = function(_, buffId)
local buff = self.owner:getBuffById(buffId)
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
591
|
if buff then
|
a0834e49
zhouhaihai
增加潜行 功能
|
592
593
594
595
|
return true
end
return false
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
596
597
598
599
600
601
|
local keepTerm = self.buffData.keepTerm:toArray(true, "=")
if not checkFunc[keepTerm[1]] then return true end
return checkFunc[keepTerm[1]](table.unpack(keepTerm))
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
602
|
function Buff:decRound()
|
4f0a5fae
zhouhaihai
营养剂
|
603
|
if self.buffData.round <= 0 then
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
604
605
606
607
608
609
610
611
|
return
end
self.round = self.round - 1
if self.round <= 0 then
self.isDel = true
end
end
|
596ac19f
zhouhaihai
buff
|
612
613
|
function Buff:afterLayer()
-- 持续一层
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
614
|
if self.buffData.round == 0 or self.buffData.mapLock == 1 then
|
596ac19f
zhouhaihai
buff
|
615
616
617
618
|
self.isDel = true
end
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
619
620
621
|
function Buff:canEffect(...)
if not self._canEffect then
return true
|
46fac6f1
zhouahaihai
酱料
|
622
|
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
623
|
return self:_canEffect(...)
|
46fac6f1
zhouahaihai
酱料
|
624
625
|
end
|
cf584618
zhouhaihai
效果发给客户端
|
626
627
628
629
630
631
632
633
634
635
|
function Buff:pushBackEffect(etype)
local shows = self.buffData.show:toTableArray(true)
for _, one in ipairs(shows) do
if one[1] == etype then
self.owner.battle.adv:pushBackEvent(AdvBackEventType.BuffEffect, {etype = etype, id = self.id, blockId = self.owner.blockId, roomId = self.owner.roomId})
break
end
end
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
636
|
function Buff:effect()
|
e6dc06cc
zhouhaihai
拾荒bug 增加bug log
|
637
|
buglog("Buff", "who: %s effect buffId: %s", self.owner.monsterId, self.id)
|
3c89adfb
zhouhaihai
buff 减次数
|
638
|
self:decCount()
|
cf584618
zhouhaihai
效果发给客户端
|
639
|
self:pushBackEffect(2)
|
46fac6f1
zhouahaihai
酱料
|
640
641
642
|
if self._effectValue then
return self:_effectValue()
end
|
46fac6f1
zhouahaihai
酱料
|
643
|
end
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
644
645
646
647
|
-- 在当前阶段不可用 小透明 < 不会回合遍历 不会查找遍历 可以删除遍历 可以下层遍历 >
function Buff:isHide()
if self.isDel then
|
e0c0365a
zhouhaihai
反的判断
|
648
|
return true
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
649
650
|
end
if self.buffData.mapLock == 1 and self.mapId and self.owner.battle.adv:getCurMap().mapId ~= self.mapId then
|
e0c0365a
zhouhaihai
反的判断
|
651
|
return true
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
652
|
end
|
e0c0365a
zhouhaihai
反的判断
|
653
|
return false
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
654
655
|
end
|
46fac6f1
zhouahaihai
酱料
|
656
657
658
659
660
|
--删除buff 时调用
function Buff:endBuff()
if self._endBuff then
self:_endBuff()
end
|
e6dc06cc
zhouhaihai
拾荒bug 增加bug log
|
661
|
buglog("Buff", "who: %s endBuff buffId: %s", self.owner.monsterId, self.id)
|
46fac6f1
zhouahaihai
酱料
|
662
663
664
665
666
667
668
669
670
671
672
673
674
675
|
end
function Buff:getType()
return self.buffData.type
end
function Buff:decCount()
if self.count == -1 then return end
self.count = self.count - 1
if self.count <= 0 then
self.isDel = true
end
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
676
677
678
679
680
681
682
683
684
685
686
687
|
function Buff:getOverlay()
if self.buffData.overlay == "" then
return false
end
local otype, layer = table.unpack(self.buffData.overlay:toArray(true, "="))
if otype == 1 then -- 叠加
return true, layer or 0 -- 0 叠加无数层
end
return false
end
-- 叠加
|
a80fee7c
zhouhaihai
光环
|
688
|
function Buff:overlay(releaser, data, layer)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
689
690
|
local otype, maxLayer = self:getOverlay()
if self.isDel or not otype then -- 新获得的 (不可叠加相当于新获得的)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
691
|
self:endBuff()
|
a80fee7c
zhouhaihai
光环
|
692
|
self.isDel = false
|
ccbafe67
zhouhaihai
冒险神器和buff
|
693
|
self:initNew(releaser, data)
|
a80fee7c
zhouhaihai
光环
|
694
|
self:createAfter(layer)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
695
696
697
698
699
700
701
702
703
704
705
706
|
else
-- 重置回合 次数
self.roundSpace = 0
self.round = self.buffData.round
if self.buffData.effectTime > 0 then
self.count = self.buffData.effectTime
else
self.count = -1
end
self.release = releaser or self.release
-- 叠加层数
|
7bd7eaa5
zhouhaihai
buff 叠加判定
|
707
|
local oldLayer = self.layer
|
a80fee7c
zhouhaihai
光环
|
708
|
self.layer = self.layer + layer
|
ccbafe67
zhouhaihai
冒险神器和buff
|
709
710
711
|
if maxLayer ~= 0 then
self.layer = math.min(maxLayer, self.layer)
end
|
7bd7eaa5
zhouhaihai
buff 叠加判定
|
712
713
|
if oldLayer ~= self.layer and self._overlay then
|
ccbafe67
zhouhaihai
冒险神器和buff
|
714
715
|
self:_overlay()
end
|
cf584618
zhouhaihai
效果发给客户端
|
716
717
|
self:pushBackEffect(1)
|
e6dc06cc
zhouhaihai
拾荒bug 增加bug log
|
718
|
buglog("Buff", "who: %s overlay buffId: %s", self.owner.monsterId, self.id)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
719
720
721
722
|
end
end
-- 扣减层数
|
a80fee7c
zhouhaihai
光环
|
723
724
725
726
727
728
729
|
function Buff:uncover(layer, isAura)
layer = layer or 1
local oldLayer = self.layer
self.layer = self.layer - layer
if self.layer <= 0 then
|
ccbafe67
zhouhaihai
冒险神器和buff
|
730
731
732
|
self.isDel = true
end
|
a80fee7c
zhouhaihai
光环
|
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
|
if isAura then
if layer == -1 then
self.layer = 0
self.isDel = true
else
self.layer = math.max(1, self.layer)
self.isDel = false
end
end
if self.isDel then return end
if oldLayer ~= self.layer then
if self._uncover then
self:_uncover()
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
749
750
751
752
753
754
755
756
757
758
759
|
end
end
-- buff 效果增益减益
function Buff:effectChange()
if self._effectChange then
self:_effectChange()
end
end
function Buff:doEffectChange(effect)
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
760
|
if self.buffData.classify == "" then return effect end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
761
762
|
local change = self.owner:getBuffEffectChange(self.buffData.classify)
return effect * (1 + change)
|
46fac6f1
zhouahaihai
酱料
|
763
764
|
end
|
1ffc16b9
zhouhaihai
冒险 选择点和 建筑
|
765
766
767
768
|
function Buff:getLayer()
return self.layer
end
|
46fac6f1
zhouahaihai
酱料
|
769
770
771
772
773
774
775
776
777
|
function Buff:getDB()
local db = {}
if self._getDB then
db = self:_getDB()
end
db.id = self.id
if self.release and not self.release.isDead then
db.rele = self.release.id or 0 --释放者的id (0 为玩家) (不存在 则释放者不存在或者已经死亡)
end
|
596ac19f
zhouhaihai
buff
|
778
|
if self.buffData.round > 0 then
|
821f2b60
suhongyang
冒险战斗完善,增加battlebe...
|
779
|
db.round = self.round
|
46fac6f1
zhouahaihai
酱料
|
780
|
end
|
7c55db1f
suhongyang
Buff逻辑完善,buff生效次数...
|
781
|
db.roundSp = self.roundSpace
|
46fac6f1
zhouahaihai
酱料
|
782
783
784
|
if self.count ~= -1 then
db.count = self.count
end
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
785
786
787
|
if self.mapId then
db.mapId = self.mapId
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
788
|
db.layer = self.layer
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
789
790
791
|
if self.buffData.keepTerm:toArray(true, "=")[1] == 1 then
db.releId = self.releaseId
end
|
46fac6f1
zhouahaihai
酱料
|
792
793
794
795
|
return db
end
return Buff
|