| 赞 | 0  | 
 
| VIP | 8 | 
 
| 好人卡 | 0 | 
 
| 积分 | 1 | 
 
| 经验 | 5026 | 
 
| 最后登录 | 2022-9-17 | 
 
| 在线时间 | 232 小时 | 
 
 
 
 
 
Lv1.梦旅人 
	- 梦石
 - 0 
 
        - 星屑
 - 89 
 
        - 在线时间
 - 232 小时
 
        - 注册时间
 - 2010-6-21
 
        - 帖子
 - 25
 
 
 
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
 本帖最后由 hcm 于 2012-8-30 08:11 编辑  
- #--------------------------------------------------------------------------
 
 - # □ RPG::Skill
 
 - #--------------------------------------------------------------------------
 
 - module RPG
 
 -  class Skill
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 特技类型 (0 : 攻击, 1 : 回复, 2 : 支援, 3 : 被动)
 
 -    #--------------------------------------------------------------------------
 
 -    def type
 
 -      if @occasion == 3
 
 -        return 3
 
 -      elsif @power == 0 and @atk_f == 0
 
 -        return 2
 
 -      elsif @power < 0
 
 -        return 1
 
 -      else
 
 -        return 0
 
 -      end
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 被动技判定
 
 -    #--------------------------------------------------------------------------
 
 -    def innate?
 
 -      return (type == 3)
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 获得被动特技类型
 
 -    #     skill : 特技
 
 -    #--------------------------------------------------------------------------
 
 -    def innate_type
 
 -      # 不是被动特技的情况下
 
 -      if not innate?
 
 -        return -1
 
 -      end
 
 -      case @scope
 
 -      when 0
 
 -        # 属性防御类特技
 
 -        if @element_set != []
 
 -          return 1
 
 -        # 状态防御类特技
 
 -        elsif @minus_state_set != [] or @plus_state_set != []
 
 -          return 2
 
 -        # 数值加成类特技
 
 -        else
 
 -          return 0
 
 -        end
 
 -      when 1
 
 -        return 3
 
 -      end
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 判断增加或减少
 
 -    #     index : 判断项目
 
 -    #--------------------------------------------------------------------------
 
 -    def sign(index)
 
 -      unless innate?
 
 -        return 0
 
 -      end
 
 -      if index >= 0
 
 -        return (@sp_cost & (2 ** index) == 2 ** index) ? -1 : 1
 
 -      else
 
 -        case innate_type
 
 -        when 0
 
 -          return 0
 
 -        when 1
 
 -          return @minus_state_set.include?(-index) ? -0.5 : 1
 
 -        when 2
 
 -          return (@sp_cost & 1024 == 1024) ? true : false
 
 -        end
 
 -      end
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 最大 HP 上升量
 
 -    #--------------------------------------------------------------------------
 
 -    def maxhp_plus
 
 -      return (innate? and innate_type <= 2) ? @hit * sign(6) : 0
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 最大 SP 上升量
 
 -    #--------------------------------------------------------------------------
 
 -    def maxsp_plus
 
 -      return (innate? and innate_type <= 2) ? @variance * sign(9) : 0
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 力量上升量
 
 -    #--------------------------------------------------------------------------
 
 -    def str_plus
 
 -      return (innate? and innate_type <= 2) ? @str_f * sign(2) : 0
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 灵巧上升量
 
 -    #--------------------------------------------------------------------------
 
 -    def dex_plus
 
 -      return (innate? and innate_type <= 2) ? @dex_f * sign(3): 0
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 速度上升量
 
 -    #--------------------------------------------------------------------------
 
 -    def agi_plus
 
 -      return (innate? and innate_type <= 2) ? @agi_f * sign(4) : 0
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 魔力上升量
 
 -    #--------------------------------------------------------------------------
 
 -    def int_plus
 
 -      return (innate? and innate_type <= 2) ? @int_f * sign(5) : 0
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 攻击力上升量
 
 -    #--------------------------------------------------------------------------
 
 -    def atk_plus
 
 -      return (innate? and innate_type <= 2) ? @atk_f * sign(0) : 0
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 防御力上升量
 
 -    #--------------------------------------------------------------------------
 
 -    def pdef_plus
 
 -      return (innate? and innate_type <= 2) ? @pdef_f * sign(7) : 0
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 魔防力上升量
 
 -    #--------------------------------------------------------------------------
 
 -    def mdef_plus
 
 -      return (innate? and innate_type <= 2) ? @mdef_f * sign(8) : 0
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 回避修正上升量
 
 -    #--------------------------------------------------------------------------
 
 -    def eva_plus
 
 -      return (innate? and innate_type <= 2) ? @eva_f * sign(1) : 0
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 属性防御上升量
 
 -    #     element_id : 属性ID
 
 -    #--------------------------------------------------------------------------
 
 -    def element_plus(element_id)
 
 -      unless innate? and innate_type == 1
 
 -        return 0
 
 -      else
 
 -        if @element_set.include?(element_id)
 
 -          return Integer(@power * sign(-element_id))
 
 -        else
 
 -          return 0
 
 -        end
 
 -      end
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 状态防御上升量
 
 -    #     state_id : 状态ID
 
 -    #--------------------------------------------------------------------------
 
 -    def state_plus(state_id)
 
 -      unless innate? and innate_type == 2 and not sign(-1)
 
 -        return 0
 
 -      else
 
 -        if @plus_state_set.include?(state_id)
 
 -          return @power
 
 -        elsif @minus_state_set.include?(state_id)
 
 -          return -@power
 
 -        else
 
 -          return 0
 
 -        end
 
 -      end
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 状态防御集合
 
 -    #--------------------------------------------------------------------------
 
 -    def guard_state_set
 
 -      return (innate? and innate_type == 2 and sign(-1)) ? @minus_state_set : []
 
 -    end
 
 -    #--------------------------------------------------------------------------
 
 -    # ● 自动状态集合
 
 -    #--------------------------------------------------------------------------
 
 -    def auto_states
 
 -      return (innate? and innate_type == 2 and sign(-1)) ? @plus_state_set : []
 
 -    end
 
 -  end
 
 - end
 
 - #==============================================================================
 
 - # ■ Game_Actor (分割定义 2)
 
 - #------------------------------------------------------------------------------
 
 - #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
 
 - # 的内部使用、Game_Party 类请参考 ($game_party) 。
 
 - #==============================================================================
 
  
