肉鸽
This commit is contained in:
parent
cfe72dae8d
commit
7ce2b6a419
@ -1035,6 +1035,20 @@ local buff = {
|
||||
["buff_type"]=7,
|
||||
["stack"]=0,
|
||||
["decr"]=3
|
||||
},
|
||||
[111]={
|
||||
["id"]=111,
|
||||
["name"]="random_universal",
|
||||
["buff_type"]=7,
|
||||
["stack"]=0,
|
||||
["decr"]=3
|
||||
},
|
||||
[112]={
|
||||
["id"]=112,
|
||||
["name"]="main_hero_energyadd",
|
||||
["buff_type"]=7,
|
||||
["stack"]=0,
|
||||
["decr"]=3
|
||||
}
|
||||
}
|
||||
local keys = {
|
||||
@ -1148,12 +1162,14 @@ local keys = {
|
||||
["yellow_refresh_weight"]=buff[107],
|
||||
["green_refresh_weight"]=buff[108],
|
||||
["blue_refresh_weight"]=buff[109],
|
||||
["purple_refresh_weight"]=buff[110]
|
||||
["purple_refresh_weight"]=buff[110],
|
||||
["random_universal"]=buff[111],
|
||||
["main_hero_energyadd"]=buff[112]
|
||||
}
|
||||
}
|
||||
local config = {
|
||||
data=buff,
|
||||
keys=keys,
|
||||
count=110
|
||||
count=112
|
||||
}
|
||||
return config
|
||||
@ -1247,6 +1247,25 @@ local item = {
|
||||
["qlt"]=4,
|
||||
["icon"]="48"
|
||||
},
|
||||
[49]={
|
||||
["type"]=6,
|
||||
["qlt"]=3,
|
||||
["icon"]="49",
|
||||
["box_drop"]={
|
||||
{
|
||||
["type"]=1,
|
||||
["id"]=14,
|
||||
["num"]=1,
|
||||
["weight"]=6000
|
||||
},
|
||||
{
|
||||
["type"]=1,
|
||||
["id"]=15,
|
||||
["num"]=1,
|
||||
["weight"]=4000
|
||||
}
|
||||
}
|
||||
},
|
||||
[13001]={
|
||||
["type"]=5,
|
||||
["inbag"]=1,
|
||||
@ -1484,6 +1503,6 @@ local item = {
|
||||
}
|
||||
}
|
||||
local config = {
|
||||
data=item,count=72
|
||||
data=item,count=73
|
||||
}
|
||||
return config
|
||||
@ -105,7 +105,7 @@ local skill = {
|
||||
},
|
||||
[15]={
|
||||
["effect_type"]=2,
|
||||
["trigger"]=11,
|
||||
["trigger"]=12,
|
||||
["trigger_value"]=10,
|
||||
["trigger_limit"]=15,
|
||||
["effect"]={
|
||||
|
||||
@ -19,24 +19,36 @@ local skill_rogue = {
|
||||
[2]={
|
||||
["universal"]=1,
|
||||
["limit_times"]=1,
|
||||
["weight"]=1000,
|
||||
["weight"]=1000000000000,
|
||||
["qlt"]=5,
|
||||
["type"]=20,
|
||||
["parameter"]={
|
||||
1000
|
||||
["type"]=9,
|
||||
["effect"]={
|
||||
{
|
||||
["type"]="random_universal",
|
||||
["num"]=20000,
|
||||
["ratio"]=20000,
|
||||
["round"]=9999
|
||||
}
|
||||
},
|
||||
["icon"]="17"
|
||||
["obj"]=1,
|
||||
["icon"]="30"
|
||||
},
|
||||
[3]={
|
||||
["universal"]=1,
|
||||
["limit_times"]=1,
|
||||
["weight"]=1000,
|
||||
["qlt"]=5,
|
||||
["type"]=21,
|
||||
["parameter"]={
|
||||
1
|
||||
["type"]=9,
|
||||
["effect"]={
|
||||
{
|
||||
["type"]="main_hero_energyadd",
|
||||
["num"]=1,
|
||||
["ratio"]=10000,
|
||||
["round"]=0
|
||||
}
|
||||
},
|
||||
["icon"]="29"
|
||||
["obj"]=1,
|
||||
["icon"]="30"
|
||||
},
|
||||
[4]={
|
||||
["universal"]=1,
|
||||
@ -284,7 +296,7 @@ local skill_rogue = {
|
||||
["universal"]=1,
|
||||
["weight"]=1000,
|
||||
["qlt"]=4,
|
||||
["type"]=22,
|
||||
["type"]=20,
|
||||
["parameter"]={
|
||||
5
|
||||
},
|
||||
@ -294,7 +306,7 @@ local skill_rogue = {
|
||||
["universal"]=1,
|
||||
["weight"]=1000,
|
||||
["qlt"]=4,
|
||||
["type"]=23,
|
||||
["type"]=21,
|
||||
["parameter"]={
|
||||
2
|
||||
},
|
||||
@ -304,7 +316,7 @@ local skill_rogue = {
|
||||
["universal"]=1,
|
||||
["weight"]=1000,
|
||||
["qlt"]=4,
|
||||
["type"]=24,
|
||||
["type"]=22,
|
||||
["icon"]="27"
|
||||
},
|
||||
[23]={
|
||||
|
||||
@ -252,7 +252,8 @@ BattleConst.SPECIAL_DAMAGE_OR_CURE_TYPE = {
|
||||
}
|
||||
|
||||
BattleConst.SKILL_RECORD_DATA_NAME = {
|
||||
HP_LOWER_THAN = 1
|
||||
HP_LOWER_THAN = 1,
|
||||
LINK_X_THAN = 2,
|
||||
}
|
||||
|
||||
BattleConst.SKILL_CONDITION_TYPE = {
|
||||
@ -282,6 +283,7 @@ BattleConst.PASSIVE_EVENT = {
|
||||
ON_DEAD_BY_SKILL = 9, -- 有敌人死于技能时触发
|
||||
ON_DEAD_WITH_BLEED = 10, -- 死亡时带有流血buff
|
||||
ON_DEAD = 11, -- 死亡时
|
||||
ON_LINK_X = 12, -- 每消除X个色块(trigger_value触发参数配置)获得一次effect效果,增加触发上限功能(trigger_limit)
|
||||
}
|
||||
|
||||
local BUFF_NAME = {
|
||||
@ -373,6 +375,7 @@ local BUFF_NAME = {
|
||||
FOREVER_DEC_DMG_PURPLE_ADD = "forever_dec_dmg_purple_add",
|
||||
FOREVER_DEC_DMG_ALL_ADD = "forever_dec_dmg_all_add",
|
||||
FOREVER_THORNS = "forever_thorns",
|
||||
RANDOM_UNIVERSAL = "random_universal",
|
||||
}
|
||||
BattleConst.BUFF_NAME = BUFF_NAME
|
||||
|
||||
|
||||
@ -469,6 +469,7 @@ end
|
||||
function BattleUnitComp:useNormalSkill(count, effectType, callback)
|
||||
self.actionOverCallback = callback
|
||||
self.normalSkillCount = count
|
||||
self:checkPassiveEvent(PASSIVE_EVENT.ON_LINK_X)
|
||||
if effectType == BattleConst.EFFECT_TYPE.DIRECT then
|
||||
self.normalSkillCount = self.normalSkillCount + self.unitEntity:getNormalAttackAddCount()
|
||||
end
|
||||
|
||||
@ -287,7 +287,8 @@ function BattleBaseController:onLinkChange()
|
||||
local entity = self.battleData:getGridEntity(info.posId)
|
||||
if not mainElementType or not dmgSkillId then
|
||||
local skillId = entity:getSkillId()
|
||||
if not skillId and not mainElementType then
|
||||
local isUniversal = entity:getIsUniversal()
|
||||
if not skillId and not mainElementType and not isUniversal then
|
||||
mainElementType = entity:getElementType()
|
||||
end
|
||||
if skillId and not dmgSkillId then
|
||||
@ -1481,7 +1482,7 @@ function BattleBaseController:calculateCurElimination(onlyCheck)
|
||||
local entity = gridEntities[info.posId]
|
||||
local elementType = entity:getElementType()
|
||||
if not info.noAni and info.isIdle then
|
||||
if not info.isSkill then
|
||||
if not info.isSkill and not info.isUniversal then
|
||||
if not entity:isElmentTypeInvalid() then
|
||||
self.elementTypeMap[elementType] = (self.elementTypeMap[elementType] or 0) + 1
|
||||
end
|
||||
@ -1514,6 +1515,9 @@ function BattleBaseController:dealGridBreak(posId, condition, time, breakedMap,
|
||||
if entity:getSkillId() then
|
||||
aniUnit.isSkill = true
|
||||
end
|
||||
if entity:getIsUniversal() then
|
||||
aniUnit.isUniversal = true
|
||||
end
|
||||
|
||||
if breaked or entity:canBreakByThisCondition(condition) then
|
||||
breakedMap[posId] = true
|
||||
@ -1658,6 +1662,7 @@ function BattleBaseController:getEliminattionAniInfo(posId, timeIdx)
|
||||
timeIdx = timeIdx,
|
||||
conditions = nil,
|
||||
isSkill = false,
|
||||
isUniversal = false,
|
||||
isIdle = false,
|
||||
callback = nil,
|
||||
overCallback = nil,
|
||||
@ -1780,6 +1785,7 @@ function BattleBaseController:onFillBoardOver(isRoundBeginCheck)
|
||||
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.BOARD_FILL_OVER)
|
||||
self:popBoardCacheSkill(function()
|
||||
self:generateSkill(function()
|
||||
self:generateUniversal(function()
|
||||
if self.onFillBoardOverCallback then
|
||||
local callback = self.onFillBoardOverCallback
|
||||
self.onFillBoardOverCallback = nil
|
||||
@ -1789,6 +1795,7 @@ function BattleBaseController:onFillBoardOver(isRoundBeginCheck)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
else
|
||||
self:generateSkill(function()
|
||||
self.battleUI:refreshSkill(nil, nil, self:getCurActionSide())
|
||||
@ -1974,6 +1981,49 @@ function BattleBaseController:setGridSkillId(posId, skillId, noDirty)
|
||||
end
|
||||
end
|
||||
|
||||
function BattleBaseController:getUniversalElementList()
|
||||
local gridEntities = self.battleData:getGridEnties()
|
||||
if not gridEntities then
|
||||
return
|
||||
end
|
||||
local posIds = {}
|
||||
for row = 1, BattleConst.ROW_COUNT do
|
||||
for column = 1, BattleConst.COLUMN_COUNT do
|
||||
local posId = ModuleManager.BattleManager:getPosId(row, column)
|
||||
local entity = gridEntities[posId]
|
||||
if entity and entity:canChangeInfo() then
|
||||
table.insert(posIds, posId)
|
||||
end
|
||||
end
|
||||
end
|
||||
if #posIds == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
return posIds[math.random(1, #posIds)]
|
||||
end
|
||||
|
||||
function BattleBaseController:generateUniversal(callback)
|
||||
local posId = self:getUniversalElementList()
|
||||
|
||||
if not self.battleUI or not posId then
|
||||
if callback then
|
||||
callback()
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if self.atkTeam:checkUniversal() then
|
||||
local gridEntities = self.battleData:getGridEnties()
|
||||
local entity = gridEntities[posId]
|
||||
entity:setUniversal(true, false, self.curActionSide)
|
||||
local cell = entity:getCell()
|
||||
cell:refresh(entity)
|
||||
callback()
|
||||
else
|
||||
callback()
|
||||
end
|
||||
end
|
||||
|
||||
function BattleBaseController:generateGridType(skillTypeParameter, monsterPos)
|
||||
if not skillTypeParameter then
|
||||
@ -2253,32 +2303,33 @@ function BattleBaseController:getRandomGridInfo()
|
||||
local fixedRandomList = fixedRandomGrid[self.curBoardIndex]
|
||||
|
||||
local gridType = 0
|
||||
local elementType
|
||||
if fixedRandomList and fixedRandomList[1] then
|
||||
elementType = table.remove(fixedRandomList, 1)
|
||||
else
|
||||
local map = self.battleData:getElementTypeMap()
|
||||
self.getRandomGridInfoIndexs = table.clearOrCreate(self.getRandomGridInfoIndexs)
|
||||
self.getRandomGridInfoTypeList = table.clearOrCreate(self.getRandomGridInfoTypeList)
|
||||
for typeName, typeNum in pairs(BattleConst.ELEMENT_TYPE) do
|
||||
if not self:getSealElementType()[typeNum] and self:getSkillEntityByElement(typeNum) then
|
||||
local weight = ((map[typeNum] or 0) + 1) * BattleConst.ELEMENT_WIGHT
|
||||
if self.elementWeightMap and self.elementWeightMap[typeNum] then
|
||||
weight = weight + self.elementWeightMap[typeNum]
|
||||
end
|
||||
if weight > BattleConst.MAX_ELEMENT_WIGHT then
|
||||
weight = BattleConst.MAX_ELEMENT_WIGHT
|
||||
end
|
||||
table.insert(self.getRandomGridInfoIndexs, weight)
|
||||
table.insert(self.getRandomGridInfoTypeList, typeNum)
|
||||
end
|
||||
end
|
||||
-- local elementType
|
||||
-- if fixedRandomList and fixedRandomList[1] then
|
||||
-- elementType = table.remove(fixedRandomList, 1)
|
||||
-- else
|
||||
-- local map = self.battleData:getElementTypeMap()
|
||||
-- self.getRandomGridInfoIndexs = table.clearOrCreate(self.getRandomGridInfoIndexs)
|
||||
-- self.getRandomGridInfoTypeList = table.clearOrCreate(self.getRandomGridInfoTypeList)
|
||||
-- for typeName, typeNum in pairs(BattleConst.ELEMENT_TYPE) do
|
||||
-- if not self:getSealElementType()[typeNum] and self:getSkillEntityByElement(typeNum) then
|
||||
-- local weight = ((map[typeNum] or 0) + 1) * BattleConst.ELEMENT_WIGHT
|
||||
-- if self.elementWeightMap and self.elementWeightMap[typeNum] then
|
||||
-- weight = weight + self.elementWeightMap[typeNum]
|
||||
-- end
|
||||
-- if weight > BattleConst.MAX_ELEMENT_WIGHT then
|
||||
-- weight = BattleConst.MAX_ELEMENT_WIGHT
|
||||
-- end
|
||||
-- table.insert(self.getRandomGridInfoIndexs, weight)
|
||||
-- table.insert(self.getRandomGridInfoTypeList, typeNum)
|
||||
-- end
|
||||
-- end
|
||||
|
||||
local index = GFunc.getRandomIndex(self.getRandomGridInfoIndexs)
|
||||
elementType = self.getRandomGridInfoTypeList[index]
|
||||
end
|
||||
-- local index = GFunc.getRandomIndex(self.getRandomGridInfoIndexs)
|
||||
-- elementType = self.getRandomGridInfoTypeList[index]
|
||||
-- end
|
||||
local elementType = math.random(1, BattleConst.ELEMENT_TYPE.PURPLE)
|
||||
|
||||
return {gridType = gridType, elementType = elementType}
|
||||
return {gridType = gridType, elementType = elementType, isUniversal = true}
|
||||
end
|
||||
|
||||
|
||||
|
||||
@ -62,7 +62,7 @@ function BattleBoardTouchHelper:onLinkStart(entity, posId, isVirtual)
|
||||
end
|
||||
self.battleData:insertGridSequence(posId, self.battleController:snapshotBoard(), isVirtual)
|
||||
local skillEntity = self.battleController:getSkillEntityBySkillId(entity:getSkillId())
|
||||
local maskElementType = entity:getElementType(skillEntity)
|
||||
local maskElementType = entity:getElementType(skillEntity, true)
|
||||
self.battleUI:showBoardMask(maskElementType, skillEntity and entity:getPosId())
|
||||
self.battleController:findSkillInfluenceGrids()
|
||||
self.battleController:onLinkChange()
|
||||
@ -110,12 +110,12 @@ function BattleBoardTouchHelper:onLinkEnter(entity, posId, isVirtual)
|
||||
|
||||
local skillId = entity:getSkillId()
|
||||
local skillEntity = self.battleController:getSkillEntityBySkillId(skillId)
|
||||
local elementType = entity:getElementType(skillEntity)
|
||||
local elementType = entity:getElementType(skillEntity, true)
|
||||
|
||||
local lastEntity = self.battleData:getGridEntity(lastPosId)
|
||||
local lastSkillId = lastEntity:getSkillId()
|
||||
local lastSkillEntity = self.battleController:getSkillEntityBySkillId(lastSkillId)
|
||||
local lastElementType = lastEntity:getElementType(lastSkillEntity)
|
||||
local lastElementType = lastEntity:getElementType(lastSkillEntity, true)
|
||||
|
||||
local hadSkillId, skillPosId = self.battleData:getSequenceHadSkill()
|
||||
if skillEntity and hadSkillId then
|
||||
@ -244,7 +244,7 @@ function BattleBoardTouchHelper:clearSequenceByPosId(posId)
|
||||
end
|
||||
local gridEntity = self.battleData:getGridEntity(posId)
|
||||
local skillEntity = self.battleController:getSkillEntityBySkillId(gridEntity:getSkillId())
|
||||
local maskElementType = gridEntity:getElementType(skillEntity)
|
||||
local maskElementType = gridEntity:getElementType(skillEntity, true)
|
||||
|
||||
local _, skillPosId = self.battleData:getSequenceHadSkill()
|
||||
self.battleUI:showBoardMask(maskElementType, skillPosId)
|
||||
|
||||
@ -69,6 +69,25 @@ local function _checkOnDead(unitComp, skill, targetComp)
|
||||
return 1
|
||||
end
|
||||
|
||||
local function _checkLinkX(unitComp, skill, targetComp)
|
||||
local triggerLimit = skill:getTriggerLimit() or 0
|
||||
local data = unitComp.unitEntity:getTeamRecordData(SKILL_RECORD_DATA_NAME.LINK_X_THAN) or 0
|
||||
if data >= triggerLimit then
|
||||
return 0
|
||||
end
|
||||
local maxCount = 0
|
||||
local eliminateMap = unitComp.battleController.totalEliminateCountMap
|
||||
for _, v in pairs(eliminateMap) do
|
||||
maxCount = maxCount + v
|
||||
end
|
||||
local triggerValue = skill:getPassiveTriggerValue() or 0
|
||||
if maxCount >= (data + 1) * triggerValue then
|
||||
unitComp.unitEntity:setTeamRecordData(SKILL_RECORD_DATA_NAME.LINK_X_THAN, data + 1)
|
||||
return 1
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
BattlePassive.checkTrigger = {
|
||||
[PASSIVE_EVENT.ON_UNIT_PREPARE_OVER] = _checkOnUnitPrepareOver,
|
||||
[PASSIVE_EVENT.ON_UNI_ATTACK_START] = _checkOnUniAttackStart,
|
||||
@ -80,6 +99,7 @@ BattlePassive.checkTrigger = {
|
||||
[PASSIVE_EVENT.ON_DEAD_BY_SKILL] = _checkOnDeadBySkill,
|
||||
[PASSIVE_EVENT.ON_DEAD_WITH_BLEED] = _checkOnDeadWithBleed,
|
||||
[PASSIVE_EVENT.ON_DEAD] = _checkOnDead,
|
||||
[PASSIVE_EVENT.ON_LINK_X] = _checkLinkX,
|
||||
}
|
||||
|
||||
return BattlePassive
|
||||
@ -515,6 +515,11 @@ BattleRogueSkillHandle._effectOn = {
|
||||
[17] = _addSkillBreakEnergyMultiple, -- 增加技能消除的元素的能量倍数
|
||||
[18] = _addSkillMerge, -- 融合技能,参数配本表的ID,获得后直接让配的技能ID都生效
|
||||
[19] = _addSkillLinkNumRound, -- 需要做成链接超X个元素时将主技能的第几个BUFF的回合数增加。参数配置[链接数,第几个BUFF,回合数加值]
|
||||
-- [20] = _randomOneUniversal, -- 概率刷出万能块,技能参数parameter配置其概率
|
||||
-- [21] = _addSkillLinkNumRound, -- 每次消除获得的主要英雄能量+X,parameter配置能量增加数
|
||||
-- [22] = _addSkillLinkNumRound, -- 随机1名英雄能量+X,parameter配置能量增加数
|
||||
-- [23] = _addSkillLinkNumRound, -- 全体英雄能量+X,parameter配置能量增加数
|
||||
-- [24] = _addSkillLinkNumRound, -- 随机将一个技能能量加满
|
||||
}
|
||||
|
||||
function BattleRogueSkillHandle.takeEffect(skillId, battleData, battleController, value, side, isSnapshot)
|
||||
|
||||
@ -685,6 +685,22 @@ function BattleTeam:updateBuffState(buff, num)
|
||||
end
|
||||
end
|
||||
|
||||
function BattleTeam:hadUniversalBuff()
|
||||
for i,v in ipairs(self.buffList) do
|
||||
if v.buff:getName() == BattleConst.BUFF_NAME.RANDOM_UNIVERSAL and v.buff:isActive() then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- 回合结束的时候要结算buff和技能
|
||||
function BattleTeam:checkUniversal()
|
||||
if self:hadUniversalBuff() then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
function BattleTeam:getBuffCountByName(buffName)
|
||||
return self.sameBuffCount[buffName] or 0
|
||||
end
|
||||
|
||||
@ -2167,6 +2167,8 @@ function BattleBaseUI:refreshWave(wave, iconAtlas, iconName)
|
||||
end
|
||||
|
||||
function BattleBaseUI:getSfxLine(elementType, index, func)
|
||||
--@TODO 2025-10-16 21:12:05 缺光效
|
||||
elementType = elementType or 1
|
||||
self.hidingAllSfxLine = false
|
||||
|
||||
self.root.lineSfxObjs = self.root.lineSfxObjs or {}
|
||||
|
||||
@ -23,6 +23,9 @@ function BattleSelectSkillCell:refresh(skillId, func)
|
||||
value = I18N:getText("skill_rogue", skillId, "desc", value)
|
||||
end
|
||||
else
|
||||
if EDITOR_MODE then
|
||||
Logger.logHighlight("=================== skillId = %s", skillId)
|
||||
end
|
||||
value = ModuleManager.HeroManager:getSkillRogueDesc(skillId, self.value)
|
||||
end
|
||||
end
|
||||
|
||||
@ -62,6 +62,7 @@ function GridCell:refresh(gridEntity, curElement, skillPosId)
|
||||
|
||||
local skillIcon = uiMap["grid_cell.touch_node.ani_node.skill_icon"]
|
||||
local skillId = gridEntity:getSkillId()
|
||||
local isUniversal = gridEntity:getIsUniversal()
|
||||
if skillId then
|
||||
elementIcon:setVisible(false)
|
||||
skillIcon:setVisible(true)
|
||||
@ -105,6 +106,12 @@ function GridCell:refresh(gridEntity, curElement, skillPosId)
|
||||
downBg:setSprite(GConst.ATLAS_PATH.BATTLE, self.lastSkillBg)
|
||||
end
|
||||
end
|
||||
elseif isUniversal then
|
||||
elementIcon:setVisible(false)
|
||||
downBg:setVisible(true)
|
||||
skillIcon:setVisible(false)
|
||||
showMask = false
|
||||
downBg:setSprite(GConst.ATLAS_PATH.BATTLE, "battle_bg_lv")
|
||||
else
|
||||
skillIcon:setVisible(false)
|
||||
end
|
||||
@ -159,8 +166,9 @@ function GridCell:showHighLight(show, mainElementType)
|
||||
local downBg = uiMap["grid_cell.touch_node.ani_node.down_bg"]
|
||||
|
||||
local skillId = self.gridEntity:getSkillId()
|
||||
downBg:setVisible(skillId ~= nil)
|
||||
local isUniversal = self.gridEntity:getIsUniversal()
|
||||
if skillId then
|
||||
downBg:setVisible(true)
|
||||
show = true -- 有技能,强制显示特效
|
||||
local skillEntity = self:getSkillEntity()
|
||||
local ignoreElementType = skillEntity:getIgnoreElementType()
|
||||
@ -175,6 +183,11 @@ function GridCell:showHighLight(show, mainElementType)
|
||||
self.lastSkillBg = skillBg
|
||||
downBg:setSprite(GConst.ATLAS_PATH.BATTLE, self.lastSkillBg)
|
||||
end
|
||||
elseif isUniversal then
|
||||
downBg:setVisible(true)
|
||||
downBg:setSprite(GConst.ATLAS_PATH.BATTLE, "battle_bg_lv")
|
||||
else
|
||||
downBg:setVisible(false)
|
||||
end
|
||||
|
||||
|
||||
|
||||
@ -168,7 +168,7 @@ function BattleBaseData:initRogueSkills(side, formation)
|
||||
local skillId = heroEntity:getBaseSkill()
|
||||
local cfg = SKILL_CFG[skillId]
|
||||
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]:addUpSkills(heroEntity:getRogueSkillListBattle())
|
||||
self.skillMap[side][cfg.position]:setUnlockId(heroEntity:getUnlockRogueId())
|
||||
for _, id in ipairs(heroEntity:getActiveRogueSkills()) do
|
||||
if not skillmap[id] then
|
||||
@ -451,6 +451,7 @@ function BattleBaseData:setGridInfo(posId, gridInfo)
|
||||
end
|
||||
|
||||
entity:setSkilId() -- 清除skillId
|
||||
entity:setUniversal(gridInfo.isUniversal) -- 清除万能地块
|
||||
entity:determineIdleStatus()
|
||||
end
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@ function BattleGridEntity:ctor(data)
|
||||
self.gridType = data.gridType or BattleConst.GRID_TYPE.EMPTY
|
||||
self.elementType = data.elementType or BattleConst.ELEMENT_TYPE.NONE
|
||||
self.skillId = data.skillId
|
||||
self.isUniversal = data.universalId
|
||||
self.linkSkillCount = data.linkSkillCount or 0 -- 任意链接技能激活次数
|
||||
self.battleData = data.battleData
|
||||
self.isIdle = false
|
||||
@ -21,6 +22,7 @@ function BattleGridEntity:clear()
|
||||
self.gridType = BattleConst.GRID_TYPE.EMPTY
|
||||
self.elementType = BattleConst.ELEMENT_TYPE.RED
|
||||
self.skillId = nil
|
||||
self.isUniversal = nil
|
||||
self.linkSkillCount = 0 -- 任意链接技能激活次数
|
||||
self.isIdle = false
|
||||
self.breakCount = 0
|
||||
@ -38,6 +40,7 @@ function BattleGridEntity:getSnapshoptInfo()
|
||||
elementType = self.elementType,
|
||||
isIdle = self.isIdle,
|
||||
skillId = self.skillId,
|
||||
universalId = self.isUniversal,
|
||||
linkSkillCount = self.linkSkillCount,
|
||||
breakCount = self.breakCount,
|
||||
}
|
||||
@ -49,6 +52,7 @@ function BattleGridEntity:setInfoBySnapshop(snapshot)
|
||||
self.elementType = snapshot.elementType or BattleConst.ELEMENT_TYPE.RED
|
||||
self.isIdle = snapshot.isIdle
|
||||
self.skillId = snapshot.skillId
|
||||
self.isUniversal = snapshot.universalId
|
||||
self.linkSkillCount = snapshot.linkSkillCount
|
||||
self.breakCount = snapshot.breakCount
|
||||
self:setDirty()
|
||||
@ -70,11 +74,13 @@ function BattleGridEntity:getGridType()
|
||||
return self.gridType
|
||||
end
|
||||
|
||||
function BattleGridEntity:getElementType(skillEntity)
|
||||
function BattleGridEntity:getElementType(skillEntity, checkUniversal)
|
||||
if skillEntity and skillEntity:getIgnoreElementType() and self.linkSkillCount <= 0 then
|
||||
return nil
|
||||
end
|
||||
|
||||
if checkUniversal and self.isUniversal then
|
||||
return nil
|
||||
end
|
||||
return self.elementType
|
||||
end
|
||||
|
||||
@ -138,6 +144,12 @@ function BattleGridEntity:tryBreakGrid(condition, onlyCheck)
|
||||
else
|
||||
return false
|
||||
end
|
||||
elseif self:getIsUniversal() then
|
||||
if condition == BattleConst.GRID_BREAK_CONDITION.LINE or condition == BattleConst.GRID_BREAK_CONDITION.SKILL then -- 技能破碎逻辑为,链接消除
|
||||
isIdle = true
|
||||
else
|
||||
return false
|
||||
end
|
||||
else
|
||||
if self:isEmptyIdle() and (condition == BattleConst.GRID_BREAK_CONDITION.LINE or condition == BattleConst.GRID_BREAK_CONDITION.SKILL) then -- 空类型/带技能破碎逻辑为,链接消除 置为闲置即消除
|
||||
isIdle = true
|
||||
@ -208,7 +220,7 @@ end
|
||||
|
||||
function BattleGridEntity:setElementType(elementType, noDirty)
|
||||
self.elementType = elementType
|
||||
if self.battleData:getCacheLockedElement(self.elementType) and not self.skillId then
|
||||
if self.battleData:getCacheLockedElement(self.elementType) and not self.skillId and not self.isUniversal then
|
||||
self:setGridType(BattleConst.GRID_TYPE.LOCK)
|
||||
end
|
||||
if not noDirty then
|
||||
@ -254,26 +266,37 @@ end
|
||||
|
||||
|
||||
function BattleGridEntity:canChangeInfo()
|
||||
if self:canLink() and not self:getSkillId() then
|
||||
if self:canLink() and not self:getSkillId() and not self:getIsUniversal() then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function BattleGridEntity:isEmptyIdle()
|
||||
if self:isEmptyType() and not self:getSkillId() and not self:getIsIdle() then
|
||||
if self:isEmptyType() and not self:getSkillId() and not self:getIsIdle() and not self:getIsUniversal() then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function BattleGridEntity:isNotObstacleIdle()
|
||||
if not self:isObstacleType() and not self:getSkillId() and not self:getIsIdle() then
|
||||
if not self:isObstacleType() and not self:getSkillId() and not self:getIsIdle() and not self:getIsUniversal() then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function BattleGridEntity:getIsUniversal()
|
||||
return self.isUniversal or false
|
||||
end
|
||||
|
||||
function BattleGridEntity:setUniversal(isUniversal, noDirty, side)
|
||||
self.isUniversal = isUniversal
|
||||
if not noDirty then
|
||||
self:setDirty()
|
||||
end
|
||||
end
|
||||
|
||||
function BattleGridEntity:isCanFallStatus()
|
||||
if not self:isCantFallType() and not self:getIsIdle() then
|
||||
return true
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
local BattleConst = require "app/module/battle/battle_const"
|
||||
local BattleHelper = require "app/module/battle/helper/battle_helper"
|
||||
local BattleBuffEntity = class("BattleBuffEntity", BaseData)
|
||||
|
||||
local BUFF_TYPE_DIRECT_HURT = BattleConst.BUFF_TYPE.DIRECT_HURT
|
||||
@ -26,6 +27,15 @@ function BattleBuffEntity:init(effectParams, owner, hostSkill)
|
||||
self.needSave = self.hostSkill ~= nil
|
||||
end
|
||||
|
||||
function BattleBuffEntity:isActive()
|
||||
if self.ratio < BattleConst.DEFAULT_FACTOR then
|
||||
if BattleHelper:random(1, BattleConst.DEFAULT_FACTOR) > self.ratio then -- 没有通过命中概率
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function BattleBuffEntity:setOwner(owner)
|
||||
self.owner = owner
|
||||
end
|
||||
|
||||
@ -351,6 +351,10 @@ function BattleSkillEntity:getPassiveTriggerId()
|
||||
return self.skillInfo.trigger
|
||||
end
|
||||
|
||||
function BattleSkillEntity:getTriggerLimit()
|
||||
return self.skillInfo.trigger_limit
|
||||
end
|
||||
|
||||
function BattleSkillEntity:getFxBg()
|
||||
if self.skillShow then
|
||||
if not self:getIsAtkSideSkill() and self:getUsePvpEffect() then
|
||||
|
||||
@ -623,6 +623,29 @@ function HeroEntity:getRogueSkillList()
|
||||
return self.rogueSkillList
|
||||
end
|
||||
|
||||
function HeroEntity:getRogueSkillListBattle()
|
||||
if not self.rogueSkillList then
|
||||
self.rogueSkillList = {}
|
||||
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.star >= ids[i][1] then
|
||||
table.insert(self.rogueSkillList, ids[i][2])
|
||||
break
|
||||
end
|
||||
end
|
||||
else
|
||||
break
|
||||
end
|
||||
count = count + 1
|
||||
end
|
||||
end
|
||||
|
||||
return self.rogueSkillList
|
||||
end
|
||||
|
||||
function HeroEntity:getRogueSkillListByIdx(idx)
|
||||
local ids = self.config["rouge_skill_" .. idx]
|
||||
local lv = 0
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user