Closed yangjiandendi closed 2 months ago
眩晕是behavior 而且鉴于眩晕太op大部分眩晕都是1帧或者2帧 感觉抗性意义不大
目前大部分眩晕是用debuff_stun_100ms实现的,如果要做抗性你就需要保证你mod内部所有的眩晕都是你自己实现的并且apply之前检测抗性并减少相应层数
眩晕是behavior 而且鉴于眩晕太op大部分眩晕都是1帧或者2帧 感觉抗性意义不大
目前大部分眩晕是用debuff_stun_100ms实现的,如果要做抗性你就需要保证你mod内部所有的眩晕都是你自己实现的并且apply之前检测抗性并减少相应层数
比如说:
behavior = { description = "埋伏", buff_bar_icon = DCEI.Texture("mai_fu"), actor_event_on_apply = "EventStunOn", actor_event_on_remove = "EventStunOff", interval_effect = { stun = true, }, interval = 4, },
这里的interval 我怎么能改成一个和GetBoundedAttribute有关的数值呢?
您好,interval
值目前不支持动态修改。
您好,
interval
值目前不支持动态修改。
感谢!那有没有什么方法可以施加伤害减免呢?
您好,如果是玉玉和狂躁那种全伤害类型的加成或者减免目前是不支持的,以后可以考虑加入 @GoodCrispyShark 。
目前,您可以通过比较tricky的方式实现子弹和大招的伤害加成/减免,具体方式是在 RunRegisterOnUltimateImpactCallback/RunRegisterOnUltimateHitCallback
和 RunRegisterOnMissileImpactCallback/RunRegisterOnMissileHitCallback
中修改 attack_data.damage
的数值。例如:
combat_unit.Attack:RegisterOnMissileImpactCallback(name, function(level, attack_data, caster, target)
attack_data.damage = attack_data.damage * 1.1 -- 子弹10%增伤
end)
@NinjaAqua445
}, function(combat_unit) local name = "xuanyundikang" combat_unit:RegisterOnStunnedCallback(name, function(level, target,caster ) local damage_reduction = combat_unit:GetBoundedAttribute("stun_resist") or 0 combat_unit.Attack:RegisterOnMissileLaunchCallback(name, function(level, attack_data, caster, target) attack_data.damage = attack_data.damage * (1-damage_reduction) end) end) combat_unit:RegisterOnStunnedEndCallback(name, function(level, target, caster) local damage_reduction = combat_unit:GetBoundedAttribute("stun_resist") or 0 combat_unit.Attack:RegisterOnMissileLaunchCallback(name, function(level, attack_data, caster, target) attack_data.damage = attack_data.damage / (1-damage_reduction) end) end) end)
我这里修改了之后,子弹的伤害缩放都是施加在我自己身上的,如何能施加在敌人身上呢?(当我自己眩晕的时候)
RegisterOnStunnedCallback
请问 xuanyundikang
这个能力是施加在玩家身上还是施加在敌人身上的?我没理解错的话这个xuanyundikang
是施加在敌人身上的,然后被晕眩了的玩家的子弹命中有xuanyundikang
的敌人时会有减伤,那么您应该使用 RegisterOnMissileHitCallback
,这个是在被子弹命中后触发的,您使用 RegisterOnMissileLaunchCallback
意味者是施加了xuanyundikang
的敌人发射子弹时才触发。
其次,在回调函数中注册新的回调函数不是正确的做法,应该直接进行注册。
function(combat_unit)
local name = "xuanyundikang"
-- 当combat_unit被子弹击中时
combat_unit:RegisterOnMissileHitCallback(name, function(level, attack_data, caster, target)
if PerkBehaviorSystem:IsStunned(caster) then -- 当caster(发射子弹的unit)被晕眩时
attack_data.damage = attack_data.damage * 0.9
end
end)
-- 如果还需要注册别的回调函数
combat_unit:RegisterOnMissileLaunchCallback(name, function(level, attack_data, caster, target)
-- do something
end)
combat_unit:RegisterOnStunnedCallback(name, function(level, caster, target)
-- do something
end)
end
@NinjaAqua445 这个是施加在自己的,然后敌人打我,敌人的子弹伤害会被减少
@NinjaAqua445 这个是施加在自己的,然后敌人打我,敌人的子弹伤害会被减少
那将判断是否晕眩的unit从caster换成target即可:
function(combat_unit)
local name = "xuanyundikang"
-- 当combat_unit被子弹击中时
combat_unit:RegisterOnMissileHitCallback(name, function(level, attack_data, caster, target)
if PerkBehaviorSystem:IsStunned(target) then -- 当target(被子弹命中的unit)被晕眩时
attack_data.damage = attack_data.damage * 0.9
end
end)
-- 如果还需要注册别的回调函数
combat_unit:RegisterOnMissileLaunchCallback(name, function(level, attack_data, caster, target)
-- do something
end)
combat_unit:RegisterOnStunnedCallback(name, function(level, caster, target)
-- do something
end)
end
@NinjaAqua445 感谢!
@NinjaAqua445 请问 PerkBehaviorSystem:IsStunned(target) 这个只能用在RegisterPerk 里吗。我在relic里用了这个之后,游戏一进mod就会卡主了
我完整的代码是这样的:
` Api:RegisterRelic("xuanyundikang", { id = "xuanyundikang", display_name = "眩晕抵抗", description = "受到眩晕时,获得数值等于眩晕抵抗的伤害减免", icon = DCEI.Texture("my_cat_hand"), rarity = "permanent", }, function(combat_unit) local name = "xuanyundikang" combat_unit:RegisterOnMissileLaunchCallback(name, function(level, attack_data, caster, target) local damage_reduction = combat_unit:GetBoundedAttribute("stun_resist") or 0 if PerkBehaviorSystem:IsStunned(target) then attack_data.damage = attack_data.damage * (1-damage_reduction) end end) end) ·
@NinjaAqua445 请问 PerkBehaviorSystem:IsStunned(target) 这个只能用在RegisterPerk 里吗。我在relic里用了这个之后,游戏一进mod就会卡主了
我完整的代码是这样的:
` Api:RegisterRelic("xuanyundikang", { id = "xuanyundikang", display_name = "眩晕抵抗", description = "受到眩晕时,获得数值等于眩晕抵抗的伤害减免", icon = DCEI.Texture("my_cat_hand"), rarity = "permanent", }, function(combat_unit) local name = "xuanyundikang" combat_unit:RegisterOnMissileLaunchCallback(name, function(level, attack_data, caster, target) local damage_reduction = combat_unit:GetBoundedAttribute("stun_resist") or 0 if PerkBehaviorSystem:IsStunned(target) then attack_data.damage = attack_data.damage * (1-damage_reduction) end end) end) ·
您好,RegisterOnMissileLaunchCallback
是AttackManager
的API不是CustomUnit
的API,您需要用combat_unit.Atttack:RegisterOnMissileLaunchCallback
进行调用
请问现在有没有方法能实现一些自定义抗性,类似于反伤抗性的属性,比如说眩晕抗性,减少眩晕时的眩晕时间