Project1

标题: 怎么设置吸血 [打印本页]

作者: 小姐姐一个    时间: 2019-10-19 12:08
标题: 怎么设置吸血
获得状态后攻击敌人可以恢复1/5的生命值,这个可以实现吗
作者: KB.Driver    时间: 2019-10-19 16:58
RUBY 代码复制
  1. module CLD99
  2.   module Dracula
  3.  
  4.     DRAIN_STATE_ID = 23
  5.     # 获得此ID状态后,所有攻击带吸血
  6.  
  7.     DRAIN_RATE = 0.1
  8.     # 因上面的情况允许吸血时的比例
  9.  
  10.   end
  11. end
  12.  
  13. class Game_Battler
  14.   #--------------------------------------------------------------------------
  15.   # ● [追加]是否所有攻击带吸血
  16.   #--------------------------------------------------------------------------
  17.   def dracula?
  18.     state?(CLD99::Dracula::DRAIN_STATE_ID)
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● [别名修改]计算伤害
  22.   #--------------------------------------------------------------------------
  23.   alias :make_damage_value_for_dracula :make_damage_value
  24.   def make_damage_value(user, item)
  25.     make_damage_value_for_dracula(user, item)
  26.     @result.make_dracula(item) if user.actor? && user.dracula?
  27.   end
  28. end
  29.  
  30. class Game_ActionResult
  31.   attr_reader :dracula
  32.   #--------------------------------------------------------------------------
  33.   # ● [追加]计算吸血
  34.   #--------------------------------------------------------------------------
  35.   def make_dracula(item)
  36.     return if item.damage.drain? # 自带吸血的技能不参与
  37.     return if @hp_damage < 0     # 回复类技能不参与
  38.     @hp_drain = (@hp_damage * CLD99::Dracula::DRAIN_RATE).to_i
  39.     @dracula = true
  40.   end  
  41.   #--------------------------------------------------------------------------
  42.   # ● [别名修改]获取 HP 伤害的文字
  43.   #--------------------------------------------------------------------------
  44.   alias hp_damage_text_for_dracula hp_damage_text
  45.   def hp_damage_text
  46.     if @dracula
  47.       fmt = "%s造成了%s伤害,吸收了%s%s"
  48.       return sprintf(fmt, @battler.name, @hp_damage, @hp_drain, Vocab.hp)
  49.     end
  50.     hp_damage_text_for_dracula
  51.   end
  52. end
  53.  
  54. class Window_BattleLog
  55.   #--------------------------------------------------------------------------
  56.   # ● 显示 HP 伤害
  57.   #--------------------------------------------------------------------------
  58.   alias :display_hp_damage_for_dracula :display_hp_damage
  59.   def display_hp_damage(target, item)
  60.     target.perform_damage_effect if target.result.dracula
  61.     display_hp_damage_for_dracula(target, item)
  62.   end
  63. end


[已经解决] 如何做一个使攻击能吸血的被动技能?
拿以前的被动技能版改的状态版,试试看看能不能用吧

作者: 小姐姐一个    时间: 2019-10-19 21:06
KB.Driver 发表于 2019-10-19 16:58
module CLD99
  module Dracula

谢谢咯

作者: 小姐姐一个    时间: 2019-10-19 21:28
KB.Driver 发表于 2019-10-19 16:58
module CLD99
  module Dracula

等等,,貌似不管用

作者: 小姐姐一个    时间: 2019-10-19 21:29
是不是。。。这个脚本放错位置了么。。我放在了插件脚本下面

作者: KB.Driver    时间: 2019-10-19 22:09
小姐姐一个 发表于 2019-10-19 21:29
是不是。。。这个脚本放错位置了么。。我放在了插件脚本下面

我用新建工程测试了,没有问题。

脚本放在
▼ 插件脚本

(请在此添加)
之间

不要忘记填写吸血状态的编号DRAIN_STATE_ID
改成你需要的数值
作者: 小姐姐一个    时间: 2019-10-19 22:50
KB.Driver 发表于 2019-10-19 22:09
我用新建工程测试了,没有问题。

脚本放在

可以实现多个状态吗

作者: 小姐姐一个    时间: 2019-10-19 23:02
KB.Driver 发表于 2019-10-19 16:58
module CLD99
  module Dracula

为什么我的伤害为50,但吸血只5,DRAIN_RATE改也没有用
作者: KB.Driver    时间: 2019-10-20 09:39
小姐姐一个 发表于 2019-10-19 23:02
为什么我的伤害为50,但吸血只5,DRAIN_RATE改也没有用

我自己测试没有任何问题

你实在搞不定再考虑用我测试的工程
Project1.zip (1.43 MB, 下载次数: 19, 售价: 5 星屑)
作者: 兰斯王    时间: 2024-10-22 16:03
KB.Driver 发表于 2019-10-20 09:39
我自己测试没有任何问题

你实在搞不定再考虑用我测试的工程

大佬的脚本很好用。
能否再追加一个功能。拥有状态也有可以设置一些技能不参与吸血而不是全部技能都能吸血




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1