这个帖子我们来看一下这个技能该如何实现。
招式名称:电弧星
描述:向对手投掷会在下一回合爆炸的手里剑,爆炸会使对手畏缩。
具体来讲是80命中造成40伤害,成功命中的话下一回合会追加造成80伤害并使对手畏缩。
参考:https://bbs.pokefans.cn/threads/__.234/
关于这个技能,总得来说的话,和冰钩类似,难点就在于技能的效果,而不在于技能本身,所以我们也就不新创建技能了。
如果我的理解没有错误的话,这个技能是一个固定40伤害的技能,接着在这个基础之上,增加额外的效果。
所以我们可以直接修改一下龙之怒,让龙之怒获得这个效果,接着你自己再去举一反三。
那我们就先找到龙之怒的代码——
![1721486521829.png 1721486521829.png](https://bbs.pokefans.cn/data/attachments/2/2487-626bc6918d7fc8da78a33a16dc7a5af9.jpg)
这个没有什么过多好说的。
接着,搜索pbEffectsAfterMove,添加代码如下——
![1721487127064.png 1721487127064.png](https://bbs.pokefans.cn/data/attachments/2/2490-5c4183e43a73326e151bec7c072fd9fa.jpg)
到这里,我想你也肯定发现了,这里和冰钩不能说一模一样,只能说毫无区别。
也就是说,我们需要一个变量来记录精灵被“扎了手里剑”。
所以,增加一个新的基于battler的变量——
初始化——
![1721487082061.png 1721487082061.png](https://bbs.pokefans.cn/data/attachments/2/2489-4ac0fa3c1db5c5aab09da2ffd5e300cf.jpg)
接着,就是应用,搜索pbTryUseMove方法——
![1721487383048.png 1721487383048.png](https://bbs.pokefans.cn/data/attachments/2/2491-2699eb97e0d71e4b08772b57902162b1.jpg)
找到这个地方——
![1721489680303.png 1721489680303.png](https://bbs.pokefans.cn/data/attachments/2/2496-6e916653bb64690cc3fcfeb194bb8cbb.jpg)
修改代码如下——
![1721489222277.png 1721489222277.png](https://bbs.pokefans.cn/data/attachments/2/2494-b52c8e0e661aa208c00d2b907101e211.jpg)
这样就好了。
视频预览——
浏览附件2024-07-20 23-28-18.mp4
感谢阅读。
招式名称:电弧星
描述:向对手投掷会在下一回合爆炸的手里剑,爆炸会使对手畏缩。
具体来讲是80命中造成40伤害,成功命中的话下一回合会追加造成80伤害并使对手畏缩。
参考:https://bbs.pokefans.cn/threads/__.234/
关于这个技能,总得来说的话,和冰钩类似,难点就在于技能的效果,而不在于技能本身,所以我们也就不新创建技能了。
如果我的理解没有错误的话,这个技能是一个固定40伤害的技能,接着在这个基础之上,增加额外的效果。
所以我们可以直接修改一下龙之怒,让龙之怒获得这个效果,接着你自己再去举一反三。
那我们就先找到龙之怒的代码——
![1721486521829.png 1721486521829.png](https://bbs.pokefans.cn/data/attachments/2/2487-626bc6918d7fc8da78a33a16dc7a5af9.jpg)
这个没有什么过多好说的。
接着,搜索pbEffectsAfterMove,添加代码如下——
![1721487127064.png 1721487127064.png](https://bbs.pokefans.cn/data/attachments/2/2490-5c4183e43a73326e151bec7c072fd9fa.jpg)
Ruby:
if [:DRAGONRAGE].include?(move.id)
targets.each do |b|
next if b.damageState.unaffected || b.damageState.substitute
@battle.pbDisplay(_INTL("{1}被手里剑深深扎入了!", b.pbThis))
b.delayFlinch = true
end
end
也就是说,我们需要一个变量来记录精灵被“扎了手里剑”。
所以,增加一个新的基于battler的变量——
![1721487017261.png 1721487017261.png](https://bbs.pokefans.cn/data/attachments/2/2488-bbec739b86dd7bb51d46326edbd5352b.jpg)
Ruby:
attr_accessor :delayFlinch
![1721487082061.png 1721487082061.png](https://bbs.pokefans.cn/data/attachments/2/2489-4ac0fa3c1db5c5aab09da2ffd5e300cf.jpg)
Ruby:
@delayFlinch = false
接着,就是应用,搜索pbTryUseMove方法——
![1721487383048.png 1721487383048.png](https://bbs.pokefans.cn/data/attachments/2/2491-2699eb97e0d71e4b08772b57902162b1.jpg)
找到这个地方——
![1721489680303.png 1721489680303.png](https://bbs.pokefans.cn/data/attachments/2/2496-6e916653bb64690cc3fcfeb194bb8cbb.jpg)
修改代码如下——
![1721489222277.png 1721489222277.png](https://bbs.pokefans.cn/data/attachments/2/2494-b52c8e0e661aa208c00d2b907101e211.jpg)
Ruby:
# Flinching
if @effects[PBEffects::Flinch] || @delayFlinch
if @delayFlinch
@battle.pbDisplay(_INTL("{1}身上的手里剑爆炸了!", pbThis))
@delayFlinch = false
@battle.scene.pbDamageAnimation(self)
pbReduceHP(80, false)
if fainted?
pbFaint
return false
end
end
@battle.pbDisplay(_INTL("{1} flinched and couldn't move!", pbThis))
PBDebug.log("[Move failed] #{pbThis} flinched")
if abilityActive?
Battle::AbilityEffects.triggerOnFlinch(self.ability, self, @battle)
end
@lastMoveFailed = true
return false
end
这样就好了。
视频预览——
浏览附件2024-07-20 23-28-18.mp4
感谢阅读。
最后编辑: