This commit is contained in:
puxuan 2025-10-20 14:05:34 +08:00
parent f0110c46e4
commit 09a8b2ea50
5 changed files with 57 additions and 2 deletions

View File

@ -383,7 +383,14 @@ local BUFF_NAME = {
BLUE_REFRESH_WEIGHT = "blue_refresh_weight",
PURPLE_REFRESH_WEIGHT = "purple_refresh_weight",
ATTR_MONSTER_DMG_ADD = "attr_monster_dmg_add",
ATTR_BOSS_DMG_ADD = "attr_boss_dmg_add",
HPP_RED_ADD = "hpp_red_add",
HPP_YELLOW_ADD = "hpp_yellow_add",
HPP_GREEN_ADD = "hpp_green_add",
HPP_BLUE_ADD = "hpp_blue_add",
HPP_PURPLE_ADD = "hpp_purple_add",
FOREVER_NORMAL_ATTACK_ADD = "forever_normal_attack_add",
FOREVER_UNCONTROLLED = "forever_uncontrolled",
ATTR_NORMAL_HURTP_ALL_ADD = "attr_normal_hurtp_all_add",
}
BattleConst.BUFF_NAME = BUFF_NAME
@ -516,6 +523,8 @@ local ATTR_NAME = {
INVINCIBLE_SHIELD = "invincible_shield",
REBIRTH = "rebirth",
IMMUNE_REDUCTION_BENEFIT = "immune_reduction_benefit", -- 免疫减益
FOREVER_UNCONTROLLED = "forever_uncontrolled", -- 永久免控
ATTR_NORMAL_HURTP_ALL_ADD = "attr_normal_hurtp_all",
}
BattleConst.ATTR_NAME = ATTR_NAME
@ -578,6 +587,9 @@ BattleConst.BUFF_NAME_TO_ATTR = {
[BUFF_NAME.FOREVER_DEC_DMG_PURPLE_ADD] = {ATTR_NAME.DEC_DMG_PURPLE, false},
[BUFF_NAME.FOREVER_DEC_DMG_ALL_ADD] = {ATTR_NAME.DEC_DMG_ALL, false},
[BUFF_NAME.FOREVER_THORNS] = {ATTR_NAME.THORNS, false},
[BUFF_NAME.FOREVER_NORMAL_ATTACK_ADD] = {ATTR_NAME.NORMAL_ATTACK_COUNT, false},
[BUFF_NAME.FOREVER_UNCONTROLLED] = {ATTR_NAME.FOREVER_UNCONTROLLED, false},
[BUFF_NAME.ATTR_NORMAL_HURTP_ALL_ADD] = {ATTR_NAME.FOREVER_UNCONTROLLED, true},
}
---- 格子类型

View File

@ -1343,6 +1343,12 @@ function BattleUnitComp:addMaxHp(percent)
end
function BattleUnitComp:addBuff(buffEffect, conditionResult)
if buffEffect.buff:getIsControlType() then
local ratio = self.unitEntity:getAttrValue(BattleConst.ATTR_NAME.FOREVER_UNCONTROLLED) or 0
if math.random(1, BattleConst.DEFAULT_FACTOR) <= ratio then
return
end
end
if buffEffect.buff:needShowName() and buffEffect.buff:getShowName(true) then
local direction = BattleConst.EFFECT_TYPE_MOVE_R
local x, y = self.team:getMainUnitLocalPosition(self)

View File

@ -69,6 +69,36 @@ BattleBuffHandle.addAttribute = {
target.unitEntity:addAttr(ATTR_NAME.ATK_PURPLE, num, true)
return num
end,
[BUFF_NAME.HPP_RED_ADD] = function(target, num, unitComp)
local unitCompMap = unitComp.team:getUnitComp()
local targetComp = unitCompMap[BattleConst.ELEMENT_TYPE.RED]
targetComp.unitEntity:addAttr(ATTR_NAME.HP, num, true)
return num
end,
[BUFF_NAME.HPP_YELLOW_ADD] = function(target, num, unitComp)
local unitCompMap = unitComp.team:getUnitComp()
local targetComp = unitCompMap[BattleConst.ELEMENT_TYPE.YELLOW]
targetComp.unitEntity:addAttr(ATTR_NAME.HP, num, true)
return num
end,
[BUFF_NAME.HPP_GREEN_ADD] = function(target, num, unitComp)
local unitCompMap = unitComp.team:getUnitComp()
local targetComp = unitCompMap[BattleConst.ELEMENT_TYPE.GREEN]
targetComp.unitEntity:addAttr(ATTR_NAME.HP, num, true)
return num
end,
[BUFF_NAME.HPP_BLUE_ADD] = function(target, num, unitComp)
local unitCompMap = unitComp.team:getUnitComp()
local targetComp = unitCompMap[BattleConst.ELEMENT_TYPE.BLUE]
targetComp.unitEntity:addAttr(ATTR_NAME.HP, num, true)
return num
end,
[BUFF_NAME.HPP_PURPLE_ADD] = function(target, num, unitComp)
local unitCompMap = unitComp.team:getUnitComp()
local targetComp = unitCompMap[BattleConst.ELEMENT_TYPE.PURPLE]
targetComp.unitEntity:addAttr(ATTR_NAME.HP, num, true)
return num
end,
[BUFF_NAME.NORMAL_ATTACK_DEC] = function(target, num)
target.unitEntity:addAttr(ATTR_NAME.NORMAL_ATTACK_COUNT, -num, false)
return -num
@ -134,7 +164,7 @@ local function _takeEffectAttr(unitComp, buff, target, buffEffect)
else
local func = BattleBuffHandle.addAttribute[buffName]
if func then
return func(target, buff:getEffectNum())
return func(target, buff:getEffectNum(), unitComp)
end
end
return nil

View File

@ -701,6 +701,7 @@ function BattleTeam:updateBuffState(buff, num)
end
end
--@region 特殊buff
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
@ -751,6 +752,7 @@ function BattleTeam:checkMainHeroExtAdd()
return true, effectNum
end
end
--@endregion
function BattleTeam:getBuffCountByName(buffName)
return self.sameBuffCount[buffName] or 0

View File

@ -4,6 +4,7 @@ local BattleBuffEntity = class("BattleBuffEntity", BaseData)
local BUFF_TYPE_DIRECT_HURT = BattleConst.BUFF_TYPE.DIRECT_HURT
local BUFF_TYPE_SHIELD = BattleConst.BUFF_TYPE.SHIELD
local BUFF_TYPE_CONTROL = BattleConst.BUFF_TYPE.CONTROL
function BattleBuffEntity:ctor()
end
@ -65,6 +66,10 @@ function BattleBuffEntity:getIsHurtType()
return self.buffType == BUFF_TYPE_DIRECT_HURT
end
function BattleBuffEntity:getIsControlType()
return self.buffType == BUFF_TYPE_CONTROL
end
function BattleBuffEntity:getEffectNum()
return self.effectNum
end