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