c8ade4f6
suhongyang
被动筛选逻辑
|
1
2
3
|
local Filter = class("Filter")
Filter.HP_UP_WITH_EQUAL = 1 -- 血量>=value%
|
1cb78a24
suhongyang
passive的筛选
|
4
5
6
7
8
|
Filter.HP_UP = 2 -- 血量>value%
Filter.HP_LOW_WITH_EQUAL = 3 -- 血量<=value%
Filter.HP_LOW = 4 -- 血量<value%
Filter.BUFF_BY_TYPE = 5 -- 指定类型buff
Filter.BUFF_BY_ID = 6 -- 指定id的buff
|
bf73a8e5
zhouhaihai
阵营
|
9
|
Filter.CAMP = 7 -- 玩家是指定阵营
|
6826fdf6
zhouhaihai
被动触发
|
10
11
|
Filter.RANGE = 8 -- 筛选范围 (触发是地块)
Filter.CLASSIFY = 9 -- 标签
|
c8ade4f6
suhongyang
被动筛选逻辑
|
12
13
14
15
16
17
18
|
local FilterFactory = {}
FilterFactory[Filter.HP_UP_WITH_EQUAL] = function (_Filter)
_Filter._execute = function (self, target)
return target.hp >= self.value * target.hpMax / 100
end
end
|
1cb78a24
suhongyang
passive的筛选
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
FilterFactory[Filter.HP_UP] = function (_Filter)
_Filter._execute = function (self, target)
return target.hp > self.value * target.hpMax / 100
end
end
FilterFactory[Filter.HP_LOW_WITH_EQUAL] = function (_Filter)
_Filter._execute = function (self, target)
return target.hp <= self.value * target.hpMax / 100
end
end
FilterFactory[Filter.HP_LOW] = function (_Filter)
_Filter._execute = function (self, target)
return target.hp < self.value * target.hpMax / 100
end
end
FilterFactory[Filter.BUFF_BY_TYPE] = function (_Filter)
_Filter._execute = function (self, target)
return target:hadBuff(self.value)
end
end
FilterFactory[Filter.BUFF_BY_ID] = function (_Filter)
_Filter._execute = function (self, target)
return target:hadBuffById(self.value)
end
end
|
bf73a8e5
zhouhaihai
阵营
|
44
45
46
47
48
49
50
|
FilterFactory[Filter.CAMP] = function (_Filter)
_Filter._execute = function (self, target)
local role = self.owner.battle.adv.owner
return role:getHerosCamp(role:getProperty("advTeam").heros) == self.value
end
end
|
6826fdf6
zhouhaihai
被动触发
|
51
52
|
FilterFactory[Filter.RANGE] = function (_Filter)
_Filter._execute = function (self, target, params)
|
e587a3aa
zhouhaihai
passive 距离生效bug
|
53
|
if params and self.owner.blockId and self.owner.roomId and params.blockId and params.roomId then
|
6826fdf6
zhouhaihai
被动触发
|
54
55
56
57
58
59
60
61
62
|
local distance = self.owner.battle.adv:getCurMap():getDistance(self.owner.roomId, self.owner.blockId, params.roomId, params.blockId)
return distance ~= -1 and distance <= self.value
end
return false
end
end
FilterFactory[Filter.CLASSIFY] = function (_Filter)
_Filter._execute = function (self, target)
|
1e789624
zhouhaihai
新的 buff 效果
|
63
|
return target.isClassify and target:isClassify(self.value)
|
6826fdf6
zhouhaihai
被动触发
|
64
65
|
end
end
|
c8ade4f6
suhongyang
被动筛选逻辑
|
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
function Filter:ctor(params)
self.owner = params.owner
self.skill = params.skill
self.fType = params.fType -- 筛选类型
self.oType = params.oType -- 主体类型 0:owner 1:trigger 2:releaser
self.value = params.value -- 筛选值
if FilterFactory[self.fType] then
FilterFactory[self.fType](self)
end
end
function Filter:getTarget(params)
local target
if self.oType == 0 then
target = self.owner
end
if self.oType == 1 and params.trigger then
target = params.trigger
end
if self.oType == 2 and params.releaser then
target = params.releaser
end
return target
end
function Filter:execute(params)
local target = self:getTarget(params)
if not target then
return
end
|
e587a3aa
zhouhaihai
passive 距离生效bug
|
98
99
|
return self:_execute(target, params)
|
c8ade4f6
suhongyang
被动筛选逻辑
|
100
101
102
|
end
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
46fac6f1
zhouahaihai
酱料
|
103
104
105
106
107
|
local Passive = class("Passive")
-- 每回合触发的使用 afterRound
-- 其他触发的使用 triggerPassive
|
02c4de8d
zhouahaihai
增加 固有技
|
108
109
|
Passive.BORN_ONCE = 1 -- 自身出生(翻开所在格子)触发
Passive.ROOM_SHOW = 2 --自身所在房间被展示时,触发1次
|
46fac6f1
zhouahaihai
酱料
|
110
111
112
113
114
115
|
Passive.HURT_PERCENT_SELF = 3 --自身,每损失N%生命值,触发1次
Passive.HURT_PERCENT_TEAM = 4 --队友,每损失N%生命值,触发1次
Passive.HP_LOW_SELF = 5 --自身生命值<N%时,每回合触发
Passive.HP_LOW_TEAM = 6 --敌人生命值<N%时,每回合触发
Passive.HP_UP_SELF = 7 --自身生命值>N%时,每回合触发
Passive.HP_UP_TEAM = 8 --敌人生命值>N%时,每回合触发
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
116
117
118
119
|
Passive.SELF_ATK = 9 --自身攻击N次后,触发1次 < discard >
Passive.SELF_HURT = 10 --自身受击buff后,触发1次
Passive.TEAM_ATK = 11 --队友攻击N次后,触发1次 < discard >
Passive.TEAM_HURT = 12 --队友受击buff后,触发1次
|
46fac6f1
zhouahaihai
酱料
|
120
121
122
123
124
125
|
Passive.MONSTER_COUNT_UP = 13 --场上存在N个以上怪物,每回合触发
Passive.MONSTER_COUNT_LOW = 14 --场上存在N个以下怪物,每回合触发
Passive.SELF_DEAD = 15 --自身死亡后,触发1次
Passive.TEAM_DEAD = 16 --队友死亡后,触发1次
Passive.TARGET_SKILL = 17 --目标每使用N次技能,触发1次
Passive.TEAM_SKILL = 18 --队友每使用N次技能,触发1次
|
02c4de8d
zhouahaihai
增加 固有技
|
126
|
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
127
128
129
130
131
132
133
134
135
136
137
|
Passive.HAVE_MONSTER = 20 --场上拥有指定怪时 回合触发
Passive.SKILL_KILL = 21 --技能击杀怪物时 触发1次
Passive.CLICK_TRAP = 22 --触发陷阱时 触发1次
Passive.DOWN_LAYER = 23 --下层时 触发1次
Passive.ADV_OVER = 24 --结算时 触发1次
Passive.BATTLE_WIN = 25 --战斗胜利x次时
Passive.CLICK_DROP = 26 --拾取drop x次时
Passive.AFTER_ROUND = 27 --经过 x回合时
Passive.GET_BUFF = 28 --获得指定buff
Passive.OPEN_BLOCK = 29 --翻开格子
Passive.OPEN_MONSTER = 30 --翻开怪物
|
95065b5b
zhouhaihai
被动技新
|
138
|
Passive.PLAYER_BUFF = 31 --玩家获得buff
|
6826fdf6
zhouhaihai
被动触发
|
139
|
|
04b84e1e
zhouhaihai
被动
|
140
|
Passive.PLAYER_BUFF_CLASSIFY = 35 -- 获得指定标签的buff
|
46fac6f1
zhouahaihai
酱料
|
141
142
|
-- 不同的开启条件
|
02c4de8d
zhouahaihai
增加 固有技
|
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
local PassiveCondFactory = {}
PassiveCondFactory[Passive.HURT_PERCENT_SELF] = function(_Passive)
_Passive._trigger = function(self, params)
local value = params.value or 1
self.rv = math.floor(self.rv + value)
if self.rv >= self.passiveData.value then
self.rv = self.rv % self.passiveData.value -- 取余
return true
end
end
_Passive._initDB = function(self, data)
self.rv = data.rv or 0
end
_Passive._getDB = function(self)
return {rv = self.rv}
end
end
PassiveCondFactory[Passive.HURT_PERCENT_TEAM] = PassiveCondFactory[Passive.HURT_PERCENT_SELF] --逻辑相同
PassiveCondFactory[Passive.SELF_ATK] = PassiveCondFactory[Passive.HURT_PERCENT_SELF] --逻辑相同
|
02c4de8d
zhouahaihai
增加 固有技
|
163
|
PassiveCondFactory[Passive.TEAM_ATK] = PassiveCondFactory[Passive.HURT_PERCENT_SELF] --逻辑相同
|
02c4de8d
zhouahaihai
增加 固有技
|
164
165
|
PassiveCondFactory[Passive.TARGET_SKILL] = PassiveCondFactory[Passive.HURT_PERCENT_SELF] --逻辑相同
PassiveCondFactory[Passive.TEAM_SKILL] = PassiveCondFactory[Passive.HURT_PERCENT_SELF] --逻辑相同
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
166
167
168
169
170
171
172
173
|
PassiveCondFactory[Passive.BATTLE_WIN] = PassiveCondFactory[Passive.HURT_PERCENT_SELF] --逻辑相同
PassiveCondFactory[Passive.CLICK_DROP] = PassiveCondFactory[Passive.HURT_PERCENT_SELF] --逻辑相同
PassiveCondFactory[Passive.AFTER_ROUND] = PassiveCondFactory[Passive.HURT_PERCENT_SELF] --逻辑相同
PassiveCondFactory[Passive.OPEN_BLOCK] = PassiveCondFactory[Passive.HURT_PERCENT_SELF] --逻辑相同
PassiveCondFactory[Passive.SELF_HURT] = function(_Passive)
_Passive._trigger = function(self, params)
local buffId = params.buffId
|
f5e38251
zhouhaihai
数据保护
|
174
|
if not buffId then return end
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
175
|
local data = csvdb["adv_map_buffCsv"][buffId]
|
f5e38251
zhouhaihai
数据保护
|
176
|
if not data then return end
|
1e6f6a8a
zhouhaihai
免疫 清除buff 增加新效果
|
177
|
if data.classify:sismember(self.passiveData.value, " ") then
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
178
179
180
181
182
183
|
return true
end
end
end
PassiveCondFactory[Passive.TEAM_HURT] = PassiveCondFactory[Passive.SELF_HURT] --逻辑相同
|
02c4de8d
zhouahaihai
增加 固有技
|
184
185
186
187
|
PassiveCondFactory[Passive.ROOM_SHOW] = function(_Passive)
_Passive._trigger = function(self, params)
local roomId = params.roomId
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
188
|
if self.owner.roomId == roomId then
|
02c4de8d
zhouahaihai
增加 固有技
|
189
190
191
192
193
|
return true
end
end
end
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
194
195
196
197
198
199
200
|
PassiveCondFactory[Passive.GET_BUFF] = function(_Passive)
_Passive._trigger = function(self, params)
if self.passiveData.value == params.buffId then
return true
end
end
end
|
95065b5b
zhouhaihai
被动技新
|
201
|
PassiveCondFactory[Passive.PLAYER_BUFF] = PassiveCondFactory[Passive.GET_BUFF]
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
202
|
|
04b84e1e
zhouhaihai
被动
|
203
204
|
PassiveCondFactory[Passive.PLAYER_BUFF_CLASSIFY] = function(_Passive)
_Passive._trigger = function(self, params)
|
1556be8b
zhouhaihai
判断错误
|
205
|
if params.classify:sismember(self.passiveData.value, " ") then
|
04b84e1e
zhouhaihai
被动
|
206
207
208
209
210
|
return true
end
end
end
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
|
PassiveCondFactory[Passive.BORN_ONCE] = function(_Passive)
_Passive._afterRound = function(self)
if not self.owner.lock then
self:trigger(Passive.BORN_ONCE)
end
end
end
PassiveCondFactory[Passive.HAVE_MONSTER] = function(_Passive)
_Passive._afterRound = function(self)
for _, player in ipairs(self.owner.battle.player:getTeam(2)) do
if player.monsterId == self.passiveData.value then
self:trigger(Passive.HAVE_MONSTER)
break
end
end
end
end
|
02c4de8d
zhouahaihai
增加 固有技
|
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
|
PassiveCondFactory[Passive.HP_LOW_SELF] = function(_Passive)
_Passive._afterRound = function(self)
if self.owner.hp / self.owner.hpMax * 100 < self.passiveData.value then
self:trigger(Passive.HP_LOW_SELF)
end
end
end
PassiveCondFactory[Passive.HP_LOW_TEAM] = function(_Passive)
_Passive._afterRound = function(self)
for _, player in ipairs(self.owner:getTeam(2)) do
if player.hp / player.hpMax * 100 < self.passiveData.value then
self:trigger(Passive.HP_LOW_TEAM, {trigger = player})
end
end
end
end
PassiveCondFactory[Passive.HP_UP_SELF] = function(_Passive)
_Passive._afterRound = function(self)
if self.owner.hp / self.owner.hpMax * 100 > self.passiveData.value then
self:trigger(Passive.HP_UP_SELF)
end
end
end
PassiveCondFactory[Passive.HP_UP_TEAM] = function(_Passive)
_Passive._afterRound = function(self)
for _, player in ipairs(self.owner:getTeam(2)) do
if player.hp / player.hpMax * 100 > self.passiveData.value then
self:trigger(Passive.HP_UP_TEAM, {trigger = player})
end
end
end
end
PassiveCondFactory[Passive.MONSTER_COUNT_UP] = function(_Passive)
_Passive._afterRound = function(self)
local monsters = self.owner.battle.player:getTeam(2)
if #monsters > self.passiveData.value then
self:trigger(Passive.MONSTER_COUNT_UP)
end
end
end
PassiveCondFactory[Passive.MONSTER_COUNT_LOW] = function(_Passive)
_Passive._afterRound = function(self)
local monsters = self.owner.battle.player:getTeam(2)
if #monsters < self.passiveData.value then
self:trigger(Passive.MONSTER_COUNT_LOW)
end
end
end
|
46fac6f1
zhouahaihai
酱料
|
285
286
287
288
289
|
function Passive:ctor(owner, data)
self.owner = owner
self.id = data.id
self.level = data.level or 1
|
3b0526d2
zhouhaihai
冒险demo
|
290
|
self.passiveData = csvdb["adv_map_passiveCsv"][self.id][self.level]
|
46fac6f1
zhouahaihai
酱料
|
291
292
|
self.isDel = false
self.round = data.round or 0 --触发剩余回合数
|
65de8cf1
suhongyang
被动逻辑进一步修缮
|
293
294
|
self.count = data.count or self.passiveData.count --触发剩余次数
self.delay = data.delay or self.passiveData.delayRound --触发延迟回合数
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
295
296
297
|
if self.passiveData.mapLock == 1 and not self.mapId then
self.mapId = self.owner.battle.adv:getCurMap().mapId
end
|
1b0d767f
suhongyang
一個被動支持多種effect
|
298
299
|
self.effects = self.passiveData.effect:toTableArray(true)
|
c8ade4f6
suhongyang
被动筛选逻辑
|
300
|
self.filters = {}
|
821f2b60
suhongyang
冒险战斗完善,增加battlebe...
|
301
302
303
304
|
if self.passiveData.count < 0 then -- count < 0 无限次触发
self.count = 999
end
|
1b0d767f
suhongyang
一個被動支持多種effect
|
305
|
|
02c4de8d
zhouahaihai
增加 固有技
|
306
307
308
|
if PassiveCondFactory[self.passiveData.condition] then
PassiveCondFactory[self.passiveData.condition](self)
end
|
c8ade4f6
suhongyang
被动筛选逻辑
|
309
|
self:initFilter()
|
02c4de8d
zhouahaihai
增加 固有技
|
310
311
|
if self._initDB then
self:_initDB(data)
|
46fac6f1
zhouahaihai
酱料
|
312
313
314
|
end
end
|
c8ade4f6
suhongyang
被动筛选逻辑
|
315
316
317
318
319
320
321
322
|
function Passive:initFilter()
local filterList = self.passiveData.filter:toTableArray(true)
for _, fParams in ipairs(filterList) do
local filter = Filter.new({owner = self.owner, skill = self, oType = fParams[1], fType = fParams[2], value = fParams[3] })
table.insert(self.filters, filter)
end
end
|
46fac6f1
zhouahaihai
酱料
|
323
324
325
326
|
function Passive:getCondType()
return self.passiveData.condition, self.passiveData.value
end
|
c8ade4f6
suhongyang
被动筛选逻辑
|
327
|
-- effect 生效篩選
|
1b0d767f
suhongyang
一個被動支持多種effect
|
328
329
330
331
|
function Passive:canEffect(effType, effValue)
if self.owner.lock and effType ~= 3 then -- 锁定的只能触发翻开自己格子的固有技
return
end
|
4f0a5fae
zhouhaihai
营养剂
|
332
|
--禁用被动技
|
aa74d6ef
zhouhaihai
掉落反馈
|
333
|
local count = self.owner:getDisablePassiveCount()
|
871b3da3
zhouhaihai
被动 取消
|
334
335
|
local idx = self.owner:getPassiveIdx(self)
if count and idx and (count == 0 or idx <= count) then
|
4f0a5fae
zhouhaihai
营养剂
|
336
337
|
return
end
|
1b0d767f
suhongyang
一個被動支持多種effect
|
338
339
340
|
return true
end
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
341
|
function Passive:effect(triggerPms)
|
6a323693
zhouhaihai
有序的
|
342
|
for _, effect in ipairs(self.effects) do
|
1b0d767f
suhongyang
一個被動支持多種effect
|
343
344
|
local effType = effect[1]
local effValue = effect[2]
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
345
346
347
348
|
local otherPms = {}
for i = 3, #effect do
table.insert(otherPms, effect[i])
end
|
1b0d767f
suhongyang
一個被動支持多種effect
|
349
|
if self:canEffect(effType, effValue) then
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
350
|
self["effect" .. effType](self, effValue, triggerPms, table.unpack(otherPms))
|
1b0d767f
suhongyang
一個被動支持多種effect
|
351
352
|
end
end
|
058a0cbb
zhouhaihai
抽卡
|
353
|
|
46fac6f1
zhouahaihai
酱料
|
354
|
if self.count > 0 then
|
821f2b60
suhongyang
冒险战斗完善,增加battlebe...
|
355
|
self.count = self.count < 999 and self.count - 1 or self.count
|
65de8cf1
suhongyang
被动逻辑进一步修缮
|
356
357
|
self.round = self.passiveData.round
end
|
058a0cbb
zhouhaihai
抽卡
|
358
|
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
359
|
if self.count <= 0 then -- 次数 <= 0 并且一次冒险内不刷新,被动可以直接移除
|
058a0cbb
zhouhaihai
抽卡
|
360
361
|
self.isDel = true
end
|
65de8cf1
suhongyang
被动逻辑进一步修缮
|
362
363
|
end
|
46fac6f1
zhouahaihai
酱料
|
364
|
function Passive:afterRound()
|
e0c0365a
zhouhaihai
反的判断
|
365
|
if self.isDel or self.owner.isDead or self.owner.lock or self:isHide() then return end
|
46fac6f1
zhouahaihai
酱料
|
366
367
|
if self.round > 0 then --回合触发的
self.round = self.round - 1
|
65de8cf1
suhongyang
被动逻辑进一步修缮
|
368
369
370
|
end
if self.delay > 0 then
self.delay = self.delay - 1
|
46fac6f1
zhouahaihai
酱料
|
371
|
end
|
cfeb432d
zhouhaihai
冒险被动技 调整
|
372
373
374
|
if self._afterRound then
self:_afterRound() --有的触发自己检测在这里检查
end
|
46fac6f1
zhouahaihai
酱料
|
375
376
|
end
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
377
378
379
380
381
382
|
function Passive:afterLayer()
if self.passiveData.mapLock == 1 or self.passiveData.floorType == 1 then
self.isDel = true
end
end
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
383
384
385
|
-- 在当前阶段不可用 小透明 < 不会回合遍历 不会查找遍历 可以删除遍历 可以下层遍历 >
function Passive:isHide()
if self.isDel then
|
e0c0365a
zhouhaihai
反的判断
|
386
|
return true
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
387
388
|
end
if self.passiveData.mapLock == 1 and self.mapId and self.owner.battle.adv:getCurMap().mapId ~= self.mapId then
|
e0c0365a
zhouhaihai
反的判断
|
389
|
return true
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
390
|
end
|
e0c0365a
zhouhaihai
反的判断
|
391
|
return false
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
392
393
|
end
|
65de8cf1
suhongyang
被动逻辑进一步修缮
|
394
395
|
-- 可以触发
function Passive:canTrigger( )
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
396
|
return self.count > 0 and self.delay <= 0 and not self:isHide()
|
46fac6f1
zhouahaihai
酱料
|
397
398
399
|
end
function Passive:trigger(condType, params) --触发检查
|
02c4de8d
zhouahaihai
增加 固有技
|
400
401
|
params = params or {}
if self.isDel or self.owner.isDead then return end
|
46fac6f1
zhouahaihai
酱料
|
402
|
if self:getCondType() ~= condType then return end
|
65de8cf1
suhongyang
被动逻辑进一步修缮
|
403
|
if not self:canTrigger() then return end
|
36c30c5c
zhouahaihai
冒险
|
404
|
if self._trigger then
|
02c4de8d
zhouahaihai
增加 固有技
|
405
|
if not self:_trigger(params) then return end --检查
|
36c30c5c
zhouahaihai
冒险
|
406
|
end
|
c8ade4f6
suhongyang
被动筛选逻辑
|
407
408
409
410
411
412
|
if not self:filter(params) then
return
end
if math.randomInt(1, 100) > self.passiveData.chance then
return
end
|
76dc6fb7
zhouhaihai
bug
|
413
|
if self.round and self.round > 0 then -- cd
|
65de8cf1
suhongyang
被动逻辑进一步修缮
|
414
|
return
|
46fac6f1
zhouahaihai
酱料
|
415
|
end
|
da743fbe
zhouhaihai
被动效果
|
416
|
self.owner.battle.adv:pushBackEvent(AdvBackEventType.PassiveEffect, {show = self.passiveData.show, roomId = self.owner.roomId, blockId = self.owner.blockId })
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
417
|
self:effect(params)
|
46fac6f1
zhouahaihai
酱料
|
418
419
|
end
|
c8ade4f6
suhongyang
被动筛选逻辑
|
420
421
422
423
424
425
426
427
428
|
function Passive:filter(params)
for _, filter in ipairs(self.filters) do
if not filter:execute(params) then
return
end
end
return true
end
|
46fac6f1
zhouahaihai
酱料
|
429
430
431
432
433
434
435
436
437
|
function Passive:getDB()
local db = {}
if self._getDB then
db = self:_getDB()
end
db.id = self.id
db.level = self.level
db.round = self.round
db.count = self.count
|
65de8cf1
suhongyang
被动逻辑进一步修缮
|
438
|
db.delay = self.delay
|
9c8e9482
zhouhaihai
buff 被动 限定地图
|
439
440
441
|
if self.mapId then
db.mapId = self.mapId
end
|
36c30c5c
zhouahaihai
冒险
|
442
|
return db
|
46fac6f1
zhouahaihai
酱料
|
443
|
end
|
02c4de8d
zhouahaihai
增加 固有技
|
444
445
|
--默认=0=使用技能,
|
1b0d767f
suhongyang
一個被動支持多種effect
|
446
447
|
function Passive:effect0(value)
self.owner:releaseSkill(value)
|
02c4de8d
zhouahaihai
增加 固有技
|
448
449
|
end
--1=自身获得buff
|
1b0d767f
suhongyang
一個被動支持多種effect
|
450
|
function Passive:effect1(value)
|
0d405dc3
suhongyang
Buff生命周期调整,被动加buf...
|
451
|
self.owner:addBuff(value, self.owner)
|
02c4de8d
zhouahaihai
增加 固有技
|
452
453
|
end
--2=触发目标获得buff
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
454
|
function Passive:effect2(value, triggerPms)
|
26e6dd8b
zhouhaihai
修改被动效果2
|
455
456
457
|
local aim = triggerPms.trigger or self.owner.battle.player
if aim then
aim:addBuff(value, self.owner)
|
02c4de8d
zhouahaihai
增加 固有技
|
458
459
|
end
end
|
26e6dd8b
zhouhaihai
修改被动效果2
|
460
|
|
1a04c06c
zhouhaihai
冒险 被动调整
|
461
|
--3=翻开自己所在格子
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
462
|
function Passive:effect3(value)
|
6826fdf6
zhouhaihai
被动触发
|
463
|
if not self.owner.roomId or not self.owner.blockId then return end
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
464
465
|
if value == 0 then
self.owner.battle.adv:getCurMap():openBlock(self.owner.roomId, self.owner.blockId)
|
1a04c06c
zhouhaihai
冒险 被动调整
|
466
467
468
469
470
471
|
elseif value > 0 then
self.owner.battle.adv:getCurMap():openBlocksBySize(self.owner.roomId, self.owner.blockId, value)
elseif value == -1 then -- 当前房间
self.owner.battle.adv:getCurMap():openBlocksByRoom(self.owner.roomId)
elseif value == -2 then -- 当前层
self.owner.battle.adv:getCurMap():openAllBlocks(not self.owner.monsterId)
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
472
|
end
|
02c4de8d
zhouahaihai
增加 固有技
|
473
474
475
|
end
--4=逃跑
function Passive:effect4()
|
7828ffd0
zhouhaihai
冒险 连续选择点 和 地图因子
|
476
|
self.owner.isDead = 1 --跑了
|
02c4de8d
zhouahaihai
增加 固有技
|
477
|
end
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
478
479
480
|
--5=召唤怪物
function Passive:effect5(monsterId)
|
810c6151
zhouhaihai
增加buff 效果31 地图被动刷...
|
481
482
483
484
485
486
487
488
|
for _, buff in ipairs(self.owner.battle.player.buffs) do
if not buff.isDel and buff:getType() == buff.Buff_NO_PASSIVE_MONSTER then
local effect = buff:effect()
if effect == 0 or effect == monsterId then
return
end
end
end
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
489
|
self.owner.battle.adv:getCurMap():addNewMonsterRand(monsterId)
|
d232676a
zhouhaihai
功能解锁 冒险返回
|
490
491
|
self.owner.battle.adv:pushBackEvent(AdvBackEventType.Monster, {id = monsterId})
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
492
493
|
end
|
fc93b122
zhouhaihai
指定怪增加buff
|
494
495
|
--6=给所有场上怪物增加buff 《 限定 怪 id》
function Passive:effect6(value, triggerPms, enemyId)
|
d95bc647
zhouhaihai
冒险被动技
|
496
497
|
local aims = self.owner.battle.player:getTeam(2)
for k , aim in pairs(aims) do
|
fc93b122
zhouhaihai
指定怪增加buff
|
498
499
500
|
if not enemyId or enemyId == 0 or aim.monsterId == enemyId then
aim:addBuff(value, self.owner)
end
|
7828ffd0
zhouhaihai
冒险 连续选择点 和 地图因子
|
501
502
|
end
end
|
02c4de8d
zhouahaihai
增加 固有技
|
503
|
|
1a04c06c
zhouhaihai
冒险 被动调整
|
504
505
506
507
508
|
--7=给自己加一個被動技能 --废弃
-- function Passive:effect7(value)
-- self.owner:addPassive({id = value})
-- end
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
509
510
|
--8=获得drop,直接进入背包
function Passive:effect8(dropId)
|
9284512a
zhouhaihai
输出异常
|
511
512
513
514
515
|
local dropData = csvdb["event_dropCsv"][dropId]
if not dropData then
skynet.error(string.format("CSVDATA Error adv_map_passive %s effect 8 not id %s in event_drop", self.id, dropId))
end
local item = dropData["range"]:randWeight(true)
|
8955225b
zhouhaihai
快速拾取。快速使用
|
516
|
self.owner.battle.adv:award({[item[1]] = item[2]}, {log = {desc = "passive", int1 = self.id}}, {roomId = self.owner.roomId, blockId = self.owner.blockId})
|
aa74d6ef
zhouhaihai
掉落反馈
|
517
|
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
518
519
520
521
522
523
524
525
526
527
528
529
530
|
end
--9=直接获得item(可在结算触发时使用)
function Passive:effect9(itemId, triggerPms, ratio, max)
local cond = nil
if self.passiveData.value == 0 then
cond = triggerPms.score
elseif self.passiveData.value == 1 then
cond = triggerPms.level
else
return
end
if not cond then return end
|
8955225b
zhouhaihai
快速拾取。快速使用
|
531
|
self.owner.battle.adv:award({[itemId] = math.floor(math.max(0, math.min(max, cond / ratio)))}, {log = {desc = "passive", int1 = self.id}}, {roomId = self.owner.roomId, blockId = self.owner.blockId})
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
532
533
534
|
end
--10=战斗额外掉落次数
|
debdc4f7
zhouhaihai
bug
|
535
|
function Passive:effect10(count, triggerPms)
|
9104a922
zhouhaihai
多重掉落
|
536
537
538
539
|
if triggerPms.drops then
for _, drop in pairs(triggerPms.drops) do
drop[2] = drop[2] + math.floor(drop[2] * count)
end
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
540
541
542
|
end
end
|
2d87caee
zhouhaihai
地块替换优化 新的效果类型
|
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
|
-- 将地图上的A事件替换成B事件
function Passive:effect11(eventTypeF, triggerPms, eventIdF, eventTypeT, eventIdT, count)
local change = self.owner.battle.adv:getCurMap():eventChangeToOther(eventTypeF, eventIdF, eventTypeT, eventIdT, count)
for _, one in ipairs(change) do
self.owner.battle.adv:backBlockChange(one[1].roomId, one[2].blockId)
end
end
-- 在指定地点召唤event项目
function Passive:effect12(eventType, triggerPms, eventId, count, stage)
local change = self.owner.battle.adv:getCurMap():layEventToStage(eventType, eventId, count, stage)
for _, one in ipairs(change) do
self.owner.battle.adv:backBlockChange(one[1].roomId, one[2].blockId)
end
end
-- 移除指定项目
function Passive:effect13(eventType, triggerPms, eventId, count)
|
e1b26027
zhouhaihai
增加移除项目排除功能
|
561
562
563
564
565
|
local exclude = {}
if self.owner:is("Enemy") then
exclude[self.owner.roomId] = {[self.owner.blockId] = 1}
end
local change = self.owner.battle.adv:getCurMap():clearEventById(eventType, eventId, count, exclude)
|
2d87caee
zhouhaihai
地块替换优化 新的效果类型
|
566
567
568
569
570
|
for _, one in ipairs(change) do
self.owner.battle.adv:backBlockChange(one[1].roomId, one[2].blockId)
end
end
|
05ab09a2
zhouhaihai
新的被动效果
|
571
572
573
574
575
576
577
578
579
580
581
582
|
--14=给所有场上怪物增加buff 《 限定 怪 id》 除了自己
function Passive:effect14(value, triggerPms, enemyId)
local aims = self.owner.battle.player:getTeam(2)
for k , aim in pairs(aims) do
if aim ~= self.owner then
if not enemyId or enemyId == 0 or aim.monsterId == enemyId then
aim:addBuff(value, self.owner)
end
end
end
end
|
6826fdf6
zhouhaihai
被动触发
|
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
|
--15=翻开房间内的count 个怪 并且增加一个buff
function Passive:effect15(count, triggerPms, buffId)
local roomId = self.owner.roomId
if not roomId then return end
local enemys = self.owner.battle.adv:getCurMap():openBlocksIsMonsterByRoom(roomId, count)
for _, e in ipairs(enemys) do
e:addBuff(buffId)
end
end
--16=转变 value 范围内的掉落物 为 id count
function Passive:effect16(value, triggerPms, changeType)
if not self.owner.roomId or not self.owner.blockId then return end
local blocks = self.owner.battle.adv:getCurMap():getBlocksBySize(self.owner.roomId, self.owner.blockId, value)
self.owner.battle.adv:blockDropChange(changeType, blocks)
end
|
2d87caee
zhouhaihai
地块替换优化 新的效果类型
|
600
|
|
46fac6f1
zhouahaihai
酱料
|
601
|
return Passive
|