26aeaf48
zhouhaihai
bug
|
1
|
local Player, Enemy, Build = table.unpack(require "adv.AdvPlayer")
|
46fac6f1
zhouahaihai
酱料
|
2
|
local Buff = require "adv.AdvBuff"
|
32bca13b
zhouahaihai
bug
|
3
|
local Passive = require "adv.AdvPassive"
|
36c30c5c
zhouahaihai
冒险
|
4
|
local Battle = class("Battle")
|
46fac6f1
zhouahaihai
酱料
|
5
6
7
|
function Battle:ctor(adv)
self.adv = adv
self.player = nil --玩家
|
02c4de8d
zhouahaihai
增加 固有技
|
8
|
self.isNewPlayer = false
|
46fac6f1
zhouahaihai
酱料
|
9
|
self.enemys = {} --怪
|
9687f887
zhouhaihai
建筑被动
|
10
|
self.builds = {} -- 建筑
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
11
|
self.cachePassiveEvent = {}
|
46fac6f1
zhouahaihai
酱料
|
12
13
14
|
self:initPlayer()
self:initEnemys()
self:initAfter()
|
02c4de8d
zhouahaihai
增加 固有技
|
15
16
|
if self.isNewPlayer then
self.player:triggerPassive(Passive.BORN_ONCE)
|
51718558
zhouhaihai
中继层初始经验
|
17
|
self.player:addExp((self.adv.level - 1) * 40)
|
02c4de8d
zhouahaihai
增加 固有技
|
18
|
end
|
46fac6f1
zhouahaihai
酱料
|
19
20
|
end
|
78dcacb6
zhouhaihai
夹层 后处理 没做
|
21
22
23
24
|
function Battle:initAfter(mapIdx)
if not mapIdx then
self.player:initAfter(self.adv.owner:getProperty("advTeam").player)
end
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
25
|
for idx, mapEnemys in pairs(self.enemys) do
|
78dcacb6
zhouhaihai
夹层 后处理 没做
|
26
27
28
29
|
if not mapIdx or idx == mapIdx then
for _, enemy in ipairs(mapEnemys) do
enemy:initAfter(self.adv:getBlock(enemy.roomId, enemy.blockId, idx).event.enemy)
end
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
30
|
end
|
9687f887
zhouhaihai
建筑被动
|
31
32
|
end
for idx, mapBuilds in pairs(self.builds) do
|
78dcacb6
zhouhaihai
夹层 后处理 没做
|
33
34
35
36
|
if not mapIdx or idx == mapIdx then
for _, build in ipairs(mapBuilds) do
build:initAfter(self.adv:getBlock(build.roomId, build.blockId, idx).event.build)
end
|
9687f887
zhouhaihai
建筑被动
|
37
|
end
|
46fac6f1
zhouahaihai
酱料
|
38
|
end
|
46fac6f1
zhouahaihai
酱料
|
39
|
end
|
b53593b5
zhouhaihai
羁绊加成
|
40
41
42
43
44
45
46
47
48
|
--[[
队伍总属性 = 基础属性 + 等级 × 成长率
基础属性: 固定属性,与章节、队伍够成、养成无关,由策划给出
等级: 根据进入时的关卡,获得一个【初始等级】;消灭怪物获得经验后,累计N点会提升等级
羁绊加成: 加成条件与“战斗”相同,加成目标改为【冒险队】
成长率: 由【队伍总生存力】决定
成长率 =(总生存力 / 80)^0.52 + INT(总角色等级 / 50)* 1
--]]
|
46fac6f1
zhouahaihai
酱料
|
49
|
|
6b5c9206
zhouhaihai
冒险资助升级属性奖励
|
50
51
52
53
54
55
56
57
58
59
60
61
|
local function getAdvLvAttrUp(upAttrs, attrName, baseAttr)
-- 1=冒险队属性;1=点数/百分比=属性枚举=参数;属性枚举(1=生命上限/2=魔法上限/3=攻击/4=防御);点数/百分比(0=点数/1=百分比)
local Enem = {
hp = 1,
sp = 2,
atk = 3,
def = 4,
}
if not Enem[attrName] then return baseAttr end
return baseAttr + (upAttrs[Enem[attrName]] or 0)
end
|
46fac6f1
zhouahaihai
酱料
|
62
|
function Battle:initPlayer()
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
63
|
local advTeam = self.adv.owner:getProperty("advTeam")
|
3ecbe553
zhouhaihai
没有编队
|
64
|
if not advTeam.heros or not next(advTeam.heros) then return end
|
bfd33de5
zhouhaihai
队长技
|
65
|
local leaderPassive = {}
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
66
67
|
local player = advTeam.player
if not player then
|
565b0ad0
zhouhaihai
bug
|
68
|
local advAddAttrs = self.adv.owner:getAdvLvAddAttrs()
|
6b5c9206
zhouhaihai
冒险资助升级属性奖励
|
69
|
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
70
|
player = {}
|
ccbafe67
zhouhaihai
冒险神器和buff
|
71
|
player.level = 1
|
0e3ab88d
zhouhaihai
中继层
|
72
73
|
if self.adv.level ~= 1 then
local relayData = self.adv:isHaveRelay()
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
74
75
76
|
if relayData then
player.level = relayData.level
end
|
0e3ab88d
zhouhaihai
中继层
|
77
|
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
78
|
player.exp = 0
|
6b5c9206
zhouhaihai
冒险资助升级属性奖励
|
79
|
player.sp = getAdvLvAttrUp(advAddAttrs, "sp", 100)
|
ccbafe67
zhouhaihai
冒险神器和buff
|
80
|
player.growth = {}
|
46fac6f1
zhouahaihai
酱料
|
81
|
player.passives = {}
|
ccbafe67
zhouhaihai
冒险神器和buff
|
82
|
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
83
|
for slot, heroId in pairs(advTeam.heros) do
|
bfd33de5
zhouhaihai
队长技
|
84
85
86
87
88
89
90
|
if heroId == advTeam.leader or heroId == advTeam.leader2 then
local hero = self.adv.owner.heros[heroId]
if hero then
local unit = csvdb["unitCsv"][self.adv.owner.heros[heroId]:getProperty("type")]
if unit.advCaptain ~= 0 then
table.insert(player.passives, {id = unit.advCaptain, level = 1})
end
|
46fac6f1
zhouahaihai
酱料
|
91
92
93
|
end
end
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
94
95
|
local attrs = self.adv.owner:getTeamBattleInfo(advTeam).heros
|
6b5c9206
zhouhaihai
冒险资助升级属性奖励
|
96
97
|
|
ccbafe67
zhouhaihai
冒险神器和buff
|
98
99
100
|
for attrName, _ in pairs(AdvAttsEnum) do
for _, hero in pairs(attrs) do
player[attrName] = (player[attrName] or 0) + hero[attrName]
|
b53593b5
zhouhaihai
羁绊加成
|
101
|
end
|
6dc482bb
zhouhaihai
中继层完成, 新增两个冒险物品使用效果
|
102
|
player[attrName] = getAdvLvAttrUp(advAddAttrs, attrName, player[attrName]) * (globalCsv.adv_battle_attr_ratio[attrName] or 1)
|
4f72322e
zhouhaihai
冒险成长
|
103
|
player.growth[attrName] = player[attrName] * (globalCsv.adv_battle_attr_growth_ratio[attrName] or 1)
|
0e3ab88d
zhouhaihai
中继层
|
104
|
player[attrName] = player[attrName] + player.growth[attrName] * (player.level - 1)
|
b53593b5
zhouhaihai
羁绊加成
|
105
|
end
|
ccbafe67
zhouhaihai
冒险神器和buff
|
106
|
|
1b35c0a2
zhouhaihai
冒险
|
107
|
player.hpMax = player.hp or 0
|
02c4de8d
zhouahaihai
增加 固有技
|
108
|
self.isNewPlayer = true
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
109
|
advTeam.player = player
|
46fac6f1
zhouahaihai
酱料
|
110
|
end
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
111
|
self.player = Player.new(self, player)
|
46fac6f1
zhouahaihai
酱料
|
112
113
114
|
end
function Battle:initEnemys()
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
115
116
117
118
119
|
for idx, map in pairs(self.adv.maps) do
self:initMapEnemys(idx)
end
end
|
78dcacb6
zhouhaihai
夹层 后处理 没做
|
120
121
|
-- after 是否是 后创建的夹层
function Battle:initMapEnemys(mapIdx, after)
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
122
|
self.enemys[mapIdx] = {}
|
50fddc3f
zhouhaihai
bug
|
123
|
self.builds[mapIdx] = {}
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
124
125
126
127
|
local map = self.adv.maps[mapIdx]
if map then
for _, room in pairs(map.rooms) do
for _, block in pairs(room.blocks) do
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
128
|
self:addEnemy(room, block, mapIdx, true)
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
129
130
131
|
end
end
end
|
78dcacb6
zhouhaihai
夹层 后处理 没做
|
132
133
134
|
if after then
self:initAfter(mapIdx)
end
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
135
136
137
138
139
|
if self.cachePassiveEvent[mapIdx] then
for _, passiveC in ipairs(self.cachePassiveEvent or {}) do
for _, enemy in ipairs(self.enemys[mapIdx]) do
enemy:triggerPassive(passiveC[1], passiveC[2])
end
|
9687f887
zhouhaihai
建筑被动
|
140
141
142
143
|
for _, build in ipairs(self.builds[mapIdx]) do
build:triggerPassive(passiveC[1], passiveC[2])
end
|
46fac6f1
zhouahaihai
酱料
|
144
145
|
end
end
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
146
|
self.cachePassiveEvent[mapIdx] = nil
|
46fac6f1
zhouahaihai
酱料
|
147
148
|
end
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
149
|
function Battle:addEnemy(room, block, mapIdx, init)
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
150
151
|
mapIdx = mapIdx or self.adv:getCurMapIdx()
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
152
|
local isNew, player, data
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
153
|
if block:isMonster() then
|
46fac6f1
zhouahaihai
酱料
|
154
155
156
|
if not block.event.enemy then
local enemyCsv = csvdb["event_monsterCsv"][block.event.id]
local enemy = {}
|
eee37c88
zhouhaihai
楼层数据
|
157
158
159
160
|
local curFloorData = self.adv:getCurFloorData() or {}
for attrName, _ in pairs(AdvAttsEnum) do
enemy[attrName] = enemyCsv[attrName] * curFloorData[attrName]
end
|
46fac6f1
zhouahaihai
酱料
|
161
|
enemy.passives = {}
|
de3b786f
zhouhaihai
字段换名字
|
162
|
for _, id in ipairs(enemyCsv.mapPassive:toArray(true, "=")) do
|
46fac6f1
zhouahaihai
酱料
|
163
164
165
|
table.insert(enemy.passives, {id = id})
end
block.event.enemy = enemy
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
166
|
isNew = true
|
46fac6f1
zhouahaihai
酱料
|
167
|
end
|
a0834e49
zhouhaihai
增加潜行 功能
|
168
169
170
171
|
if not block.event.mId then
block.event.mId = self.adv.lastEnemyId
self.adv.lastEnemyId = self.adv.lastEnemyId + 1
end
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
172
173
|
data = block.event.enemy
player = Enemy.new(self, block.event.mId, block.event.id, room.roomId, block.blockId, not block.isOpen, block.event.enemy, mapIdx)
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
174
|
table.insert(self.enemys[mapIdx], player)
|
9687f887
zhouhaihai
建筑被动
|
175
176
|
elseif block:isBuild() then
if not block.event.build then
|
53b7e3b5
zhouhaihai
bug
|
177
|
local buildCsv = csvdb["event_buildingCsv"][block.event.id]
|
9687f887
zhouhaihai
建筑被动
|
178
179
180
181
182
183
|
local build = {}
build.passives = {}
for _, id in ipairs(buildCsv.passive:toArray(true, "=")) do
table.insert(build.passives, {id = id})
end
block.event.build = build
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
184
|
isNew = true
|
9687f887
zhouhaihai
建筑被动
|
185
|
end
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
186
187
|
data = block.event.build
player = Build.new(self, block.event.id, room.roomId, block.blockId, not block.isOpen, block.event.build, mapIdx)
|
9687f887
zhouhaihai
建筑被动
|
188
|
table.insert(self.builds[mapIdx], player)
|
46fac6f1
zhouahaihai
酱料
|
189
|
end
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
|
if not init then
player:initAfter(data)
-- 游戏中新创建的 加上地图 floor 效果
if isNew then
local passives, buffs = self:getMapEffect(2, true, mapIdx)
for _, passive in ipairs(passives) do
player:addPassive({id = passive})
end
for _, buff in ipairs(buffs) do
enemy:addBuff(buff)
end
end
end
return player
|
46fac6f1
zhouahaihai
酱料
|
206
207
|
end
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
208
209
210
|
function Battle:getEnemy(roomId, blockId, mapIdx)
mapIdx = mapIdx or self.adv:getCurMapIdx()
for _, enemy in ipairs(self.enemys[mapIdx] or {}) do
|
36c30c5c
zhouahaihai
冒险
|
211
|
if enemy.roomId == roomId and enemy.blockId == blockId then
|
46fac6f1
zhouahaihai
酱料
|
212
213
214
215
216
|
return enemy
end
end
end
|
9687f887
zhouhaihai
建筑被动
|
217
218
219
220
221
222
223
|
function Battle:getBuild(roomId, blockId, mapIdx)
mapIdx = mapIdx or self.adv:getCurMapIdx()
for _, build in ipairs(self.builds[mapIdx] or {}) do
if build.roomId == roomId and build.blockId == blockId then
return build
end
end
|
d4720dfd
zhouhaihai
bug
|
224
|
end
|
9687f887
zhouhaihai
建筑被动
|
225
|
|
46fac6f1
zhouahaihai
酱料
|
226
|
function Battle:getEnemyById(id)
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
227
228
229
230
231
|
for idx, mapEnemys in pairs(self.enemys) do
for _, enemy in ipairs(mapEnemys) do
if enemy.id == id then
return enemy
end
|
46fac6f1
zhouahaihai
酱料
|
232
233
234
|
end
end
end
|
39a6e08b
suhongyang
冒险战斗内逻辑调整
|
235
236
237
|
function Battle:getRBByEnemyId(enemyId)
local enemy = self:getEnemyById(enemyId)
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
238
|
return enemy.roomId, enemy.blockId, enemy.mapIdx
|
39a6e08b
suhongyang
冒险战斗内逻辑调整
|
239
240
|
end
|
39a6e08b
suhongyang
冒险战斗内逻辑调整
|
241
|
|
46fac6f1
zhouahaihai
酱料
|
242
|
--触发全员被动技能
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
243
244
|
function Battle:triggerPassive(condType, params, mapIdx)
mapIdx = mapIdx or self.adv:getCurMapIdx()
|
02c4de8d
zhouahaihai
增加 固有技
|
245
|
self.player:triggerPassive(condType, params)
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
246
247
248
249
250
251
252
253
|
if not self.enemys[mapIdx] then
-- 缓存一下
self.cachePassiveEvent[mapIdx] = self.cachePassiveEvent[mapIdx] or {}
table.insert(self.cachePassiveEvent[mapIdx], {condType, params})
else
for _, enemy in ipairs(self.enemys[mapIdx]) do
enemy:triggerPassive(condType, params)
end
|
9687f887
zhouhaihai
建筑被动
|
254
255
256
|
for _, build in ipairs(self.builds[mapIdx]) do
build:triggerPassive(condType, params)
end
|
02c4de8d
zhouahaihai
增加 固有技
|
257
|
end
|
46fac6f1
zhouahaihai
酱料
|
258
259
|
end
|
4f0a5fae
zhouhaihai
营养剂
|
260
261
262
263
264
265
266
267
268
269
270
|
-- 只是从战斗中移除 从地图中移除 在外面操作
function Battle:removeEnemyById(id)
local mapIdx = self.adv:getCurMapIdx()
for i = #self.enemys[mapIdx], 1, -1 do
if self.enemys[mapIdx][i].id == id then
local enemy = table.remove(self.enemys[mapIdx], i)
enemy:clear()
break
end
end
end
|
c8c957e4
zhouhaihai
必要时删除建筑
|
271
272
273
274
275
276
277
278
279
280
281
|
-- 只是从战斗中移除 从地图中移除 在外面操作
function Battle:removeBuildByPos(roomId, blockId)
local mapIdx = self.adv:getCurMapIdx()
for i = #self.builds[mapIdx], 1, -1 do
if self.builds[mapIdx][i].roomId == roomId and self.builds[mapIdx][i].blockId == blockId then
local build = table.remove(self.builds[mapIdx], i)
build:clear()
break
end
end
end
|
4f0a5fae
zhouhaihai
营养剂
|
282
|
|
46fac6f1
zhouahaihai
酱料
|
283
284
|
--回合
function Battle:afterRound()
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
285
|
local mapIdx = self.adv:getCurMapIdx()
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
286
|
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
287
|
table.sort(self.enemys[mapIdx], function(e1, e2)
|
46fac6f1
zhouahaihai
酱料
|
288
289
|
return e1.id < e2.id
end)
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
290
|
|
8fc7d1bc
zhouhaihai
buff 回合问题
|
291
292
293
294
295
296
297
298
299
|
self.player:afterRound("buffBefore")
for _, enemy in ipairs(self.enemys[mapIdx]) do
enemy:afterRound("buffBefore")
end
for _, build in ipairs(self.builds[mapIdx]) do
build:afterRound("buffBefore")
end
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
300
|
self.player:afterRound("passive")
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
301
|
for _, enemy in ipairs(self.enemys[mapIdx]) do
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
302
|
enemy:afterRound("passive")
|
46fac6f1
zhouahaihai
酱料
|
303
|
end
|
a35f71ee
zhouhaihai
afterRound build
|
304
|
for _, build in ipairs(self.builds[mapIdx]) do
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
305
306
307
|
build:afterRound("passive")
end
|
8fc7d1bc
zhouhaihai
buff 回合问题
|
308
|
self.player:afterRound("buffAfter")
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
309
|
for _, enemy in ipairs(self.enemys[mapIdx]) do
|
8fc7d1bc
zhouhaihai
buff 回合问题
|
310
|
enemy:afterRound("buffAfter")
|
a35f71ee
zhouhaihai
afterRound build
|
311
|
end
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
312
|
for _, build in ipairs(self.builds[mapIdx]) do
|
8fc7d1bc
zhouhaihai
buff 回合问题
|
313
|
build:afterRound("buffAfter")
|
35e2e3c4
zhouhaihai
优化 gm advt 增加感知b...
|
314
315
316
317
|
end
|
46fac6f1
zhouahaihai
酱料
|
318
|
self.player:clearRound()
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
319
|
for _, enemy in ipairs(self.enemys[mapIdx]) do
|
46fac6f1
zhouahaihai
酱料
|
320
321
|
enemy:clearRound()
end
|
9687f887
zhouhaihai
建筑被动
|
322
323
324
|
for _, build in ipairs(self.builds[mapIdx]) do
build:clearRound()
end
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
325
326
|
for i = #self.enemys[mapIdx], 1, -1 do
if self.enemys[mapIdx][i].isDead then
|
4faef572
zhouhaihai
冒险任务,冒险扫荡, 冒险中继
|
327
|
local enemy = table.remove(self.enemys[mapIdx], i)
|
7828ffd0
zhouhaihai
冒险 连续选择点 和 地图因子
|
328
329
|
self.adv:enemyDead(enemy, enemy.isDead == 1)
enemy:clear()
|
46fac6f1
zhouahaihai
酱料
|
330
331
|
end
end
|
9687f887
zhouhaihai
建筑被动
|
332
333
334
|
for i = #self.builds[mapIdx], 1, -1 do
if self.builds[mapIdx][i].isDead then
local build = table.remove(self.builds[mapIdx], i)
|
22ef22a5
zhouhaihai
移除建筑
|
335
336
337
338
339
340
341
342
343
|
local room = self.adv:getCurMap().rooms[build.roomId]
if room then
local block = room.blocks[build.blockId]
if block then
block:clear()
self.adv:backBlockChange(build.roomId, build.blockId)
end
end
|
9687f887
zhouhaihai
建筑被动
|
344
345
346
|
build:clear()
end
end
|
ec87b4a5
zhouahaihai
冒险 完善
|
347
|
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
348
349
|
self.player:triggerPassive(Passive.AFTER_ROUND)
|
46fac6f1
zhouahaihai
酱料
|
350
|
if self.player.isDead then
|
37b85522
wangyujie
加一个冒险因为队伍死亡退出的类型
|
351
|
self.adv:over(false, nil, -2)
|
46fac6f1
zhouahaihai
酱料
|
352
353
354
|
end
end
|
e459a5fc
suhongyang
战斗回合检查同步以及回合数据缓存
|
355
|
|
12f7b52c
zhouhaihai
冒险战斗
|
356
357
358
359
|
function Battle:battleBegin(roomId, blockId, params)
local enemy = self:getEnemy(roomId, blockId)
if not enemy then return end
local player = params.player
|
92d7d6ac
zhouhaihai
加一些数据保护
|
360
|
if not player then return end
|
12f7b52c
zhouhaihai
冒险战斗
|
361
362
|
-- 玩家没死就是怪死了
if player.hp > 0 then
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
363
|
enemy:kill()
|
e90b4d20
zhouhaihai
战斗buff
|
364
|
self.player:effectBattleBuff()
|
53e8037e
zhouhaihai
任务
|
365
366
|
self.adv.owner:checkTaskEnter("AdvBattleWin", {id = self.adv.chapterId})
|
d3da3368
zhouhaihai
冒险地图被动技, buff 神器
|
367
368
369
|
if params.bySkill then
self.player:triggerPassive(Passive.SKILL_KILL)
end
|
12f7b52c
zhouhaihai
冒险战斗
|
370
|
end
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
371
372
373
374
375
376
377
|
if player.hp > self.player.hp then
self.player:recover(player.hp - self.player.hp, player)
else
self.player:hurt(math.max(0, math.ceil(self.player.hp - player.hp)), enemy, {hurtType = 5}) --战斗血量只会变少
end
self.player:changeSp(math.floor(player.sp - self.player.sp) , 0) --战斗魔力只会变少
|
12f7b52c
zhouhaihai
冒险战斗
|
378
379
380
|
end
|
7b2dc17c
zhouhaihai
地图 层 buff passive
|
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
|
function Battle:getMapEffect(ctype, ilayer, mapIdx)
mapIdx = mapIdx or self.adv:getCurMapIdx()
local mapData = self.adv.maps[mapIdx]:getMapInfoCsv() or {}
local floorData = self.adv:getCurFloorData() or {}
local passives = {}
local buffs = {}
for _type, temp in ipairs({mapData, floorData}) do
for _, one in ipairs((temp.passive or ""):toTableArray(true)) do
passives[one[1]] = passives[one[1]] or {}
if ilayer and one[1] == 1 and _type == 2 then
else
table.insert(passives[one[1]], one[2])
end
end
for _, one in ipairs((temp.buff or ""):toTableArray(true)) do
buffs[one[1]] = buffs[one[1]] or {}
if ilayer and one[1] == 1 and _type == 2 then
else
table.insert(buffs[one[1]], one[2])
end
end
end
if ctype then
passives = passives[ctype] or {}
buffs = buffs[ctype] or {}
end
return passives, buffs
end
-- 夹层玩家 不重复加 floor
function Battle:initMapEffect(ilayer)
local passives, buffs = self:getMapEffect(nil, ilayer)
local mapIdx = self.adv:getCurMapIdx()
for _, passive in ipairs(passives[1] or {}) do
self.player:addPassive({id = passive})
end
for _, passive in ipairs(passives[2] or {}) do
for _, enemy in ipairs(self.enemys[mapIdx]) do
enemy:addPassive({id = passive})
end
end
for _, buff in ipairs(buffs[1] or {}) do
self.palyer:addBuff(buff)
end
for _, buff in ipairs(buffs[2] or {}) do
for _, enemy in ipairs(self.enemys[mapIdx]) do
enemy:addBuff(buff)
end
end
end
|
46fac6f1
zhouahaihai
酱料
|
438
|
--写入数据
|
43babcff
zhouhaihai
优化冒险结构 增加夹层功能
|
439
440
441
442
443
444
445
446
|
function Battle:saveDB()
for idx, mapEnemys in pairs(self.enemys) do
for _, enemy in ipairs(mapEnemys) do
local block = self.adv:getBlock(enemy.roomId, enemy.blockId, idx)
if block and block:isMonster() then
block.event.enemy = enemy:getDB()
end
end
|
46fac6f1
zhouahaihai
酱料
|
447
|
end
|
6d2df562
zhouhaihai
保存建筑信息
|
448
449
450
451
452
453
454
455
|
for idx, mapBuilds in pairs(self.builds) do
for _, build in ipairs(mapBuilds) do
local block = self.adv:getBlock(build.roomId, build.blockId, idx)
if block and block:isBuild() then
block.event.build = build:getDB()
end
end
end
|
46fac6f1
zhouahaihai
酱料
|
456
457
|
end
|
36c30c5c
zhouahaihai
冒险
|
458
|
return Battle
|