Commit d232676aa51f3cbb880888e83b4dc0a8bcfdd91b
1 parent
3df1e9ea
功能解锁 冒险返回
Showing
11 changed files
with
98 additions
and
46 deletions
Show diff stats
src/GlobalVar.lua
| @@ -66,6 +66,18 @@ FuncOpenType = { | @@ -66,6 +66,18 @@ FuncOpenType = { | ||
| 66 | TimeBoxSlot = 8, -- 时钟箱槽 | 66 | TimeBoxSlot = 8, -- 时钟箱槽 |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | +-- 关卡通关相关的 功能开放 对应 guide_unlock | ||
| 70 | +FuncUnlock = { | ||
| 71 | + GetHero = 1, -- 招募 | ||
| 72 | + TaskAchiv = 2, -- 任务成就 | ||
| 73 | + BonusBattle = 3, -- 奖励关卡 | ||
| 74 | + DifficultHang = 4, --困难难度 | ||
| 75 | + Tower = 5, -- 电波塔 | ||
| 76 | + Diner = 6, -- 餐厅 | ||
| 77 | + Pvp = 7, --竞技场 | ||
| 78 | + Adv = 8, -- 冒险 | ||
| 79 | +} | ||
| 80 | + | ||
| 69 | TypeIsFunc = {} | 81 | TypeIsFunc = {} |
| 70 | for _, v in pairs(FuncOpenType) do | 82 | for _, v in pairs(FuncOpenType) do |
| 71 | TypeIsFunc[v] = true | 83 | TypeIsFunc[v] = true |
| @@ -139,16 +151,16 @@ AdvBackEventType = { | @@ -139,16 +151,16 @@ AdvBackEventType = { | ||
| 139 | AtkChange = 3, --攻击改变 | 151 | AtkChange = 3, --攻击改变 |
| 140 | Buff = 4, --buff 改变 | 152 | Buff = 4, --buff 改变 |
| 141 | Skill = 5, --释放技能 | 153 | Skill = 5, --释放技能 |
| 142 | - Atk = 6, --攻击动作 | 154 | + BaseAttrChange = 6, -- 基础属性变化 |
| 143 | Next = 7, --进入下一层 | 155 | Next = 7, --进入下一层 |
| 144 | End = 8, -- 结束 | 156 | End = 8, -- 结束 |
| 145 | BlockChange = 9, -- 块改变 | 157 | BlockChange = 9, -- 块改变 |
| 146 | SpChange = 10, --体力改变 | 158 | SpChange = 10, --体力改变 |
| 147 | Dead = 11, --怪死亡 | 159 | Dead = 11, --怪死亡 |
| 148 | - DefChange = 12, -- 防御变化 | ||
| 149 | - Passive = 13, -- 獲得被動 | ||
| 150 | - TurnEnd = 14, -- 回合结束 | ||
| 151 | - Miss = 15, -- miss | 160 | + Trader = 12, -- 召唤商人 |
| 161 | + Monster = 13, -- 召唤怪物 | ||
| 162 | + | ||
| 163 | + | ||
| 152 | Cost = 16, -- 消耗道具 | 164 | Cost = 16, -- 消耗道具 |
| 153 | Trap = 17, --陷阱 | 165 | Trap = 17, --陷阱 |
| 154 | Layer = 18, --切换层 | 166 | Layer = 18, --切换层 |
src/actions/AdvAction.lua
| @@ -85,7 +85,8 @@ function _M.startAdvRpc( agent, data ) | @@ -85,7 +85,8 @@ function _M.startAdvRpc( agent, data ) | ||
| 85 | local layer = msg.layer or 1 --选择层数 | 85 | local layer = msg.layer or 1 --选择层数 |
| 86 | local format = msg.format --编队 | 86 | local format = msg.format --编队 |
| 87 | local supportIdx = msg.supportIdx --选择的支援效果 | 87 | local supportIdx = msg.supportIdx --选择的支援效果 |
| 88 | - | 88 | + if not role:isFuncUnlock(FuncUnlock.Adv) then return end |
| 89 | + | ||
| 89 | --上一个关卡结束才可以开始新的关卡 | 90 | --上一个关卡结束才可以开始新的关卡 |
| 90 | if role:getAdvData():isRunning() then return 8 end | 91 | if role:getAdvData():isRunning() then return 8 end |
| 91 | 92 |
src/actions/HangAction.lua
| @@ -71,6 +71,10 @@ function _M.startRpc( agent, data ) | @@ -71,6 +71,10 @@ function _M.startRpc( agent, data ) | ||
| 71 | local carbonData = csvdb["idle_battleCsv"][carbonId] | 71 | local carbonData = csvdb["idle_battleCsv"][carbonId] |
| 72 | if not carbonData then return 1 end | 72 | if not carbonData then return 1 end |
| 73 | 73 | ||
| 74 | + if math.floor(carbonId / 10000) ~= 1 then | ||
| 75 | + if not role:isFuncUnlock(FuncUnlock.DifficultHang) then return end | ||
| 76 | + end | ||
| 77 | + | ||
| 74 | local hangPass = role:getProperty("hangPass") | 78 | local hangPass = role:getProperty("hangPass") |
| 75 | 79 | ||
| 76 | for _, preCarbonId in ipairs(carbonData.prepose:toArray(true, "=")) do | 80 | for _, preCarbonId in ipairs(carbonData.prepose:toArray(true, "=")) do |
| @@ -413,6 +417,9 @@ function _M.startBonusBattleRpc(agent, data) | @@ -413,6 +417,9 @@ function _M.startBonusBattleRpc(agent, data) | ||
| 413 | local msg = MsgPack.unpack(data) | 417 | local msg = MsgPack.unpack(data) |
| 414 | local id = msg.id | 418 | local id = msg.id |
| 415 | 419 | ||
| 420 | + if not role:isFuncUnlock(FuncUnlock.BonusBattle) then return end | ||
| 421 | + | ||
| 422 | + | ||
| 416 | local bonusData = csvdb["bonus_battleCsv"][id] | 423 | local bonusData = csvdb["bonus_battleCsv"][id] |
| 417 | if not bonusData then return 1 end | 424 | if not bonusData then return 1 end |
| 418 | local hangPass = role:getProperty("hangPass") | 425 | local hangPass = role:getProperty("hangPass") |
src/actions/HeroAction.lua
| @@ -713,6 +713,7 @@ function _M.drawHeroRpc(agent, data) | @@ -713,6 +713,7 @@ function _M.drawHeroRpc(agent, data) | ||
| 713 | local role = agent.role | 713 | local role = agent.role |
| 714 | local msg = MsgPack.unpack(data) | 714 | local msg = MsgPack.unpack(data) |
| 715 | 715 | ||
| 716 | + if not role:isFuncUnlock(FuncUnlock.GetHero) then return end | ||
| 716 | local pool = msg.pool -- 1 2 3 | 717 | local pool = msg.pool -- 1 2 3 |
| 717 | local drawType = msg.type -- 1 单抽 2 十连 | 718 | local drawType = msg.type -- 1 单抽 2 十连 |
| 718 | 719 |
src/actions/PvpAction.lua
| @@ -92,6 +92,8 @@ function _M.infoRpc(agent, data) | @@ -92,6 +92,8 @@ function _M.infoRpc(agent, data) | ||
| 92 | local roleId = role:getProperty("id") | 92 | local roleId = role:getProperty("id") |
| 93 | local msg = MsgPack.unpack(data) | 93 | local msg = MsgPack.unpack(data) |
| 94 | local ptype = msg.ptype or 1 | 94 | local ptype = msg.ptype or 1 |
| 95 | + | ||
| 96 | + if not role:isFuncUnlock(FuncUnlock.Pvp) then return end | ||
| 95 | 97 | ||
| 96 | local response = {} | 98 | local response = {} |
| 97 | if ptype == 1 then -- 普通pvp | 99 | if ptype == 1 then -- 普通pvp |
src/actions/RoleAction.lua
| @@ -622,6 +622,9 @@ end | @@ -622,6 +622,9 @@ end | ||
| 622 | function _M.taskRpc(agent, data) | 622 | function _M.taskRpc(agent, data) |
| 623 | local role = agent.role | 623 | local role = agent.role |
| 624 | local msg = MsgPack.unpack(data) | 624 | local msg = MsgPack.unpack(data) |
| 625 | + | ||
| 626 | + if not role:isFuncUnlock(FuncUnlock.TaskAchiv) then return end | ||
| 627 | + | ||
| 625 | local taskType = msg.type -- 1 日常 2 周长 | 628 | local taskType = msg.type -- 1 日常 2 周长 |
| 626 | local taskId = msg.id --任务id | 629 | local taskId = msg.id --任务id |
| 627 | local roleField = {"dTask", "wTask"} | 630 | local roleField = {"dTask", "wTask"} |
| @@ -652,6 +655,9 @@ end | @@ -652,6 +655,9 @@ end | ||
| 652 | function _M.taskActiveRpc(agent, data) | 655 | function _M.taskActiveRpc(agent, data) |
| 653 | local role = agent.role | 656 | local role = agent.role |
| 654 | local msg = MsgPack.unpack(data) | 657 | local msg = MsgPack.unpack(data) |
| 658 | + | ||
| 659 | + if not role:isFuncUnlock(FuncUnlock.TaskAchiv) then return end | ||
| 660 | + | ||
| 655 | local taskType = msg.type -- 1 日常 2 周长 | 661 | local taskType = msg.type -- 1 日常 2 周长 |
| 656 | local taskId = msg.id --任务id | 662 | local taskId = msg.id --任务id |
| 657 | local roleField = {"dTask", "wTask"} | 663 | local roleField = {"dTask", "wTask"} |
| @@ -681,6 +687,8 @@ function _M.achiveRpc(agent, data) | @@ -681,6 +687,8 @@ function _M.achiveRpc(agent, data) | ||
| 681 | local msg = MsgPack.unpack(data) | 687 | local msg = MsgPack.unpack(data) |
| 682 | local taskId = msg.id --任务id | 688 | local taskId = msg.id --任务id |
| 683 | 689 | ||
| 690 | + if not role:isFuncUnlock(FuncUnlock.TaskAchiv) then return end | ||
| 691 | + | ||
| 684 | local achiveTask = csvdb["achievementCsv"][taskId] | 692 | local achiveTask = csvdb["achievementCsv"][taskId] |
| 685 | if not achiveTask then return end | 693 | if not achiveTask then return end |
| 686 | 694 |
src/actions/TowerAction.lua
| @@ -52,6 +52,8 @@ function _M.startBattleRpc(agent, data) | @@ -52,6 +52,8 @@ function _M.startBattleRpc(agent, data) | ||
| 52 | local role = agent.role | 52 | local role = agent.role |
| 53 | local msg = MsgPack.unpack(data) | 53 | local msg = MsgPack.unpack(data) |
| 54 | local id = msg.id | 54 | local id = msg.id |
| 55 | + | ||
| 56 | + if not role:isFuncUnlock(FuncUnlock.Tower) then return end | ||
| 55 | 57 | ||
| 56 | local towerInfo = role:getProperty("towerInfo") | 58 | local towerInfo = role:getProperty("towerInfo") |
| 57 | 59 |
src/adv/Adv.lua
| @@ -979,6 +979,7 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) | @@ -979,6 +979,7 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) | ||
| 979 | end, | 979 | end, |
| 980 | [3] = function() --发现怪物 | 980 | [3] = function() --发现怪物 |
| 981 | self:getCurMap():addNewMonsterRand(effect[2], {room, block}) | 981 | self:getCurMap():addNewMonsterRand(effect[2], {room, block}) |
| 982 | + self:pushBackEvent(AdvBackEventType.Monster, {id = effect[2]}) | ||
| 982 | clearBlock = false | 983 | clearBlock = false |
| 983 | end, | 984 | end, |
| 984 | [4] = function() --无事发生 | 985 | [4] = function() --无事发生 |
| @@ -999,6 +1000,7 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) | @@ -999,6 +1000,7 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) | ||
| 999 | id = effect[2] | 1000 | id = effect[2] |
| 1000 | }) | 1001 | }) |
| 1001 | block:randomEvent() | 1002 | block:randomEvent() |
| 1003 | + self:pushBackEvent(AdvBackEventType.Trader, {id = effect[2]}) | ||
| 1002 | clearBlock = false | 1004 | clearBlock = false |
| 1003 | end, | 1005 | end, |
| 1004 | [7] = function() -- 建筑 | 1006 | [7] = function() -- 建筑 |
| @@ -1386,6 +1388,7 @@ function Adv:doActive(activeId, target) | @@ -1386,6 +1388,7 @@ function Adv:doActive(activeId, target) | ||
| 1386 | }) | 1388 | }) |
| 1387 | target:randomEvent() | 1389 | target:randomEvent() |
| 1388 | self:backBlockChange(target.room.roomId, target.blockId) | 1390 | self:backBlockChange(target.room.roomId, target.blockId) |
| 1391 | + self:pushBackEvent(AdvBackEventType.Trader, {id = traderId}) | ||
| 1389 | end | 1392 | end |
| 1390 | end | 1393 | end |
| 1391 | return true | 1394 | return true |
| @@ -1398,6 +1401,7 @@ function Adv:doActive(activeId, target) | @@ -1398,6 +1401,7 @@ function Adv:doActive(activeId, target) | ||
| 1398 | self.battle:removeEnemyById(target.id) | 1401 | self.battle:removeEnemyById(target.id) |
| 1399 | self:getCurMap():addNewMonsterRand(monsterId, {self:getRoom(target.roomId), self:getBlock(target.roomId, target.blockId)}) | 1402 | self:getCurMap():addNewMonsterRand(monsterId, {self:getRoom(target.roomId), self:getBlock(target.roomId, target.blockId)}) |
| 1400 | self:backBlockChange(target.roomId, target.blockId) | 1403 | self:backBlockChange(target.roomId, target.blockId) |
| 1404 | + self:pushBackEvent(AdvBackEventType.Monster, {id = monsterId}) | ||
| 1401 | end | 1405 | end |
| 1402 | end | 1406 | end |
| 1403 | return true | 1407 | return true |
| @@ -1490,6 +1494,18 @@ function Adv:doActive(activeId, target) | @@ -1490,6 +1494,18 @@ function Adv:doActive(activeId, target) | ||
| 1490 | return true | 1494 | return true |
| 1491 | end | 1495 | end |
| 1492 | 1496 | ||
| 1497 | + doActiveEffect[12] = function(_, vtype, attrType, value) | ||
| 1498 | + local attr | ||
| 1499 | + if attrType == 0 then | ||
| 1500 | + attr = "sp" | ||
| 1501 | + else | ||
| 1502 | + attr = AttsEnumEx[attrType] | ||
| 1503 | + if not AdvAttsEnum[attr] then return end | ||
| 1504 | + end | ||
| 1505 | + self.battle.player:addBaseAttr(attr, value, vtype) | ||
| 1506 | + return true | ||
| 1507 | + end | ||
| 1508 | + | ||
| 1493 | for _, effect in ipairs(activeData.effect:toArray()) do | 1509 | for _, effect in ipairs(activeData.effect:toArray()) do |
| 1494 | local cur = effect:toArray(true, "=") | 1510 | local cur = effect:toArray(true, "=") |
| 1495 | if doActiveEffect[cur[1]] then | 1511 | if doActiveEffect[cur[1]] then |
| @@ -1612,36 +1628,12 @@ function Adv:backReward(items, params) | @@ -1612,36 +1628,12 @@ function Adv:backReward(items, params) | ||
| 1612 | params = params or {} | 1628 | params = params or {} |
| 1613 | self:pushBackEvent(AdvBackEventType.Reward, {items = items, roomId = params.roomId, blockId = params.blockId}) | 1629 | self:pushBackEvent(AdvBackEventType.Reward, {items = items, roomId = params.roomId, blockId = params.blockId}) |
| 1614 | end | 1630 | end |
| 1615 | --- if is player enemyId is nil | ||
| 1616 | ---isMax 是否是改变血量上限 | ||
| 1617 | -function Adv:backHpChange(enemyId, change, isMax) | ||
| 1618 | - self:pushBackEvent(AdvBackEventType.HpChange, {enemyId = enemyId, change = change, isMax = isMax}) | ||
| 1619 | -end | ||
| 1620 | - | ||
| 1621 | --- if is player enemyId is nil | ||
| 1622 | -function Adv:backAtkChange(enemyId, change) | ||
| 1623 | - self:pushBackEvent(AdvBackEventType.AtkChange, {enemyId = enemyId, change = change}) | ||
| 1624 | -end | ||
| 1625 | 1631 | ||
| 1626 | -- if is player enemyId is nil | 1632 | -- if is player enemyId is nil |
| 1627 | -function Adv:backDefChange(enemyId, change) | ||
| 1628 | - self:pushBackEvent(AdvBackEventType.DefChange, {enemyId = enemyId, change = change}) | ||
| 1629 | -end | ||
| 1630 | - | ||
| 1631 | --- if is player enemyId is nil | ||
| 1632 | -function Adv:backBuff(enemyId, buffId, isDel) | ||
| 1633 | - self:pushBackEvent(AdvBackEventType.Buff, {enemyId = enemyId, buffId = buffId, isDel = isDel}) | ||
| 1634 | -end | ||
| 1635 | --- if is player enemyId is nil | ||
| 1636 | function Adv:backSkill(enemyId, skillId, receiver) | 1633 | function Adv:backSkill(enemyId, skillId, receiver) |
| 1637 | self:pushBackEvent(AdvBackEventType.Skill, {enemyId = enemyId, skillId = skillId, receiver = receiver}) | 1634 | self:pushBackEvent(AdvBackEventType.Skill, {enemyId = enemyId, skillId = skillId, receiver = receiver}) |
| 1638 | end | 1635 | end |
| 1639 | 1636 | ||
| 1640 | --- if is player enemyId is nil | ||
| 1641 | -function Adv:backPassive(enemyId, passiveId) | ||
| 1642 | - self:pushBackEvent(AdvBackEventType.Passive, {enemyId = enemyId, passiveId = passiveId}) | ||
| 1643 | -end | ||
| 1644 | - | ||
| 1645 | function Adv:backNext() | 1637 | function Adv:backNext() |
| 1646 | self:pushBackEvent(AdvBackEventType.Next, {}) | 1638 | self:pushBackEvent(AdvBackEventType.Next, {}) |
| 1647 | end | 1639 | end |
src/adv/AdvPassive.lua
| @@ -423,6 +423,8 @@ function Passive:effect5(monsterId) | @@ -423,6 +423,8 @@ function Passive:effect5(monsterId) | ||
| 423 | end | 423 | end |
| 424 | end | 424 | end |
| 425 | self.owner.battle.adv:getCurMap():addNewMonsterRand(monsterId) | 425 | self.owner.battle.adv:getCurMap():addNewMonsterRand(monsterId) |
| 426 | + self.owner.battle.adv:pushBackEvent(AdvBackEventType.Monster, {id = monsterId}) | ||
| 427 | + | ||
| 426 | end | 428 | end |
| 427 | 429 | ||
| 428 | --6=给所有场上怪物增加buff | 430 | --6=给所有场上怪物增加buff |
src/adv/AdvPlayer.lua
| @@ -69,7 +69,6 @@ function BaseObject:clearRound() | @@ -69,7 +69,6 @@ function BaseObject:clearRound() | ||
| 69 | for i = #self.buffs, 1, -1 do | 69 | for i = #self.buffs, 1, -1 do |
| 70 | if self.buffs[i].isDel then | 70 | if self.buffs[i].isDel then |
| 71 | local buff = self.buffs[i] | 71 | local buff = self.buffs[i] |
| 72 | - self.battle.adv:backBuff(self.monsterId, buff.id, true) | ||
| 73 | table.remove(self.buffs, i) | 72 | table.remove(self.buffs, i) |
| 74 | buff:endBuff() | 73 | buff:endBuff() |
| 75 | if self.attrChangeCondBuffCheck then | 74 | if self.attrChangeCondBuffCheck then |
| @@ -102,8 +101,6 @@ function BaseObject:addPassive(params) | @@ -102,8 +101,6 @@ function BaseObject:addPassive(params) | ||
| 102 | local level = params.level or 1 | 101 | local level = params.level or 1 |
| 103 | if not skillData[level] then return end | 102 | if not skillData[level] then return end |
| 104 | table.insert(self.passives, Passive.new(self, { id = skillId, level = level })) | 103 | table.insert(self.passives, Passive.new(self, { id = skillId, level = level })) |
| 105 | - | ||
| 106 | - self.battle.adv:backPassive(self.monsterId, skillId) | ||
| 107 | end | 104 | end |
| 108 | 105 | ||
| 109 | function BaseObject:getPassiveIdx(passive) | 106 | function BaseObject:getPassiveIdx(passive) |
| @@ -151,7 +148,6 @@ function BaseObject:addBuff(buffId, releaser) | @@ -151,7 +148,6 @@ function BaseObject:addBuff(buffId, releaser) | ||
| 151 | buff:createAfter() | 148 | buff:createAfter() |
| 152 | end | 149 | end |
| 153 | self:triggerPassive(Passive.GET_BUFF, {buffId = buffId}) | 150 | self:triggerPassive(Passive.GET_BUFF, {buffId = buffId}) |
| 154 | - self.battle.adv:backBuff(self.monsterId, buffId) | ||
| 155 | return true | 151 | return true |
| 156 | end | 152 | end |
| 157 | 153 | ||
| @@ -166,7 +162,6 @@ end | @@ -166,7 +162,6 @@ end | ||
| 166 | function BaseObject:delBuffById(bId) | 162 | function BaseObject:delBuffById(bId) |
| 167 | for idx, buff in ipairs(self.buffs) do | 163 | for idx, buff in ipairs(self.buffs) do |
| 168 | if buff.id == bId then | 164 | if buff.id == bId then |
| 169 | - self.battle.adv:backBuff(self.monsterId, buff.id, true) | ||
| 170 | table.remove(self.buffs, idx) | 165 | table.remove(self.buffs, idx) |
| 171 | buff:endBuff() | 166 | buff:endBuff() |
| 172 | if self.attrChangeCondBuffCheck then | 167 | if self.attrChangeCondBuffCheck then |
| @@ -293,13 +288,6 @@ function BaseObject:reSetAttr(field) | @@ -293,13 +288,6 @@ function BaseObject:reSetAttr(field) | ||
| 293 | local effect = self:getAttrBuffChange(field) | 288 | local effect = self:getAttrBuffChange(field) |
| 294 | self[field] = math.ceil((self[field] + effect[0]) * (1 + effect[1])) | 289 | self[field] = math.ceil((self[field] + effect[0]) * (1 + effect[1])) |
| 295 | local delta = self[field] - old | 290 | local delta = self[field] - old |
| 296 | - if delta ~= 0 then | ||
| 297 | - if field == "atk" then | ||
| 298 | - self.battle.adv:backAtkChange(self.monsterId, delta) | ||
| 299 | - elseif field == "def" then | ||
| 300 | - self.battle.adv:backDefChange(self.monsterId, delta) | ||
| 301 | - end | ||
| 302 | - end | ||
| 303 | end | 291 | end |
| 304 | 292 | ||
| 305 | -- 重新计算 血量上限 | 293 | -- 重新计算 血量上限 |
| @@ -394,7 +382,10 @@ function BaseObject:hurt(value, releaser, params) | @@ -394,7 +382,10 @@ function BaseObject:hurt(value, releaser, params) | ||
| 394 | end | 382 | end |
| 395 | 383 | ||
| 396 | --受伤了~ | 384 | --受伤了~ |
| 397 | - self.battle.adv:backHpChange(self.monsterId, -value) | 385 | + if self:is("Player") and params.hurtType ~= 5 then |
| 386 | + self.battle.adv:pushBackEvent(AdvBackEventType.HpChange, {change = -value}) | ||
| 387 | + end | ||
| 388 | + | ||
| 398 | if params.hurtType ~= 5 then -- 非客户端发回的伤害 返回更新地块 | 389 | if params.hurtType ~= 5 then -- 非客户端发回的伤害 返回更新地块 |
| 399 | if self.roomId and self.blockId then | 390 | if self.roomId and self.blockId then |
| 400 | self.battle.adv:backBlockChange(self.roomId, self.blockId) | 391 | self.battle.adv:backBlockChange(self.roomId, self.blockId) |
| @@ -423,7 +414,7 @@ function BaseObject:recover(value, releaser, params) | @@ -423,7 +414,7 @@ function BaseObject:recover(value, releaser, params) | ||
| 423 | params = params or {} | 414 | params = params or {} |
| 424 | value = math.max(0, math.ceil(value)) | 415 | value = math.max(0, math.ceil(value)) |
| 425 | self.hp = math.min(self.hpMax, self.hp + value) | 416 | self.hp = math.min(self.hpMax, self.hp + value) |
| 426 | - self.battle.adv:backHpChange(self.monsterId, value) | 417 | + self.battle.adv:pushBackEvent(AdvBackEventType.HpChange, {change = value}) |
| 427 | end | 418 | end |
| 428 | 419 | ||
| 429 | function BaseObject:addSpecialSkill(skillId, skillLevel, target) | 420 | function BaseObject:addSpecialSkill(skillId, skillLevel, target) |
| @@ -516,6 +507,10 @@ end | @@ -516,6 +507,10 @@ end | ||
| 516 | function BaseObject:changeSp() | 507 | function BaseObject:changeSp() |
| 517 | end | 508 | end |
| 518 | 509 | ||
| 510 | +function BaseObject:is(what) | ||
| 511 | + return self["is" .. what] and self["is" .. what](self) | ||
| 512 | +end | ||
| 513 | + | ||
| 519 | local Enemy = class("Enemy", BaseObject) | 514 | local Enemy = class("Enemy", BaseObject) |
| 520 | function Enemy:ctor(battle, mId, monsterId, roomId, blockId, lock, enemy, mapIdx) | 515 | function Enemy:ctor(battle, mId, monsterId, roomId, blockId, lock, enemy, mapIdx) |
| 521 | Enemy.super.ctor(self, battle) | 516 | Enemy.super.ctor(self, battle) |
| @@ -532,6 +527,10 @@ function Enemy:unlock(id) | @@ -532,6 +527,10 @@ function Enemy:unlock(id) | ||
| 532 | self.lock = nil | 527 | self.lock = nil |
| 533 | end | 528 | end |
| 534 | 529 | ||
| 530 | +function Enemy:isEnemy() | ||
| 531 | + return true | ||
| 532 | +end | ||
| 533 | + | ||
| 535 | local Player = class("Player", BaseObject) | 534 | local Player = class("Player", BaseObject) |
| 536 | function Player:ctor(battle, data) | 535 | function Player:ctor(battle, data) |
| 537 | Player.super.ctor(self, battle) | 536 | Player.super.ctor(self, battle) |
| @@ -567,7 +566,7 @@ function Player:addExp(value) | @@ -567,7 +566,7 @@ function Player:addExp(value) | ||
| 567 | local delta = level - self.level | 566 | local delta = level - self.level |
| 568 | if delta > 0 then | 567 | if delta > 0 then |
| 569 | for attr, _ in pairs(AdvAttsEnum) do | 568 | for attr, _ in pairs(AdvAttsEnum) do |
| 570 | - self:addBaseAttr(attr, self.growth[attr] * delta) | 569 | + self:addBaseAttr(attr, self.growth[attr] * delta, 0, true) |
| 571 | end | 570 | end |
| 572 | self.battle.adv:pushBackEvent(AdvBackEventType.Level, {level = level, delta = delta}) | 571 | self.battle.adv:pushBackEvent(AdvBackEventType.Level, {level = level, delta = delta}) |
| 573 | end | 572 | end |
| @@ -576,7 +575,7 @@ function Player:addExp(value) | @@ -576,7 +575,7 @@ function Player:addExp(value) | ||
| 576 | return value | 575 | return value |
| 577 | end | 576 | end |
| 578 | --vtype 0/1 值/% | 577 | --vtype 0/1 值/% |
| 579 | -function Player:addBaseAttr(attr, value, vtype) | 578 | +function Player:addBaseAttr(attr, value, vtype, ignoreBack) |
| 580 | local attrName = attr | 579 | local attrName = attr |
| 581 | if attr == "hp" then | 580 | if attr == "hp" then |
| 582 | attrName = "hpMax" | 581 | attrName = "hpMax" |
| @@ -601,6 +600,10 @@ function Player:addBaseAttr(attr, value, vtype) | @@ -601,6 +600,10 @@ function Player:addBaseAttr(attr, value, vtype) | ||
| 601 | else | 600 | else |
| 602 | self:reSetAttr(attr) | 601 | self:reSetAttr(attr) |
| 603 | end | 602 | end |
| 603 | + | ||
| 604 | + if not ignoreBack then | ||
| 605 | + self.battle.adv:pushBackEvent(AdvBackEventType.BaseAttrChange, {type = AdvAttsEnum[attr] or 0, change = change}) | ||
| 606 | + end | ||
| 604 | end | 607 | end |
| 605 | 608 | ||
| 606 | --cType 0 or nil 值 1 百分比 | 609 | --cType 0 or nil 值 1 百分比 |
| @@ -649,6 +652,7 @@ function Player:addBuff(buffId, releaser) | @@ -649,6 +652,7 @@ function Player:addBuff(buffId, releaser) | ||
| 649 | if status then | 652 | if status then |
| 650 | self.battle.player:attrChangeCondBuffCheck(2, buffId) | 653 | self.battle.player:attrChangeCondBuffCheck(2, buffId) |
| 651 | self.battle.adv:checkAchievement(self.battle.adv.AchievType.GetBuff, 1, buffId) | 654 | self.battle.adv:checkAchievement(self.battle.adv.AchievType.GetBuff, 1, buffId) |
| 655 | + self.battle.adv:pushBackEvent(AdvBackEventType.Buff, {buffId = buffId}) | ||
| 652 | end | 656 | end |
| 653 | return status | 657 | return status |
| 654 | end | 658 | end |
| @@ -673,6 +677,10 @@ function Player:attrChangeCondBuffCheck(etype, cond) | @@ -673,6 +677,10 @@ function Player:attrChangeCondBuffCheck(etype, cond) | ||
| 673 | end | 677 | end |
| 674 | end | 678 | end |
| 675 | 679 | ||
| 680 | +function Player:isPlayer() | ||
| 681 | + return true | ||
| 682 | +end | ||
| 683 | + | ||
| 676 | function Player:getDB() | 684 | function Player:getDB() |
| 677 | local db = Player.super.getDB(self) | 685 | local db = Player.super.getDB(self) |
| 678 | for _ , field in pairs({"level", "exp", "growth", "sp", "spMax"}) do | 686 | for _ , field in pairs({"level", "exp", "growth", "sp", "spMax"}) do |
| @@ -705,6 +713,9 @@ end | @@ -705,6 +713,9 @@ end | ||
| 705 | function Build:hurt() | 713 | function Build:hurt() |
| 706 | end | 714 | end |
| 707 | 715 | ||
| 716 | +function Build:isBuild() | ||
| 717 | + return true | ||
| 718 | +end | ||
| 708 | --0 全部 1 怪物 2 玩家 | 719 | --0 全部 1 怪物 2 玩家 |
| 709 | function Build:getTeam(nType, noSelf, mapIdx, includeLock) | 720 | function Build:getTeam(nType, noSelf, mapIdx, includeLock) |
| 710 | noSelf = false -- 不管怎么都取不到自己 | 721 | noSelf = false -- 不管怎么都取不到自己 |
src/models/RolePlugin.lua
| @@ -692,7 +692,21 @@ function RolePlugin.bind(Role) | @@ -692,7 +692,21 @@ function RolePlugin.bind(Role) | ||
| 692 | return globalCsv.adv_endless_daily_cross_count | 692 | return globalCsv.adv_endless_daily_cross_count |
| 693 | end | 693 | end |
| 694 | 694 | ||
| 695 | + -- 走 guide_unlock 表的 被动解锁 | ||
| 696 | + function Role:isFuncUnlock(func) | ||
| 697 | + if not func then return true end -- 没有就是解锁了 | ||
| 698 | + local data = csvdb["guide_unlockCsv"][func] | ||
| 699 | + if not data then return true end -- 没有就是解锁了 | ||
| 700 | + | ||
| 701 | + local hangPass = role:getProperty("hangPass") | ||
| 702 | + if hangPass[data.carbonId] then | ||
| 703 | + return true | ||
| 704 | + else | ||
| 705 | + return false | ||
| 706 | + end | ||
| 707 | + end | ||
| 695 | 708 | ||
| 709 | + -- 走 unlock 表的主动解锁 | ||
| 696 | function Role:isFuncOpen(func) | 710 | function Role:isFuncOpen(func) |
| 697 | return self:getProperty("funcOpen")[func] == 1 | 711 | return self:getProperty("funcOpen")[func] == 1 |
| 698 | end | 712 | end |