--被攻击触发函数
---@param actor string 被攻击的玩家对象
---@param Target string 攻击者对象
---@param Hiter string 伤害来源对象
---@param MagicId number 技能ID
function struck(actor, Target, Hiter, MagicId)
-- 检查是否有免疫buff(30020),有则直接返回不处理任何触发效果
if hasbuff(actor, 30020) then return end
-- 判断攻击者是否为怪物(getbaseinfo返回false表示是怪物)
if getbaseinfo(Target, -1) == false then
-- 获取怪物名称
local monName = getbaseinfo(Target, ConstCfg.gbase.name)
-- 检查是否是免疫额外伤害的怪物
local BuZaoChengEWaiShangHai = cfg_BuZaoChengEWaiShangHai[monName]
if BuZaoChengEWaiShangHai then
return -- 如果是免疫额外伤害的怪物,直接返回
end
-- 触发被怪物攻击事件
GameEvent.push(EventCfg.onStruckMonster, actor, Target, Hiter, MagicId)
else
-- 触发被玩家攻击事件
GameEvent.push(EventCfg.onStruckPlayer, actor, Target, Hiter, MagicId)
end
-- 触发通用被攻击事件
GameEvent.push(EventCfg.onStruck, actor, Target, Hiter, MagicId)
end