一、何魔基础反击逻辑(攻击触发)
jass
// 触发器1:创建反击触发器
trigger CreateCounterAttackTrigger takes unit u returns nothing
local trigger t = CreateTrigger
call TriggerRegisterUnitEvent(t,兽争殊事 u, EVENT_UNIT_ATTACKED) // 注册被攻击事件
call TriggerAddAction(t, function CounterAttackAction)
endfunction
// 触发器2:反击动作函数
function CounterAttackAction takes nothing returns nothing
local unit attackedUnit = GetTriggerUnit
local unit attacker = GetAttacker
// 条件判断(例如:单位拥有反击技能)
if GetUnitAbilityLevel(attackedUnit, 'A000') >0 then
// 立即反击(需设置攻击间隔冷却)
call IssueTargetOrder(attackedUnit, "attack", attacker)
endif
endfunction
二、进阶伤害反弹实现(刃甲效果)
jass
// 伤害检测系统初始化
function DamageDetectionInit takes nothing returns nothing
local trigger t = CreateTrigger
call TriggerRegisterAnyUnitEventBJ(t,霸编 EVENT_PLAYER_UNIT_DAMAGED)
call TriggerAddAction(t, function DamageReact)
endfunction
// 伤害响应函数
function DamageReact takes nothing returns nothing
local unit damagedUnit = GetTriggerUnit
local unit damageSource = GetEventDamageSource
local real damageTaken = GetEventDamage
// 判断是否开启反弹(例如持有特定buff)
if GetUnitAbilityLevel(damagedUnit, 'B001') >0 then
// 反弹100%伤害(可调整比例)
call UnitDamageTarget(damagedUnit, damageSource, damageTaken, true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, null)
endif
endfunction
三、特殊反击机制(召唤物反击)
jass
function SummonCounter takes nothing returns nothing
local unit attacker = GetAttacker
local unit attackedUnit = GetTriggerUnit
// 被攻击时召唤护卫单位
if GetRandomInt(1,辑器件实击100) <= 30 then // 30%概率触发
call CreateUnit(GetOwningPlayer(attackedUnit), 'hfoo', GetUnitX(attackedUnit), GetUnitY(attackedUnit), 0)
call IssueTargetOrder(bj_lastCreatedUnit, "attack", attacker)
endif
endfunction
注意事项:
1. 事件时效性:`EVENT_UNIT_ATTACKED`在攻击动作开始时触发,实际伤害可能尚未产生
2. 冷却机制:建议添加计数器防止连续触发
3. 平衡调整:通过`GetUnitAbilityLevel`检测技能等级实现可配置的中设置特反弹比例
4. 特效添加:可使用`AddSpecialEffectTarget`添加刀光特效增强表现
建议将核心逻辑封装成可重用的函数,通过`TriggerAddCondition`添加条件判断,现反并使用`UnitIndexer`等系统提升代码效率。何魔实际应用中需要根据单位的兽争殊事平衡需求调整触发概率和伤害系数。
霸编