Project1

标题: 关于吸血技能的脚本 [打印本页]

作者: 造小梦    时间: 2019-3-21 23:23
标题: 关于吸血技能的脚本
我有一个吸血技能的脚本,但这个脚本只能指定一个技能,我能不能让它可以使多个技能带有吸血效果?
RUBY 代码复制
  1. module CLD99
  2.   module Dracula
  3.  
  4.     DRAIN_SKILL_ID = 74
  5.     # 领悟了此ID技能后,所有攻击带吸血
  6.  
  7.     DRAIN_RATE = 0.1
  8.     # 因上面的情况允许吸血时的比例
  9.  
  10.   end
  11. end
  12.  
  13. class Game_Battler
  14.   include CLD99::Dracula  
  15.   #--------------------------------------------------------------------------
  16.   # ● [追加]是否所有攻击带吸血
  17.   #--------------------------------------------------------------------------
  18.   def dracula?
  19.     puts @skills
  20.     @skills.include?(CLD99::Dracula::DRAIN_SKILL_ID)
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● [别名修改]计算伤害
  24.   #--------------------------------------------------------------------------
  25.   alias :make_damage_value_for_dracula :make_damage_value
  26.   def make_damage_value(user, item)
  27.     make_damage_value_for_dracula(user, item)
  28.     @result.make_dracula(item) if user.actor? && user.dracula?
  29.   end
  30. end
  31.  
  32. class Game_ActionResult
  33.   attr_reader :dracula
  34.   #--------------------------------------------------------------------------
  35.   # ● [追加]计算吸血
  36.   #--------------------------------------------------------------------------
  37.   def make_dracula(item)
  38.     return if item.damage.drain? # 自带吸血的技能不参与
  39.     return if @hp_damage < 0     # 回复类技能不参与
  40.     @hp_drain = (@hp_damage * CLD99::Dracula::DRAIN_RATE).to_i
  41.     @dracula = true
  42.   end  
  43.   #--------------------------------------------------------------------------
  44.   # ● [别名修改]获取 HP 伤害的文字
  45.   #--------------------------------------------------------------------------
  46.   alias hp_damage_text_for_dracula hp_damage_text
  47.   def hp_damage_text
  48.     if @dracula
  49.       fmt = "%s造成了%s伤害,吸收了\C[24]%s%s"
  50.       return sprintf(fmt, @battler.name, @hp_damage, @hp_drain, Vocab.hp)
  51.     end
  52.     hp_damage_text_for_dracula
  53.   end
  54. end
  55.  
  56. class Window_BattleLog
  57.   #--------------------------------------------------------------------------
  58.   # ● 显示 HP 伤害
  59.   #--------------------------------------------------------------------------
  60.   alias :display_hp_damage_for_dracula :display_hp_damage
  61.   def display_hp_damage(target, item)
  62.     target.perform_damage_effect if target.result.dracula
  63.     display_hp_damage_for_dracula(target, item)
  64.   end
  65. end

作者: KB.Driver    时间: 2019-3-22 15:39
把20行改为
  1. CLD99::Dracula::DRAIN_SKILL_ID.any?{|id| @skills.include?(id)}
复制代码


然后把第四行改为数组,比如
  1. DRAIN_SKILL_ID = [74, 75, 76]
复制代码


注意,这样改完以后即使只有1个吸血技能,也不能去掉数组的方括号
作者: 造小梦    时间: 2019-3-22 23:04
KB.Driver 发表于 2019-3-22 15:39
把20行改为

那如果我想让每个技能吸血比率都不同呢?




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