--攻击触发怪物名映射函数
local attackMonFunc = {
["火麒麟"] = function(actor)
if not checktitle(actor, "五行灵体") then
return false
end
end,
["牛马发财树"] = function(actor)
changemoney(actor, 2, "+", 100, "100", true)
return false
end
}
local cfg_BuBeiQieGeMon = include("QuestDiary/cfgcsv/cfg_BuBeiQieGeMon.lua") --不吃切割的怪物
local cfg_GuaiWuFanShang = include("QuestDiary/cfgcsv/cfg_GuaiWuFanShang.lua") --反伤的怪物
--普通攻击触发
---* actor:玩家对象
---* Target:受击对象
---* Hiter:攻击对象
---* MagicId:技能ID
function attack(actor, Target, Hiter, MagicId)
if actor == Target then return end
-- FAddBuffKF(actor, 10001, 3) --跨服战斗状态
addbuff(actor, 10001, 3) --本服战斗状态
if MagicId == 2013 then return end
if hasbuff(actor, 30020) then return end --如果有这个buff 打断所有触发
--攻击怪物
if getbaseinfo(Target, -1) == false then
-- 获取目标怪物名称和玩家名称
local monName = getbaseinfo(Target, ConstCfg.gbase.name)
local myName = getbaseinfo(actor, ConstCfg.gbase.name)
-- 如果目标是宠物/召唤物,直接返回不处理
if ismob(Target) then return end
-- 如果目标名字包含玩家名字(分身),不允许攻击
if monName:find(myName) then
return
end
-- 检查是否有特殊怪物处理函数
local attackFunc = attackMonFunc[monName]
if attackFunc then
return attackFunc(actor) -- 执行特殊怪物的处理逻辑
end
-- 检查是否是免疫额外伤害的怪物
local BuZaoChengEWaiShangHai = cfg_BuZaoChengEWaiShangHai[monName]
if BuZaoChengEWaiShangHai then
return -- 如果是免疫额外伤害的怪物,直接返回不处理
end
-- 切割伤害处理
local qieGe = { damage = 0 }
qieGe.damage = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 200) -- 获取玩家的切割伤害值
if MagicId ~= 25 and MagicId ~= 114 then
GameEvent.push(EventCfg.onAttackMonster, actor, Target, Hiter, MagicId, qieGe, monName) -- 触发攻击事件
end
if not cfg_BuBeiQieGeMon[monName] then
humanhp(Target, "-", qieGe.damage, 106, 0, actor) -- 对不免疫切割的怪物造成切割伤害
end
--攻击人
--反伤怪
local fsMon = cfg_GuaiWuFanShang[monName]
if fsMon then
local FanShangDiKang = getbaseinfo(actor, ConstCfg.gbase.custom_attr, 231) -- 获取玩家反伤抗性
local fanShang = fsMon.value - FanShangDiKang -- 计算实际反伤值
local fanShangResult = fanShang <= 0 and 0 or fanShang -- 如果反伤小于等于0则为0,否则为计算值
local damageValue = tonumber(getconst(actor, "<$DAMAGEVALUE>")) or 0 -- 获取玩家造成的伤害
local damage = math.floor(damageValue * fanShangResult / 100) -- 计算反伤伤害
humanhp(actor, "-", damage, 111, 0, Target) -- 对玩家造成反伤
end
else
GameEvent.push(EventCfg.onAttackPlayer, actor, Target, Hiter, MagicId)
end
GameEvent.push(EventCfg.onAttack, actor, Target, Hiter, MagicId)
end