- class Game_Actor
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 定义实例变量
 
 -  #--------------------------------------------------------------------------
 
 -  attr_reader   :innate_skills            # 被动特技
 
 -  alias sailcat_setup setup
 
 -  alias sailcat_learn_skill learn_skill
 
 -  alias sailcat_forget_skill forget_skill
 
 -  alias sailcat_base_maxhp base_maxhp
 
 -  alias sailcat_base_maxsp base_maxsp
 
 -  alias sailcat_base_str base_str
 
 -  alias sailcat_base_dex base_dex
 
 -  alias sailcat_base_agi base_agi
 
 -  alias sailcat_base_int base_int
 
 -  alias sailcat_base_atk base_atk
 
 -  alias sailcat_base_pdef base_pdef
 
 -  alias sailcat_base_mdef base_mdef
 
 -  alias sailcat_base_eva base_eva
 
 -  alias sailcat_element_rate element_rate
 
 -  alias sailcat_state_guard? state_guard?
 
 -  alias sailcat_hit hit
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 设置
 
 -  #     actor_id : 角色 ID
 
 -  #--------------------------------------------------------------------------
 
 -  def setup(actor_id)
 
 -    @innate_skills = []
 
 -    sailcat_setup(actor_id)
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 领悟特技
 
 -  #     skill_id : 特技 ID
 
 -  #--------------------------------------------------------------------------
 
 -  def learn_skill(skill_id)
 
 -    sailcat_learn_skill(skill_id)
 
 -    unless @innate_skills.include?(skill_id)
 
 -      @innate_skills.push(skill_id)
 
 -      @innate_skills.sort!
 
 -      update_skill_state(nil, $data_skills[skill_id])
 
 -    end
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 遗忘特技
 
 -  #     skill_id : 特技 ID
 
 -  #--------------------------------------------------------------------------
 
 -  def forget_skill(skill_id)
 
 -    sailcat_forget_skill(skill_id)
 
 -    @innate_skills.delete(skill_id)
 
 -    update_skill_state($data_skills[skill_id], nil)
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 更新被动特技的自动状态
 
 -  #     old_skill : 去除的特技
 
 -  #     new_skill : 设定的特技
 
 -  #--------------------------------------------------------------------------
 
 -  def update_skill_state(old_skill, new_skill)
 
 -    if old_skill != nil and old_skill.auto_states != []
 
 -      for state in old_skill.auto_states
 
 -        remove_state(state, true)
 
 -      end
 
 -    end
 
 -    if new_skill != nil and new_skill.auto_states != []
 
 -      for state in new_skill.auto_states
 
 -        add_state(state, true)
 
 -      end
 
 -    end
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取基本 MaxHP
 
 -  #--------------------------------------------------------------------------
 
 -  def base_maxhp
 
 -    m = n = sailcat_base_maxhp
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n += m * (skill != nil ? skill.maxhp_plus : 0) / 100
 
 -    end
 
 -    return n
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取基本 MaxSP
 
 -  #--------------------------------------------------------------------------
 
 -  def base_maxsp
 
 -    m = n = sailcat_base_maxsp
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n += m * (skill != nil ? skill.maxsp_plus : 0) / 100
 
 -    end
 
 -    return n
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取基本力量
 
 -  #--------------------------------------------------------------------------
 
 -  def base_str
 
 -    m = n = sailcat_base_str
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n += skill != nil ? skill.str_plus : 0
 
 -    end
 
 -    return [n, 255].min
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取基本灵巧
 
 -  #--------------------------------------------------------------------------
 
 -  def base_dex
 
 -    m = n = sailcat_base_dex
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n += skill != nil ? skill.dex_plus : 0
 
 -    end
 
 -    return [n, 255].min
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取基本速度
 
 -  #--------------------------------------------------------------------------
 
 -  def base_agi
 
 -    m = n = sailcat_base_agi
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n += skill != nil ? skill.agi_plus : 0
 
 -    end
 
 -    return [n, 255].min
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取基本魔力
 
 -  #--------------------------------------------------------------------------
 
 -  def base_int
 
 -    m = n = sailcat_base_int
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n += skill != nil ? skill.int_plus : 0
 
 -    end
 
 -    return [n, 255].min
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取基本攻击力
 
 -  #--------------------------------------------------------------------------
 
 -  def base_atk
 
 -    m = n = sailcat_base_atk
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n += skill != nil ? skill.atk_plus : 0
 
 -    end
 
 -    return [n, 255].min
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取基本物理防御
 
 -  #--------------------------------------------------------------------------
 
 -  def base_pdef
 
 -    m = n = sailcat_base_pdef
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n += skill != nil ? skill.pdef_plus : 0
 
 -    end
 
 -    return [n, 255].min
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取基本魔法防御
 
 -  #--------------------------------------------------------------------------
 
 -  def base_mdef
 
 -    m = n = sailcat_base_mdef
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n += skill != nil ? skill.mdef_plus : 0
 
 -    end
 
 -    return [n, 255].min
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取基本回避修正
 
 -  #--------------------------------------------------------------------------
 
 -  def base_eva
 
 -    n = sailcat_base_eva
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n += skill != nil ? skill.eva_plus : 0
 
 -    end
 
 -    return [n, 100].min
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取命中率
 
 -  #--------------------------------------------------------------------------
 
 -  def hit
 
 -    n = sailcat_hit
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n = (skill != nil and skill.sign(12) == -1) ? 100 : n
 
 -    end
 
 -    return n
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 判定防御状态
 
 -  #     state_id : 状态 ID
 
 -  #--------------------------------------------------------------------------
 
 -  def state_guard?(state_id)
 
 -    n = sailcat_state_guard?(state_id)
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      n |= skill.guard_state_set.include?(state_id) if skill != nil
 
 -    end
 
 -    return n
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 取得属性修正值
 
 -  #     element_id : 属性 ID
 
 -  #--------------------------------------------------------------------------
 
 -  def element_rate(element_id)
 
 -    result = sailcat_element_rate(element_id)
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      if skill != nil
 
 -        result -= skill.element_plus(element_id)
 
 -        result = [[result, 300].min, -200].max
 
 -      end
 
 -    end
 
 -    return result
 
 -  end
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 取得状态修正值
 
 -  #     state_id : 状态 ID
 
 -  #--------------------------------------------------------------------------
 
 -  def state_rate(state_id)
 
 -    table = [0,100,90,75,40,5,0]
 
 -    result = table[self.state_ranks[state_id]]
 
 -    for skill_id in @innate_skills
 
 -      skill = $data_skills[skill_id]
 
 -      if skill != nil
 
 -        result -= skill.state_plus(state_id)
 
 -        result = [[result, 100].min, 0].max
 
 -      end
 
 -    end
 
 -    return result
 
 -  end
 
 - end
 
 - class Game_Battler
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 状态变化 (+) 的适用
 
 -  #     plus_state_set  : 状态变化 (+)
 
 -  #--------------------------------------------------------------------------
 
 -   def states_plus(battler, plus_state_set)
 
 -     # 有効フラグをクリア
 
 -     effective = false
 
 -     # ループ (付加するステート)
 
 -     for i in plus_state_set
 
 -       # このステートが防御されていない場合
 
 -       unless self.state_guard?(i)
 
 -         # このステートがフルでなければ有効フラグをセット
 
 -         effective |= self.state_full?(i) == false
 
 -         # ステートが [抵抗しない] の場合
 
 -         if $data_states[i].nonresistance
 
 -           # ステート変化フラグをセット
 
 -           @state_changed = true
 
 -           # ステートを付加
 
 -           self.state_p[battler].push(i)
 
 -         # このステートがフルではない場合
 
 -         elsif self.state_full?(i) == false
 
 -           # ステート有効度を確率に変換し、乱数と比較
 
 -           if rand(100) < [0,100,90,75,40,5,0][self.state_ranks[i]]
 
 -             # ステート変化フラグをセット
 
 -             @state_changed = true
 
 -             # ステートを付加
 
 -             self.state_p[battler].push(i)
 
 -           end
 
 -         end
 
 -       end
 
 -     end
 
 -     # メソッド終了
 
 -     return effective
 
 -   end
 
 - end
 
 - class Game_Enemy
 
 -  #--------------------------------------------------------------------------
 
 -  # ● 获取状态修正值
 
 -  #     state_id : 状态 ID
 
 -  #--------------------------------------------------------------------------
 
 -  def state_rate(state_id)
 
 -    return [0,100,90,75,40,5,0][self.state_ranks[state_id]]
 
 -  end
 
 - end
 
  复制代码 能力上升的很容易,但是属性防御,状态防御和自动状态如何设置? |   
 
 
 
 |