buff
This commit is contained in:
parent
f0110c46e4
commit
09a8b2ea50
@ -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},
|
||||
}
|
||||
|
||||
---- 格子类型
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user