diff --git a/lua/app/module/battle/controller/battle_base_controller.lua b/lua/app/module/battle/controller/battle_base_controller.lua index a9c7b0a1..20c27dad 100644 --- a/lua/app/module/battle/controller/battle_base_controller.lua +++ b/lua/app/module/battle/controller/battle_base_controller.lua @@ -709,7 +709,6 @@ function BattleBaseController:prepareFight() self:initDefUnits(onPreloadFinished) self.battleUI:refreshChessBoard(self:getChessBoardBgName()) self.battleUI:loadBg(self:getScene()) - self.battleData:initAllRogueSkills() end) BattleHelper:setBaseOrder(self.battleUI:getUIOrder()) BattleHelper:setBattleData(self.battleData) @@ -2293,70 +2292,70 @@ function BattleBaseController:getRandomSkillList(getCount, onlyCommonSkill, excl self.randomSkillNewSkillPool = table.clearOrCreate(self.randomSkillNewSkillPool) self.randomSkillSkillWeight = table.clearOrCreate(self.randomSkillSkillWeight) local cfg = ConfigManager:getConfig("skill_rogue") - -- local skillPool = self:getSkillPool() + local skillPool = self:getSkillPool() local count = 0 - -- if not onlyCommonSkill then - -- for elementType, list in pairs(skillPool) do -- 先遍历一下未解锁的技能 - -- if not self:isUnlockedSkillElementType(elementType) then - -- local skillEntity = self:getSkillEntityByElement(elementType) - -- if skillEntity then - -- local skillId = skillEntity:getUnlockId() - -- if skillId and not self.randomSkillMap[skillId] then - -- local skillCfg = cfg[skillId] - -- table.insert(self.randomSkillNewSkillPool, skillId) - -- table.insert(self.randomSkillSkillWeight, skillCfg.weight) - -- count = count + 1 - -- self.randomSkillMap[skillId] = true - -- end - -- end - -- end - -- end - - -- if count >= 3 then -- 如果未解锁的技能大于等于3,则直接返回三个解锁技能 - -- for i = 1, 3 do - -- local index = GFunc.getRandomIndex(self.randomSkillSkillWeight) - -- local skillId = table.remove(self.randomSkillNewSkillPool, index) - -- table.remove(self.randomSkillSkillWeight, index) - -- count = count - 1 - -- table.insert(self.randomSkillList, skillId) - -- end - - -- return table.shuffle(self.randomSkillList) - -- end + if not onlyCommonSkill then + for elementType, list in pairs(skillPool) do -- 先遍历一下未解锁的技能 + if not self:isUnlockedSkillElementType(elementType) then + local skillEntity = self:getSkillEntityByElement(elementType) + if skillEntity then + local skillId = skillEntity:getUnlockId() + if skillId and not self.randomSkillMap[skillId] then + local skillCfg = cfg[skillId] + table.insert(self.randomSkillNewSkillPool, skillId) + table.insert(self.randomSkillSkillWeight, skillCfg.weight) + count = count + 1 + self.randomSkillMap[skillId] = true + end + end + end + end - -- if excludeMap then - -- for skillId, _ in pairs(excludeMap) do - -- self.randomSkillMap[skillId] = true - -- end - -- end - - -- for elementType, list in pairs(skillPool) do - -- if self:isUnlockedSkillElementType(elementType) then - -- for _, skillId in ipairs(list) do - -- local skillCfg = cfg[skillId] - -- if skillCfg and (not skillCfg.limit_times or self:getSkillCount(skillId) < skillCfg.limit_times) then + if count >= 3 then -- 如果未解锁的技能大于等于3,则直接返回三个解锁技能 + for i = 1, 3 do + local index = GFunc.getRandomIndex(self.randomSkillSkillWeight) + local skillId = table.remove(self.randomSkillNewSkillPool, index) + table.remove(self.randomSkillSkillWeight, index) + count = count - 1 + table.insert(self.randomSkillList, skillId) + end - -- if not self.randomSkillMap[skillId] and (not skillCfg.unlock or self:getSkillCount(skillCfg.unlock) > 0) then - -- table.insert(self.randomSkillNewSkillPool, skillId) - -- table.insert(self.randomSkillSkillWeight, skillCfg.weight) - -- count = count + 1 - -- self.randomSkillMap[skillId] = true - -- end - -- end - -- end - -- end - -- end - - -- if count > 0 then - -- local index = GFunc.getRandomIndex(self.randomSkillSkillWeight) - -- local skillId = table.remove(self.randomSkillNewSkillPool, index) - -- table.remove(self.randomSkillSkillWeight, index) - -- count = count - 1 - -- table.insert(self.randomSkillList, skillId) - -- getCount = getCount - 1 - -- end - -- end + return table.shuffle(self.randomSkillList) + end + + if excludeMap then + for skillId, _ in pairs(excludeMap) do + self.randomSkillMap[skillId] = true + end + end + + for elementType, list in pairs(skillPool) do + if self:isUnlockedSkillElementType(elementType) then + for _, skillId in ipairs(list) do + local skillCfg = cfg[skillId] + if skillCfg and (not skillCfg.limit_times or self:getSkillCount(skillId) < skillCfg.limit_times) then + + if not self.randomSkillMap[skillId] and (not skillCfg.unlock or self:getSkillCount(skillCfg.unlock) > 0) then + table.insert(self.randomSkillNewSkillPool, skillId) + table.insert(self.randomSkillSkillWeight, skillCfg.weight) + count = count + 1 + self.randomSkillMap[skillId] = true + end + end + end + end + end + + if count > 0 then + local index = GFunc.getRandomIndex(self.randomSkillSkillWeight) + local skillId = table.remove(self.randomSkillNewSkillPool, index) + table.remove(self.randomSkillSkillWeight, index) + count = count - 1 + table.insert(self.randomSkillList, skillId) + getCount = getCount - 1 + end + end for skillId, info in pairs(cfg) do if not self:getNotInvolvedSkills()[skillId] then diff --git a/lua/app/userdata/battle/battle_base_data.lua b/lua/app/userdata/battle/battle_base_data.lua index fc66e4a0..1dbfe1f9 100644 --- a/lua/app/userdata/battle/battle_base_data.lua +++ b/lua/app/userdata/battle/battle_base_data.lua @@ -148,16 +148,18 @@ function BattleBaseData:setTimeSpeed(timeSpeed, timeScale) self.data.timeSpeed = timeSpeed end -function BattleBaseData:initAllRogueSkills() - self.atkTeam:initRougeSkills() - self.defTeam:initRougeSkills() -end - function BattleBaseData:initRogueSkills(side, formation) - self.skillPool = self.skillPool or {} - self.skillMap = self.skillMap or {} - self.skillPool[side] = self.skillPool[side] or {} - self.skillMap[side] = self.skillMap[side] or {} + if not self.skillPool then + self.skillPool = {} + self.skillMap = {} + end + if not self.skillPool[side] then + self.skillPool[side] = {} + end + if not self.skillMap[side] then + self.skillMap[side] = {} + end + if not formation then return end @@ -165,19 +167,18 @@ function BattleBaseData:initRogueSkills(side, formation) for matchType, heroEntity in pairs(formation) do local skillId = heroEntity:getBaseSkill() local cfg = SKILL_CFG[skillId] - local skillLv = heroEntity:getRogueSkillLv() - self.skillMap[side][cfg.position] = BATTLE_BOARD_SKILL_ENTITY:create(skillId, side, skillLv) - -- self.skillMap[side][cfg.position]:addUpSkills(heroEntity:getRogueSkillList()) - -- self.skillMap[side][cfg.position]:setUnlockId(heroEntity:getUnlockRogueId()) - -- for _, id in ipairs(heroEntity:getActiveRogueSkills()) do - -- if not skillmap[id] then - -- if not self.skillPool[side][cfg.position] then - -- self.skillPool[side][cfg.position] = {} - -- end - -- table.insert(self.skillPool[side][cfg.position], id) - -- skillmap[id] = true - -- end - -- end + self.skillMap[side][cfg.position] = BATTLE_BOARD_SKILL_ENTITY:create(skillId, side) + self.skillMap[side][cfg.position]:addUpSkills(heroEntity:getRogueSkillList()) + self.skillMap[side][cfg.position]:setUnlockId(heroEntity:getUnlockRogueId()) + for _, id in ipairs(heroEntity:getActiveRogueSkills()) do + if not skillmap[id] then + if not self.skillPool[side][cfg.position] then + self.skillPool[side][cfg.position] = {} + end + table.insert(self.skillPool[side][cfg.position], id) + skillmap[id] = true + end + end end end @@ -793,7 +794,7 @@ function BattleBaseData:initHeroData(formation) modelId = heroEntity:getModelId(), matchType = matchType, normalSkills = heroEntity:getHurtSkill(), - rougeSkills = heroEntity:getActiveRogueSkills(), + -- assistingSkill = heroEntity:getAssistingSkill(), body = 2, -- 英雄默认是中体型 skin = heroEntity:getSkinId(), attr = { @@ -894,6 +895,7 @@ function BattleBaseData:addMonster(monsterId, newTeam, battleController) normalSkillCount = monsterInfo.atk_times or 0, activeSkills = monsterInfo.skill, passiveSkills = monsterInfo.passive_skill, + assistingSkill = nil, isBoss = monsterInfo.is_boss, exp = monsterInfo.monster_exp or 0, body = monsterInfo.body, diff --git a/lua/app/userdata/battle/skill/battle_board_skill_entity.lua b/lua/app/userdata/battle/skill/battle_board_skill_entity.lua index 4f83eb77..22b0eff4 100644 --- a/lua/app/userdata/battle/skill/battle_board_skill_entity.lua +++ b/lua/app/userdata/battle/skill/battle_board_skill_entity.lua @@ -1,7 +1,7 @@ local BattleBoardSkillEntity = class("BattleBoardSkillEntity", BaseData) local BattleBuffEntity = require "app/userdata/battle/skill/battle_buff_entity" -function BattleBoardSkillEntity:ctor(skillId, side, skillLv) +function BattleBoardSkillEntity:ctor(skillId, side) self:refreshSkillId(skillId) self.side = side self.curEnergy = 0 @@ -18,7 +18,7 @@ function BattleBoardSkillEntity:ctor(skillId, side, skillLv) self.originSkillId = skillId self.upSkillIdMap = {} - self.getUpSkillKind = skillLv + self.getUpSkillKind = 0 end function BattleBoardSkillEntity:refreshSkillId(skillId) diff --git a/lua/app/userdata/hero/hero_entity.lua b/lua/app/userdata/hero/hero_entity.lua index 2996c5f1..2cf5eb06 100644 --- a/lua/app/userdata/hero/hero_entity.lua +++ b/lua/app/userdata/hero/hero_entity.lua @@ -408,16 +408,13 @@ end function HeroEntity:getRogueSkillList() if not self.rogueSkillList then self.rogueSkillList = {} - self.skillLv = 0 local count = 1 while true do local ids = self.config["rouge_skill_" .. count] if ids then for i = #ids, 1, -1 do - if self.data.lv >= ids[i][1] or i == 1 then - if self.data.lv >= ids[i][1] then - self.skillLv = self.skillLv + i - end + -- if self.data.lv >= ids[i][1] or i == 1 then + if self.data.lv >= ids[i][1]then table.insert(self.rogueSkillList, ids[i]) break end @@ -432,13 +429,6 @@ function HeroEntity:getRogueSkillList() return self.rogueSkillList end -function HeroEntity:getRogueSkillLv() - if not self.skillLv then - self:getRogueSkillList() - end - return self.skillLv -end - function HeroEntity:getNextRougeLvUp(idx) local ids = self.config["rouge_skill_" .. idx] if ids then